python 模块与包

原创
2021/04/20 13:37
阅读数 100

python 模块

1. 导入模块

  • 在Python中一个py文件就是一个模块,要想创建模块,实际上就是创建一个python文件

    注意:模块名要符号标识符的规范

  • 在一个模块中引入外部模块

    ① import 模块名 (模块名,就是python文件的名字,注意不要py)

    ② import 模块名 as 模块别名

  • 可以引入同一个模块多次,但是模块的实例只会创建一个

  • import可以在程序的任意位置调用,但是一般情况下,import语句都会统一写在程序的开头

  • 在每一个模块内部都有一个__ name __ 属性,通过这个属性可以获取到模块的名字

  • __ name __ 属性值为 __ main __ 的模块是主模块,一个程序中只会有一个主模块,主模块就是我们直接通过 python 执行的模块,执行哪一个文件,哪一个文件就是主模块。

import test_module as test 

print(test.__name__)
print(__name__)

2. 引入模块中的内容


# import m
# 访问模块中的变量:模块名.变量名

# 也可以只引入模块中的部分内容,这样就可以直接使用变量名,而不需要使用模块名来访问变量
# 语法 from 模块名 import 变量,变量....

# from m import * 
# 引入到模块中所有内容,一般不会使用

# 也可以为引入的变量使用别名,这样可以避免有多个模块有相同的变量名造成冲突。
# 语法:from 模块名 import 变量 as 别名

3. 模块私有变量

  • 使用下划线 _属性名,当通过 from m import * 引入所有变量时,不会将带有下划线的变量引入。
  • 注意的是,通过 import m 导入模块时,仍然可以通过 m._属性名 来访问

4. 导入模块跳过可执行代码

当引入其他模块时,其他模块里面可能会有一些可执行代码,这样在导入时会执行这些模块里的代码,我们想让这些代码只有在该模块作为主模块时才执行

# 在模块的可执行代码前面添加语句
# 编写测试代码,这部分代码,只要当当前文件作为主模块的时候才需要执行
# 而当模块被其他模块引入时,不需要执行的,此时我们就必须要检查当前模块是否是主模块 

if __name__ == '__main__':
    pass

5. package

  • 包也是一个模块,当我们模块中代码过多时,或者一个模块需要被分解为多个模块时,这时就需要使用到包
  • 普通的模块就是一个py文件,而包是一个文件夹 包中必须要一个一个 __ init __.py 这个文件,这个文件中可以包含有包中的主要内容
# 我们可以在包里面的__init__.py文件中定义变量或者函数,然后将包作为模块导入,这样就可以访问到这些变量
import package_name

# 包里面可以包含其他模块,使用模块里面的变量时,必须使用全路径名:package_name.module_name.属性名
import package_name.module_name
    
# 通过这种方式导入时,只需要写模块名就可以,不需要包名
from   package_name import module_name

  • __ pycache __ 是模块的缓存文件,在编译后会在包下面有一个缓存文件

    py代码在执行前,需要被解析器先转换为机器码,然后再执行,所以我们在使用模块(包)时,也需要将模块的代码先转换为机器码然后再交由计算机执行,而为了提高程序运行的性能,python会在编译过一次以后,将代码保存到一个缓存文件中,这样在下次加载这个模块(包)时,就可以不再重新编译而是直接加载缓存中编译好的代码即可

sys标准库

import sys
import pprint

# 获取执行代码时,命令行中所包含的参数,该属性是一个列表,列表中保存了当前命令的所有参数
sys.argv
print(sys.argv)

# 获取当前程序中引入的所有模块,modules是一个字典,字典的key是模块的名字,字典的value是模块对象
sys.modules

#pprint 模块它给我们提供了一个方法 pprint() 该方法可以用来对打印的数据做简单的格式化
pprint.pprint(sys.modules)

#他是一个列表,列表中保存的是模块的搜索路径
sys.path

# 函数用来退出程序
sys.exit()
sys.exit('程序出现异常,结束!')

导入指定目录下模块

from  sys  import path

# 导入sys模块下的path变量,这是一个list,添加模块的搜索路径
path.append(r"E:\\")

导入模块中的变量
from  test0  import   k
 
print(k)

展开阅读全文
打赏
0
0 收藏
分享
加载中
更多评论
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部