模块和包
如果在其他模块调用,会执行一次调用模块的代码的代码
本模块名
if __name__ == '__main__':
print(__name__)
开发项目:将所有函数写到一个文件中
不好维护,函数变量等命名是一个大问题,不利于代码复用,不利于扩展功能
我们将功能相同的一些代码 函数 放在同一个模块中,给相应的模块取名字,就可以根据名字去区分
模块
内置模块: time,sys
第三方模块: gevent
自定义模块: 自己写的模块或函数
闭包 : 本质就是一个函数
函数中返回一个函数
def get_line(k,b):
def line(x):
print("y =",k*x+b)
return line
lin = get_line(2,2)
lin(2)
匿名函数: 实现一些简单的功能
函数: 实现比较复杂的功能
闭包: 实现复杂的功能
对象: 实现非常复杂的功能
装饰器
在java中 面向切面编程
本质: 不改变已有代码的情况下对功能进行增强
可以在已有功能的前后对其进行增强
不能在已有代码中间进行修改
设计原则:开放封闭原则
封闭: 一个开发完成的模块,不建议再去修改源代码
开放: 可以对功能进行扩展
# 通用写法
def qx(func):
def qx_change_money(*args,**kwargs):
print("权限验证")
return func(*args,**kwargs)
return qx_change_money
@qx
def change_money(num1,num2,**kwargs):
print("转账",num1,num2,kwargs)
return num2
if __name__ == '__main__':
num2 = change_money(100,200,a = 1)
print(num2)
6.内层函数要修改外层函数的局部变量
nonlocal num