ITS·黑客

Python学习笔记(十一)模块

2017-04-20  本文已影响0人  木凛

在Python中,一个.py文件就称之为一个模块(Module)。

使用模块

1)使用模块还可以避免函数名和变量名冲突。相同名字的函数和变量完全可以分别存在不同的模块中,因此,我们自己在编写模块时,不必考虑名字会与其他模块冲突。但是也要注意,尽量不要与内置函数名字冲突。

2)引入了包以后,只要顶层的包名不与别人冲突,那所有模块都不会与别人冲突。现在,abc.py模块的名字就变成了mycompany.abc

3)每一个包目录下面都会有一个__init__.py的文件,可以为空,由它来让目录作为一个包的存在

作用域

1)正常的函数和变量名是公开的(public)

1.1)类似__xxx__这样的变量是特殊变量,可以被直接引用,但是有特殊用途,自己的变量不要这样设置

1.2)类似_xxx和__xxx这样的函数或变量就是非公开的(private),不应该被直接引用,比如_abc,__abc等

2)外部不需要引用的函数全部定义成private,只有外部需要引用的函数才定义为public

__main__

先写一个模块:

#module.py

def main():

    print "we are in %s"%__name__

if __name__ == '__main__':

    main()

这个函数定义了一个main函数,我们执行一下该py文件发现结果是打印出”we are in __main__“,说明我们的if语句中的内容被执行了,调用了main():

但是如果我们从另我一个模块导入该模块,并调用一次main()函数

#anothermodle.py

from module import main

main()

其执行的结果是:we are in module

但是没有显示”we are in __main__“,也就是说模块__name__ = '__main__' 下面的函数没有执行。

这样既可以让“模块”文件运行,也可以被其他模块引入,而且不会执行函数2次。这才是关键。

总结

如果我们是直接执行某个.py文件的时候,该文件中那么”__name__ == '__main__'“是True,但是我们如果从另外一个.py文件通过import导入该文件的时候,这时__name__的值就是我们这个py文件的名字而不是__main__。

上一篇下一篇

猜你喜欢

热点阅读