Python学习 Part4:模块

1. 模块是将定义保存在一个文件中的方法,然后在脚本中或解释器的交互实例中使用。模块中的定义可以被导入到其他模块或者main模块。

模块就是一个包含Python定义和语句的文件。文件名就是添加了.py扩展名的模块名。

在当前目录下建立一个包含以下内容的fibo.py文件:

ef fib(n):
a,b=0,1
while b<n:
print(b,end=' ')
a,b=b,a+b
print() def fib2(n):
result=[]
a,b=0,1
while b<n:
result.append(b)
a,b=b,a+b
return result

然后利用import fibo命令导入这个模块,便可直接引入fibo中定义的函数名

>>> import fibo
>>> fibo.fib(100)
1 1 2 3 5 8 13 21 34 55 89
>>> fibo.fib2(100)
[1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89]
>>> fibo.__name__
'fibo'

如果频繁使用一个函数,可以赋予一个本地变量:

>>> fib=fibo.fib
>>> fib(500)
1 1 2 3 5 8 13 21 34 55 89 144 233 377
>>>

2. 深入Python模块

除了包含函数定义以外,模块也可以包含可执行语句,这些语句一般用来初始化模块,他们仅在第一次被导入的地方执行一次。

每个模块都有自己私有的符号表,被模块内所有的函数定义作为全局符号表使用。

还有一种import语句的变体,可以从一个模块中将名字直接导入到当前模块的符号表中,但是这种方式不会把操作的模块名引入到当前符号表中

>>> from fibo import fib,fib2
>>> fib(400)
1 1 2 3 5 8 13 21 34 55 89 144 233 377
>>>

更进一步,还有一种导入模块中定义的所有名称的变体(这会导入那些除了以下划线开头的名称):

>>> from fibo import *
>>> fib(500)
1 1 2 3 5 8 13 21 34 55 89 144 233 377
>>>

注意:在一个解释器会话中每个模块仅被导入一次,所以,如果修改了模块,必须重启解释器-或者如果只是一个想要交互测试的模块,使用import.reload()方法。例如:

>>> import imp
>>> imp.reload(modulename)

2.1 模块的搜索路径
当一个名spam的模块被导入时,解释器首先会在当前目录搜索一个名为spam.py的文件,然后是在环境变量PYTHONPATH中定义的目录列表。如果没有定义PYTHONPATH,或者按照里面的路径没有找到文件,解释器会继续在Python默认安装路径中搜索。

实际上,模块都是在变量sys.path定义的目录列表中查找:

>>> import sys
>>> sys.path
['', 'C:\\Python33\\Lib\\idlelib', 'C:\\Windows\\system32\\python33.zip', 'C:\\Python33\\DLLs', 'C:\\Python33\\lib', 'C:\\Python33', 'C:\\Python33\\lib\\site-packages']

在每个Python解释器中,变量sys.ps1和sys.ps2分别定义了主提示符和次提示符使用的字符串(仅在Python命令行有效,在Python IDLE 中无效)

>>> import sys
>>> sys.ps1
'>>> '
>>> sys.ps2
'... '
>>> sys.ps1='>:'
>:print('Yuck!')
Yuck!
>:

Python学习 Part4:模块的更多相关文章

  1. Python学习--Selenium模块

    1. Python学习--Selenium模块介绍(1) 2.Python学习--Selenium模块学习(2) 其他: 1. Python学习--打码平台

  2. Python学习--Selenium模块学习(2)

    Selenium的基本操作 获取浏览器驱动寻找方式 1. 通过手动指定浏览器驱动路径2. 通过 `$PATH`环境变量找寻浏览器驱动 可参考Python学习--Selenium模块简单介绍(1) 控制 ...

  3. Python学习---重点模块的学习【all】

    time     [时间模块] import time # print(help(time)) # time模块的帮助 print(time.time()) # 时间戳 print(time.cloc ...

  4. Python学习之模块进程函数详解

    今天在看<Beginning Linux Programming>中的进程相关部分,讲到Linux几个进程相关的系统函数: system , exec , fork ,wait . Pyt ...

  5. python学习——常用模块

    在学习常用模块时我们应该知道模块和包是什么,关于模块和包会单独写一篇随笔,下面先来了解有关在python中的几个常用模块. 一.什么是模块 常见的场景:一个模块就是一个包含了python定义和声明的文 ...

  6. Python学习之模块基础

    模块就是程序 编写以下简单代码 print('hello python') 并将py文件保存在c盘的python(假设新建)文件下,通过pycharm的Terminal 或者windom命令窗口调出p ...

  7. python学习之模块导入,操作邮件,redis

    python基础学习06 模块导入 导入模块的顺序 1.先从当前目录下找 2.当前目录下找不到,再从环境变量中找,如果在同时在当前目录和环境变量中建立相同的py文件,优先使用当前目录下的 导入模块的实 ...

  8. Python学习——struct模块的pack、unpack示例

    he struct module includes functions for converting between strings of bytes and native Python data t ...

  9. python学习day15 模块(重点)

    模块(重点) python2,与py3的区别 py2:range() 在内存中立即把所有的值都创建,xrange() 不会再内存中立即创建,而是在循环时边环边创建. py3:range() 不会再内存 ...

随机推荐

  1. 【一天一道LeetCode】#44. Wildcard Matching

    一天一道LeetCode系列 (一)题目 Implement wildcard pattern matching with support for '?' and '*'. '?' Matches a ...

  2. linux测试noatime对文件访问时间的影响

    linux测试noatime对文件访问时间的影响 文件(如abc)有3个时间: # stat abc Access: 2015-04-16 19:30:13.665970572 +0800 Modif ...

  3. 【翻译】Siesta事件记录器入门

    原文:Getting started with the Siesta event recorder 作者:Mats Bryntse 随着事件记录器功能的发布越来越近,我们准备了一下入门指南,向大家展示 ...

  4. git remote

    在git里,服务器上的仓库在本地称之为remote. 直接clone一个仓库: $: git clone git@search.ued.taobao.net:projects/search.git 另 ...

  5. OAF开发概念和案例总结(项目总结)

    留看: 网上关于OAF学习的资料比较少,最近有些时间,整理了下自己在项目上的经验总结和同学们一下共享一下 和学友一起讨论一下OAF开发,还有两个比较复杂的系列正在整理中..... 一.OAF EO定义 ...

  6. 【Visual C++】游戏编程学习笔记之七:键盘输入消息

     本系列文章由@二货梦想家张程 所写,转载请注明出处. 作者:ZeeCoder  微博链接:http://weibo.com/zc463717263 我的邮箱:michealfloyd@126.c ...

  7. android:inputType常用取值

    <EditText android:layout_width="fill_parent" android:layout_height="wrap_content&q ...

  8. multiset基础学习,可以有重复类型的多重集合容器

    #include <set> #include <iostream> using namespace std; struct Student { char *name; int ...

  9. cocos2d-x 控制台输出日志

    在2dx中用CCLog输出日志,但是在vs的控制台中由于信息很多,很难发现.可以用下面方法,会重新启动一个黑色的控制台来输出日志 修改main.c文件,如下: #include "main. ...

  10. rails中link_to与button_to的一个功能差异

    页面中本来设计一个按钮,功能是当按下时跳转到index方法,然后实现一段功能.关键是其中需要传递一个参数show_all,其值为true. index方法中通过判断是否含有该参数来实现不同的逻辑,类似 ...