首页 > 代码库 > Python学习笔记-模块介绍(一)-模块概念和基本使用

Python学习笔记-模块介绍(一)-模块概念和基本使用

python是由一系列的模块组成的,每个模块就是一个py为后缀的文件,同时模块也是一个命名空间,从而避免了变量名称冲突的问题。模块我们就可以理解为lib库,如果需要使用某个模块中的函数或对象,则要导入这个模块才可以使用,除了系统默认的模块不需要导入外。导入直接使用如下语法:

import 模块名称(不要.py后缀)

      这样导入成功后,就可以在另外一个模块中使用被导入模块的功能函数或对象了。先举例如下,比如在D:\temp目录下建立python模块:module_1.py,内容如下:

# -*- coding:utf-8 -*-‘‘‘module_1.py模块的内容‘‘‘name = "铁木箱子"siteurl = "http://www.mzone.cc"

      上面第一行是指定编码格式,因为python默认是按照ascii编码来处理的,因此就无法处理非英文语言了,通过指定编码就可以实现国际化效果。第二行是注释信息,使用”’进行注释。然后,我们通过D:\temp目录进入到python的命令行模式,这样就可以将当前目录(d:\temp)作为工作目录了,从而也就可以顺利的找到了module_1这个模块了,如下:

D:\temp>pythonPython 2.7 (r27:82525, Jul  4 2010, 09:01:59) [MSC v.1500 32 bit (Intel)] on win32Type "help", "copyright", "credits" or "license" for more information.>>>

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

>>> print(siteurl);Traceback (most recent call last):File "<stdin>", line 1, in <module>NameError: name ‘siteurl‘ is not defined>>>

      所以我们需要先导入module_1的内容才算定义了siteurl变量,不过要注意的是导入的模块的变量并不是定义在顶层命名空间,而是在模块的命名空间中,因此使用如下方式导入后的打印变量如下:

>>>import module_1>>>print(module_1.siteurl)

      如果直接使用print(siteurl),仍然还是会报siteurl未定义的错误,原因就是上面说到的命名空间的问题。如果想要直接在顶层命名空间中使用该变量,可以使用如下导入方式:

>>>from module_1 import siteurl>>>print(siteurl)

      这样就可以将module_1模块中的siteurl变量导入到顶层命名空间了,直接使用变量也就不会报错了。当然我们也可以为导入的变量重命名,如下:

>>>from module_1 import siteurl as myurl>>>print(myurl)

      这样就可以将siteurl的值赋给myurl这个变量了,因为是使用了from…import语句,因此是将变量绑定在顶层命名空间,我们也就可以直接使用变量名了。

      需要注意的是无论是使用import还是使用from..import的方式导入模块,其实都是在告诉python解释器要加载指定的模块,并执行模块中的所有语句,因此如果模块中有类似print的语句时,我们在导入的过程中也会看到这些语句的输出。

      对于每个模块的导入,python解释器只会导入一次,即使重复使用import和from…import语句,也只有在PVM检测到该模块没有被导入时才执行导入动作。即使后来你修改了模块的源代码,但没有重启PVM,python解释器仍然是使用之前导入的内容在处理。如果需要重新载入修改后的源码,一是退出python的交互模式后再进入,二是直接使用reload语句,如下:

>>>reload(module_1)<module ‘module_1‘ from ‘module_1.py‘>

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


Python学习笔记-模块介绍(一)-模块概念和基本使用