PYTHON学习计划

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

python之模块学习

模块简介

python是由一系列的模块组成的,

每个模块就是一个py为后缀的文件,同时模块也是一个命名空间,从而避免了变量名称

冲突的问题。模块我们就可以理解为lib库,如果需要使用某个模块中的函数或对象,则要

导入这个模块才可以使用,除了系统默认的模块(内置函数)不需要导入外。

导入直接使用如下语法: import 模块名称 (不要.py后缀) 这样导入成功后,就可以在另外一个模块中使用被导入模块的功能函数或对象。

[python] view plaincopyprint?

1. # -*- coding:utf-8 -*-

2. module_1.py

3. name = ithomer

[python] view plaincopyprint? 1.

2. python

3.3.3 (v3.3.3:c3896275c0f6, nov 18 2013, 21:19:30) [msc v.1600 64 bit

(amd64)] on win32

3. type help, copyright, credits or license for more information.

4. >>>

此时如果我们直接输入print(url),系统则会报错,url变量未定义:

[python] view plaincopyprint?

1. >>> print(url)

2. traceback (most recent call last):

3. file <stdin>, line 1, in <module>

4. nameerror: name url is not defined

5. >>>

所以我们需要先导入module_1的内容才算定义了url 变量,不过要注意的是导入的模块的变量并不是定义在顶层命名空间,而是在模块的命

名空间中,因此使用如下方式导入后的打印变量如下:

[python] view plaincopyprint? 1. >>> import module_1

2. >>> print(module_1.url)

3.

如果直接使用print(url),仍然还是会报url未定义的错误,原因就是上面说到的命名

空间的问题。如果想要直接在顶层命名空间中使用该变量,可以使用如下导入方式:

[python] view plaincopyprint? 1. >>> from module_1 import url 2. >>> print(url) 3.

这样就可以将module_1模块中的url变量导入到顶层命名空间了,直接使用变量也就不

会报错了。当然我们也可以为导入的变量重命名,如下把url重命名为myurl:

[python] view plaincopyprint? 1. >>> from module_1 import url as myurl 2. >>> print(myurl)

因为是使用了from…import语句,因此是将变量绑定在顶层命名空间,我们也就可以直

接使用变量名了。

对于每个模块的导入,python解释器只会导入一次,即使重复使用import和from…

import语句,也只有在pvm检测到该模块没有被导入时才执行导入动作。即使后来你修改了

模块的源代码,但没有重启pvm,python解释器仍然是使用之前导入的内容在处理。如果需

要重新载入修改后的源码,一是退出python的交互模式后再进入,二是直接使用reload语

句,如下:

[python] view plaincopyprint?

1. >>> from imp import reload

2. >>> reload(module_1)

3. <module module_1 from .\\module_1.py>

我们可以看到系统提示重新加载了module_1模块的源文件,我们修改内容后使用该方法

重新导入后再执行就可以看到修改后的内容。

模块导入和执行模块作为

python语言中的基本单元,可以用来编写公用库函数或对象以便重复使用。同时模块还

可以作为独立文件进行运行,之前也已经提到,只要是导入了模块文件,那么pvm就会依次

执行模块文件中的所有语句。本篇主要介绍模块使用的一些进阶,首先定义一个模块

module_2.py,内容如下:

[python] view plaincopyprint? 1. # -*- encoding:utf-8 -*-

2. module_2.py模块的内容

3.

4. print(__name__)

5.

6. def sum(a,b):

7. return a+b

8.

9. if __name__ == __main__:

10. import sys

11. print(sys.argv[0])

12. a = int(sys.argv[1])

13. b = int(sys.argv[2])

14. print(sum(a,b))

上面的这段代码基本上就包含了本篇文章要说的内容了:

__name__变量说明

__name__是一个全局变量,在模块内部是用来标识模块的名称的。上面的例子中有一个

打印__name__变量的语句,比如我们在python的交互模式下执行导入可以看到如下结果: 1.

2. >>>import module_2 module_2

可以看到,通过使用import的方式导入模块后,打印的__name__值就是我们刚才说的模

块的名称。另外如果是通过python解释器直接执行模块,则__name__会被设置为__main__

这个字符串值,如下:

[python] view plaincopyprint?

2. __main__

3. module_2.py

4. 5 我们通过windows命令行直接执行module_2

这个模块文件,可以看到的结果输入如上,打印的__name__值为__main__。通过这个特

性我们可以将一个模块文件既当做普通的lib库供其他模块使用,又可以当做一个顶层执行

文件进行执行,只是使用方式不一样而已。

1、当成lib库使用时,只需要在其他模块中使用import导入该模块即可(module_2)

2、当成执行模块时,通过python解释器直接运行该模块,然后在模块文件中最后写上

相关文档
最新文档