Python3快速入门(四)——Python包管理
一、Python包简介
1,包
Python中使用包管理模块,包通常对应一个目录,必须在目录下创建一个<强> init 强> . py模块,<强> init 强> . py模块的模块名称即为包名,Python才会将目录解析为包。
<强> init 强> . py文件内可以定义初始化包的内容,导入包的内容,限制包内模块的导出。
<强> init 强>。py文件可以为空,也可以是一个模块,其模块名称为包名称。
导入包或包的模块,变量,函数时,<强> init 强> . py文件会被自动执行。
2,模块
Python中一个。py文件就是一个模块。
Python中用进口或者从…进口来导入相应的模块。
将整个模块(somemodule)导入,格式为:进口somemodule
从某个模块中导入某个函数或变量,格式为:从somemodule进口somefunction
从某个模块中导入多个函数、格式为:从somemodule进口firstfunc secondfunc, thirdfunc
将某个模块中的全部函数或变量导入,格式为:从somemodule导入* <代码> 代码>
<代码>导入系统 打印('================Python导入模块==========================') 打印(“命令行参数为:') 因为我在sys.argv: 打印(我) 打印(“python路径为”,sys.path) 从系统导入argv,路径#导入特定的成员 打印('================python进口===================================') 打印(argv) 打印(路径)代码>
对导入的模块进行重命名
导入包。模块名称
进口导入包或模块时,如果导入模块较多需要换行,可以使用反斜杠,或是将使用小括号将包含所有的模块。
包和模块不会被重复导入。
3模块的内置变量
模块内部预定义了内置变量:
<>强名称强>:当前模块名称
<强>包强>:当前模块所属包的名称
<强>医生强>:当前模块的注释内容
<强>文件强>:当前文件
<代码> # - * -编码:utf - 8 - * 打印(“名字:”+ __name__) 打印(“包:”+ (__package__或“当前模块不属于任何包”)) 打印(“医生:”+ (__doc__或“当前模块没有任何注释”)) 打印(“文件:”+ __file__) #名称:__main__ #包:当前模块不属于任何包 医生:当前模块没有任何注释 #文件:test.py 代码>
如果某个文件被当作入口文件,内置变量<强>包强>没有值,<>强名称>强值为主要<强> >强,<强>医生>强,<强>文件>强值为文件名称(不含路径)。
每个模块都可以任意写一些没有缩进的代码,并且在载入时自动执行,为了区分模块是主执行文件还是被调用的模块文件,Python引入了一个变量<>强名称>强,当文件是被调用时,<>强名称强>的值为模块名,当文件作为入口被执行时,<>强名称强>为“主要<强> >强”。因此,可以在每个模块中写上测试代码,测试代码仅当模块被Python直接执行时才会运行,代码和测试结合在一起,完美实现对测试驱动开发(TDD)的支持。
<代码> if __name__==癬_main__”: function_name() 代码>
将一个模块文件作为模块执行而不是应用执行的命令如下:
<代码> python3 - m " 代码>
二,Python包管理
1,导入包和模块
进口只能导入包和模块,不能直接导入变量或者函数。对于多层包嵌套后导致导入名称过长,可以为其重命名。
<代码>进口package1.package2.module_name 进口package1 进口package1.module_name 进口package1.package2。module_name作为new_name 代码>
导入包和模块时需要避免循环导入,两个或者多个模块文件互相导入会报错。
Python在导入模块时,会执行模块里的所有内容,但多次导入只会执行一次。
进口导入包或模块时,Python解释器寻找模块的优先级如下:
,当前目录
B环境变量到PYTHONPATH
C系统。路径(列表类型)
模块在被导入执行时,Python解释器为加快程序的启动速度,会在与模块文件同一目录下自动生成.pyc文件,.pyc是经过编译后的字节码。
Python使用缩进对齐组织代码的执行,所有没有缩进的代码(非函数定义和类定义),都会在载入时自动执行。
2,导入变量和函数
导入某个模块的变量,多个使用逗号分隔package1.package2
<代码>。module_name进口variable_name 代码>
导入某个模块的函数,多个使用逗号分隔package1.package2
<代码>。module_name进口function_name