④[模块]

1. import使客户端(导入者)以一个整体获取一个模块。from允许客户端从一个模块文件中获取特定的变量名。imp.reload在不中止python程序的情况下,提供了一种重新载入模块文件代码的方法。

2.如果想看看已经导入了哪些模块,可以导入sys并打印list(sys.modules.keys())

3.模块搜索路径:

①程序的主目录。②PYTHONPATH目录(如果已经进行了设置)。③标准链接库目录。④任何.pth文件的内容(如果存在的话)

4.sys.path列表

如果你想看看模块搜索路径在机器上的实际配置,可以通过打印内置的sys.path列表(也就是标准库模块sys的path属性)来查看这个路径,就好像Python知道一样。

5.基于distutils分发和安装细节,可参考python标准手册集。第三方开源eggs系统,它增加了对已安装的python软件的依存关系的检查。

6.import将整个模块对象赋值给一个变量名。from将一个或多个变量名赋值给另一个模块中同名的对象。

from只是把变量名从一个模块复制到另一个模块,并不会对模块名本身进行赋值。

重载模块

7.导入(无论是import或from语句)只会模块在流程中第一次导入时,加载和执行该模块的代码。之后的导入只会使用已加载的模块对象。reload函数会强制已加载的模块代码重新载入并重新执行。此文件中新的代码的赋值语句会在适当的地方修改现有的模块对象。

扫描二维码关注公众号,回复: 2855264 查看本文章

8.form*形式在多数情况下都很糟糕,它会严重地污染命名空间,让变量意义变得模糊,少用为妙。

模块包

9.import语句中目录路径只能是以点号间隔的变量。你不能在import语句中使用任何平台指定的路径语法(c:/)

import dir1.dir2.mod

from dir1.dir2.mod import x

10.如果使用包导入,就必须遵循约束:包导入语句的路径中的每个目录内都必须有_init_.py这个文件,否则包导入会失败。

11.不要把包_init_.py文件和类_init_构造函数方法搞混了

12.包相对导入:必须使用特殊的from语法来导入与导入者位于同一包中的模块,除非你从一个包根目录拼出一个完整的路径。没有这一语法,你的包不会自动搜索到。from . import 

13.包含点号但前面没有一个点号的模块名是包导入,而不是相对导入。

相对导入所引用的模块必须在包目录中存在。

14.import或from语句所列出的每个目录都必须含有_init_.py文件

15.只有你需要读取定义在一个以上路径的相同变量名时,才必须通过import来使用包,而不能使用from。

高级模块

16.最小化from*的破坏:_X和_all_有种特定的情况,把下划线放在变量名前面(例如,_X),可以防止客户端使from*语句导入模块名时,把其中的那些变量名复制出去。

也可以在模块顶层把变量名的字符串列表赋值给变量_all_,以达到类似于_X命名惯例的隐藏效果。

使用此功能时,from*语句只会把列在_all_列表中的这些变量名复制出来。事实上,这和_X惯例相反:_all_是指出要复制的变量名,而_X是指不被复制的变量名

Python会先寻找模块内的_all_列表:如果没有定义的话,from*就会复制出开头没有单下划线的所有变量名

17.每个模块都有_name_内置属性,python会自动设置。如果文件是以顶层程序文件执行,_name_为'_main_'。如果文件被导入,_name_就会设成客户端所了解的模块名。

18.模块是对象:元程序。模块通过内置属性很容易的编写程序来管理其他程序。这类管理程序称为元程序(metaprogram),因为它们是在其他系统之上工作。这也称为内省(introspection),因为程序能看见和处理对象的内部。

19.使用reload和from有些本质上的问题:不但得记住导入后要重载,还得记住重载后要重新执行from语句。

20.不要在递归导入中使用from

21.修改sys.path只会影响一个正在运行的程序,是暂时的,程序结束时修改会消失。PATHONPATH设置是存在于操作系统中的,机器上所有程序都会使用。这些设置的修改在程序离开后还会保存。

22.import和from语句的as扩展

让模块可以在脚本中给予不同的变量名。

import modulename as name

from modulename import attrname as name

23.启用以后的语言特性:以选用扩展功能的方式出现,默认是关闭的。

from _future_ import featurename

猜你喜欢

转载自blog.csdn.net/Zhou_ZiZi/article/details/81479015
今日推荐