Python模块和包、装饰器

模块和包

如果在其他模块调用,会执行一次调用模块的代码的代码
本模块名

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
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值