day13后续 - 模块和包的使用
一个模块就是一个py文件
哪些能用:所有在指定if语句外的全局变量
怎么使用:需要先导入模块
import 模块名 导入后可以使用所有的全局变量;以‘模块名.变量’的方式来使用全局变量
from 模块名 import 变量1,变量2,变量3......导入后可以使用指定的变量;直接使用变量
from 模块名 import *(通配符-全部) 把模块中所有变量全部导入(不推荐)
import 模块名 as 新模块名 导入模块时给模块取别名
from 模块名 import 变量1 as 新变量1
导入模块的原理
当使用import或者from-import导入模块的时候,系统会将导入的模块全部执行一遍
注意:重复导入同一个模块,模块中的内容只会执行一次
# import 和 include 的区别?
import 会自动检查,不会重复执行
include 重复导入会导致重复执行
# 关于循环导入的问题(两个文件相互导入)
python不存在这个问题
怎样选择性的执行被导入的内容
在被导入的模块中添加if语句,将不希望被其他模块执行的代码放到if语句中
if 语句:
if __name__ == '__main__':
不希望被其他模块执行的代码
原理:每个模块都有一个属性:__name__,这个属性是用来保存当前模块的名字。__name__默认值就是模块对应的py文件的文件名。
当我们直接执行某个模块的时候,这个__name__属性就会自动变成'__main__'
eg:
def main():
print('程序开始的代码')
if __name__ == '__main__':
main()
包的使用
包就是一种特殊的文件夹(a.里面的文件都是py文件 b.自带一个__init__.py的文件)
1.直接导入
示例一:通过包直接导入模块
from shape import circle
def main():
r = 10
if __name__ == '__main__':
main()
示例二:通过包导入模块中的数据
from shape.circle import area
print(area(10))