模块
包结构
建包首先建立一个文件夹,文件夹名即为包名,在文件夹中新建一个__init__.py文件,可以为空,也可以写入包的信息,然后在这个文件夹中新建py文件,之后如果要在外面引用该包内的模块,就直接import 模块名(包名为头),调用模块内部函数时,前面要加模块名。包的内部还可以建立文件夹,建立下一层的包,视代码结构而定。
Python文件名就是模块名,例如如下代码放在test0525.py文件中,因此该模块即为test0525
import sys def test(): args=sys.argv if len(args)==1: print('Hello world') elif len(args)==2: print('Hello,%s'% args[1]) else: print('too many arguments') if __name__=='__main__': test()
仔细研究上述代码,有助于理解命令行运行py文件的机制。
在py文件的路径下,命令行执行Python test0525 Kimi,这个时候,Python解释器会把特殊变量__name__赋值为__main__,因此Python解释器在解释时会判断if语句,从而执行test函数,而如果其他模块import test0525则不会执行test,因为__name__不等于__main__,需要调用test才可以执行,因此只有命令行sys模块有一个argv变量存储命令行的所有参数,至少有一个,第一个参数为该py文件的名称,而本例中有两个参数,第二个参数argv[1]是 'kimi'。
from import 与import的区别
form A import B:可以直接使用B,B可以是函数也可以是模块 ,A可以是模块也可以是包,而不需要写出完整的模块名
import B:需要使用完整的模块名