01 模块
1.什么是模块
python中一个py文件就是一个模块
2.如果在一个模块中去使用另外一个模块中的内容
使用前提: 1) 需要被别的模块使用的模块的模块名必须符合变量名的要求;
2)导入模块 - 模块里面的内容必须要先导入再使用
3.怎么导入模块
新建一个test1.py文档
print('=========start==========')
a = 100
name = '小明'
def func1():
print('test1中的函数')
print('=========end==========')
1)导入方式1: 模块名.xxx
- import 模块名 - 导入指定模块,导入后可以通过’模块名.xxx’的方式使用这个模块中的全局变量
# =======导入方式1=======
import test1
print(test1.a)
print(test1.name)
test1.func1()
2) 导入方式2: 直接使用
- from 模块名 import 变量1, 变量2, 变量3, … - 导入指定模块,导入后可以直接使用指定变量
- from 模块名 import * - 导入指定模块,导入后可以直接使用模块中所有的全局变量变量
# =======导入方式2=======
from test1 import a, func1
print(a)
func1()
# print(name) # 报错,没导入的变量不能直接使用
from test1 import *
print(a)
func1()
3) 导入方式3: 对模块重命名
- import 模块名 as 新模块名
# =======导入方式3=======
import test1 as t1
print(t1.name)
print(t1.a)
t1.func1()
4) 导入方式4: 对变量重命名
- from 模块名 import 变量1 as 新变量1, 变量2 as 新变量2,…
# =======导入方式4=======
from test1 import name, a as A, func1
print(A)
02 导入模块的原理
1.导入原理
“”"
不管是import还是from-import导入模块的时候,系统都会自动进入指定的模块,将模块中的代码全部执行一遍。
# import test1
# from test1 import a
2.阻止导入
导入模块的时候,不让模块中的所有代码都执行,只执行需要执行的部分。
阻止的方法: 在被导入的模块中添加main对应的if语句,把不希望被别的模块执行的代码放到if语句里面。
新建一个test2.py文档
def download(name) :
print(f'连接{name}电影对应的服务器')
print('服务器传输数据')
print('客户端接收数据')
print(f'保存{name}数据')
print( '================')
# 这个if语句里面的代码在被别的模块导入的时候不会执行。
if __name__ == '__main__': # 输入main回车打印出来
for x in range(100):
download(f'电影{x}')
- 注意: 同一个模块如果导入多次,模块中的代码只会执行一次(自动查重)
# 只会执行一个import test1
import test1
import test1
from test2 import download
download('肖生克的救赎')
"""
=========start==========
=========end==========
连接肖生克的救赎电影对应的服务器
服务器传输数据
客户端接收数据
保存肖生克的救赎数据
================
"""
03 包
1.什么是包
python将包好了__init__.py文件的文件夹叫做包,它是专门用来管理模块的。
- 新建一个Python Package,里面自带一个__init__.py文件
x = 1000
- 在Python Package里新建一个test3.py文件
b = 111
age = 18
def func2():
print('test3中的函数')
2.怎么使用包中的模块中的内容
- import 包名 - 直接导入包,导入后可以用’包名.xxx’去使用包中__init__.py文件中的所有全局变量
# ==========导入方式1==========
import file
print(file.x)
- import 包名.模块名 - 导入包中指定的模块,导入后可以用’包名.模块名.xxx’去使用指定模块中的所有的全局变量
# ==========导入方式2==========
import file.test3 as test3
print(test3.b)
print(test3.age)
test3.func2()
- from 包名 import 模块名, 模块名2,…
# ==========导入方式3==========
from file import test3
print(test3.b)
print(test3.age)
test3.func2()
- from 包名.模块名 import 变量1, 变量2, …
# ==========导入方式4==========
from file.test3 import b, func2
print(b)
func2()