python入门第二十二节模块和包

模块概念

  • 模块是一个包含Python定义和语句的文件,文件名就是模块名后跟文件后缀 .py

模块导入

  • 模块可以被别的程序引入,以使用该模块中定义的变量和函数等功能
  • 习惯上(但不强制要求)把所有 import 语句放在模块的开头
  • 一个模块被另一个程序导入时,会执行该模块
  • 一个模块只会被另一个程序导入一次
模块导入
import 模块1[, 模块2[,… 模块n]]
import 模块1 as 别名1[, 模块2 as 别名2[,… 模块n as 别名n]]
from 模块 import 属性或方法1[, 属性或方法2[,… 属性或方法n]]
from 模块 import 属性或方法1 as 别名1[, 属性或方法2 as 别名2[,… 属性或方法n as 别名n]]
from module import *

注意:请慎用 from module import * ,很容易出现名称重复的情况,导致出现一些意外的问题

模块搜索路径

  • sys 模块的 path 变量包含了 Python 解释器自动查找所需模块的路径的列表
  • 如果这些路径都找不到,则会报错:ModuleNotFoundError: No module named’xxx’
import sys

print(sys.path)  # 会输出当前模块的查找路径,会按结果依次查询

__name__属性

  • 每个模块都有一个__name__属性,当其值是 ‘main’ 时,说明该模块自身在运行,否则说明该模块被导入,其值为模块名
  • 在完成一个模块的编写之前,我们一般会对模块中的功能进行测试,看看各项功能是否正常运行。对于这些测试的代码,我们希望只在直接运行这个py文件的时候执行,而在用其他的程序导入这个模块的时候不要执行。这个时候就可以借助__name__属性来实现
print('在该模块自身运行时会执行')
print('在该模块被导入时也会执行')

if __name__ == '__main__':
	print('在if语句下的程序块仅在该模块自身运行时才执行')
else:
	print('在else子句下的程序块在该模块自身运行时不会执行')
	print('但是在被导入时, 会执行')

包的概念

  • Python包实际上就是一个文件夹,只是该文件夹里面一定包含 init.py 模块
  • 和文件夹一样,包里面还可以装其他的包

包的作用

  • 避免相同命名冲突: 如果在同一个包里,是不允许两个模块命名相同的,但是如果不在同一个包里,是可以的
  • 模块分区: 把不同功能的模块归类到不同的包里,方便查询和修改。在比较大型的项目中常常需要编写大量的模块,此时我们可以使用包来对这些模块进行管理

包的导入

包的导入
import 包1[, 包2[,… 包N]]
import 包1as 别名1[, 包2 as 别名2[,… 包N as 别名N]]
from 包 import 模块1[, 模块2[,… 模块N]]
from 包 import 模块1 as 别名1[, 模块2 as 别名2[,… 模块N as 别名N]
from 包.模块import 属性或方法1[, 属性或方法2[,… 属性或方法N]]
from 包.模块 import 属性或方法1 as 别名1[, 属性或方法2 as 别名2[,… 属性或方法N as 别名N]]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

龙_尧

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值