模块
包
name属性
模块是一个可执行的.py文件,一个模块被另一个程序引入,若在引用的时候不想让模块中的有些方法执行.这时候我们就需要使用name属性去处理.
创建一个say2.py文件
#!/user/bin/env python
#encoding=utf-8
#作为模块执行
height = 180
weight = 60
def sayHello():
print("hello, nice to meet you!")
def sayGood():
print("you are a good man!")
def sayBey():
print("see you litter")
#正常执行
#每一个模块都有一个__name__属性,当其值等于"__main__"时,表明该模块自身在执行,否则被引入了其他文件
#若当前文件为程序的入口文件,则__name__属性的值为__main__
if __name__ == "__main__":
sayHello()
sayGood()
print(__name__)
else:
print(__name__)
以后的代码可以这么写:
def main():
pass
#其他函数
if __name__ == "__main__":
main()
总结:
1.__name__这个系统变量显示了当前模块执行过程中的名称,如果当前程序运行在当前模块中,则__name__的名称就是__main__,如果不是,则为这个模块的名称.
2.__name__一般作为函数的入口,尤其在大型工程中,常常有if __name__ == "__mian__":来表明整个工程开始运行的入口.
sys模块
1.4.1 sys.argv
sys.argv 获取当前正在执行的命令行参数的参数列表
import sys
#实现从程序外部向程序传递参数
print(sys.argv)
#当前程序名
sys.argv[0]
#第一个参数
sys.argv[1]
1.4.2 sys.platform
获取当前执行环境的平台
#mac
>>> import sys
>>> sys.platform
'darwin'
1.4.3 sys.path
path是一个目录列表,供python从中查找第三方扩展模块,在python启动时,sys.path根据内建规则,PATHPATH变量进行初始化
>>> import sys
>>> sys.path
['', '/Library/Frameworks/Python.framework/Versions/3.6/lib/python36.zip', '/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6', '/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/lib-dynload', '/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages']
安装第三方模块