模块
例子1:导入某个模块中的具体功能
# 只导入time模块中的sleep方法,可以直接使用sleep调用不用加time.
from time import sleep
print("hello")
sleep(500)
print("fine")# 只导入time模块中的sleep方法,并给sleep起别名为sl
from time import sleep as sl
print("hello")
sl(500) # !!!
print("fine")
例子2:自定义模块
当自定义模块写了测试代码,在其他代码文件中导入该模块,也会调用该测试代码,即:
注意如下是两个个文件的代码
# my_moudle.py
def add(x, y):print(f"{x} + {y} = {x+y}")add(8, 9)# aa.py
import my_moudle
my_moudle.add(22, 12)
执行aa.py 输出:
8 + 9 = 17
22 + 12 = 34
如果不想执行 my_moudle.py 中的 add(8, 9),可修改代码:
# my_moudle.py
def add(x, y):print(f"{x} + {y} = {x+y}")if __name__ == '__main__':add(8, 9)
__name__
是每个py文件内置的变量,只有运行的py文件才会是__main__
例子3:__all__全局变量
# my_moudle.py
__all__ = ['add'] # 其他文件 以from my_moudle import * 导入,则只能用add函数
def add(x, y):print(f"{x} + {y} = {x+y}")def sub(x, y):print(f"{x} - {y} = {x-y}")
python包
python包就是一个文件夹,里面是模块,即python文件,额外还有一个 __init__.py
创建python包方法
假设文件夹下有两个模块文件 my_moudle1.py 和 my_moudle2.py
# my_moudle1.py
def print1():print("模块1功能")# my_moudle2.py
def print2():print("模块2功能")
在 aa.py 中使用
# 这样导入,调用函数要写包名.模块名.方法名
import my_package.my_moudle1
import my_package.my_moudle2my_package.my_moudle1.print1()
my_package.my_moudle2.print2()# 这样导入,调用函数要写模块名.方法名
from my_package import my_moudle1
from my_package import my_moudle2my_moudle1.print1()
my_moudle2.print2()# 这样导入,调用函数只要写方法名
from my_package.my_moudle1 import print1
from my_package.my_moudle2 import print2print1()
print2()
列表的sort方法
即使用自己定义的比较函数来进行排序
my_list=[["a", 33], ["b", 55], ["c", 11]]# 基于有名函数排序
# 表明按照element 的第二个元素进行排序
def choose_sort_key(element):return element[1]# reverse=True 表明是降序排列
#my_list.sort(key = choose_sort_key, reverse=True)# 基于lambda匿名函数来降序排序
my_list.sort(key=lambda element:element[1], reverse=True)print(my_list)
输出结果:
[[‘b’, 55], [‘a’, 33], [‘c’, 11]]