Python之块学习.docVIP

  • 2
  • 0
  • 约1.21万字
  • 约 7页
  • 2016-10-09 发布于广东
  • 举报
Python之块学习

Python之模块模块简介 python是由一系列的模块组成的,每个模块就是一个py为后缀的文件,同时模块也是一个命名空间,从而避免了变量名称冲突的问题。模块我们就可以理解为lib库,如果需要使用某个模块中的函数或对象,则要导入这个模块才可以使用,除了系统默认的模块(内置函数)不需要导入外。 导入直接使用如下语法: ?import 模块名称 (不要.py后缀) 这样导入成功后,就可以在另外一个模块中使用被导入模块的功能函数或对象。 举例如下,比如在F:\Pro-files\workspace\myPython目录下建立com.homer.python模块:module_1.py: [python]?view plaincopyprint? #?-*-?coding:utf-8?-*-?? module_1.py?? name?=?ithomer?? url?=??? 上面第一行是指定编码格式,因为python默认是按照ascii编码来处理的,因此就无法处理非英文语言,通过指定编码就可以实现国际化效果,即容许中文注释。第二行是注释信息,使用”’进行注释。然后,我们通过F:\Pro-files\workspace\myPython\com\homer目录进入到python的命令行模式,这样就可以将当前目录作为工作目录,从而也就可以顺利的找到了module_1这个模块了,如下: [python]?view plaincopyprint? :\Pro-files\workspace\myPython\com\homerpython?? Python?3.3.3?(v3.3.3:c3896275c0f6,?Nov?18?2013,?21:19:30)?[MSC?v.1600?64?bit?(AMD64)]?on?win32?? Type?help,?copyright,?credits?or?license?for?more?information.?? ??? ?此时如果我们直接输入print(url),系统则会报错,url变量未定义: [python]?view plaincopyprint? ?print(url)?? Traceback?(most?recent?call?last):?? ??File?stdin,?line?1,?in?module?? NameError:?name?url?is?not?defined?? ?? 所以我们需要先导入module_1的内容才算定义了url变量,不过要注意的是导入的模块的变量并不是定义在顶层命名空间,而是在模块的命名空间中,因此使用如下方式导入后的打印变量如下: [python]?view plaincopyprint? ?import?module_1?? ?print(module_1.url)?? ?? ?如果直接使用print(url),仍然还是会报url未定义的错误,原因就是上面说到的命名空间的问题。如果想要直接在顶层命名空间中使用该变量,可以使用如下导入方式: [python]?view plaincopyprint? ?from?module_1?import?url?? ?print(url)?? ?? 这样就可以将module_1模块中的url变量导入到顶层命名空间了,直接使用变量也就不会报错了。当然我们也可以为导入的变量重命名,如下把url重命名为myurl: [python]?view plaincopyprint? ?from?module_1?import?url?as?myurl?? ?print(myurl)?? ?? 这样就可以将url的值赋给myurl这个变量了,因为是使用了from…import语句,因此是将变量绑定在顶层命名空间,我们也就可以直接使用变量名了。 ?需要注意的是无论是使用import还是使用from..import的方式导入模块,其实都是在告诉python解释器要加载指定的模块,并执行模块中的所有语句,因此如果模块中有类似print的语句时,我们在导入的过程中也会看到这些语句的输出。 对于每个模块的导入,python解释器只会导入一次,即使重复使用import和from…import语句,也只有在PVM检测到该模块没有被导入时才执行导入动作。即使后来你修改了模块的源代码,但没有重启PVM,python解释器仍然是使用之前导入的内容在处理。如果需要重新载入修改后的源码,一是退出python的交互模式后再进入,二是直接使用reload语句,如下: [python]?view plaincopyprint? ?from?imp?import?reload?? ?reload(module_1)?? module?module_1?f

文档评论(0)

1亿VIP精品文档

相关文档