Board logo

标题: python模块(3) [打印本页]

作者: look_w    时间: 2019-5-18 10:19     标题: python模块(3)

reload() 函数

当一个模块被导入到一个脚本,模块顶层部分的代码只会被执行一次。
因此,如果你想重新执行模块里顶层部分的代码,可以用 reload() 函数。该函数会重新导入之前导入过的模块。语法如下:

reload(module_name)


在这里,module_name要直接放模块的名字,而不是一个字符串形式。比如想重载 hello 模块,如下:

reload(hello)



Python中的包

包是一个分层次的文件目录结构,它定义了一个由模块及子包,和子包下的子包等组成的 Python 的应用环境。
简单来说,包就是文件夹,但该文件夹下必须存在 init.py 文件, 该文件的内容可以为空。init.py 用于标识当前文件夹是一个包。
考虑一个在 package_Joe 目录下的 Joe1.py、Joe2.py、init.py 文件,test.py 为测试调用包的代码,目录结构如下:

test.py
package_Joe
|-- __init__.py
|-- Joe1.py
|-- Joe2.py



源代码如下:
package_Joe/Joe1.py

#!/usr/bin/python
# -*- coding: UTF-8 -*-

def Joe1():
   print "I'm in Joe1"



package_Joe/Joe2.py

#!/usr/bin/python
# -*- coding: UTF-8 -*-

def Joe2():
   print "I'm in Joe2"



现在,在 package_Joe 目录下创建 init.py:
package_Joe/init.py

#!/usr/bin/python
# -*- coding: UTF-8 -*-

if __name__ == '__main__':
    print '作为主程序运行'
else:
    print 'package_Joe 初始化'



注意到这两行代码:

if __name__=='__main__':
    print '作为主程序运行'



当我们在命令行运行init.py模块文件时,Python解释器把一个特殊变量name置为main,而如果在其他地方导入该init.py模块时,if判断将失败,因此,这种if测试可以让一个模块通过命令行运行时执行一些额外的代码,最常见的就是运行测试。

然后我们在 package_Joe 同级目录下创建 test.py 来调用 package_Joe 包
test.py

#!/usr/bin/python
# -*- coding: UTF-8 -*-

# 导入 Phone 包
from package_Joe.Joe1 import Joe1
from package_Joe.Joe2 import Joe2

Joe1()
Joe2()



以上实例输出结果:

package_Joe 初始化
I'm in Joe1
I'm in Joe2



如上,为了举例,我们只在每个文件里放置了一个函数,但其实你可以放置许多函数。你也可以在这些文件里定义Python的类,然后为这些类建一个包。




欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/) Powered by Discuz! 7.0.0