python装饰器

Python基础更新

别等时光非礼了梦想. 提交于 2019-11-27 15:36:44
Python的基础认知 1. 计算机基础知识 2. Python的应用和历史 3. Python是一门什么语言 4. Python的优缺点 5. Python的种类 Python基础知识 1. Python的安装和环境配置 2. 第一个Python程序 3. 变量 4.常量 5. 注释 6. 基础数据类型初识 7. 字符串的格式化输出 8. while循环 9. 运算符 10. 初识编码 11. 整数 int 12. 布尔值 13. 字符串 1.索引 (下标) [ ] # 从0计数 2.切片 3.字符串常用的方法 14. for循环 15. rang范围 16. list列表 认识list列表 列表的作用 列表的增删改查 增 删 改 查 17. 元组 认识元组 18. dict字典 认识dict字典 字典的用处 字典的增删改查 增 删 改 查 一些操作举例 字典的嵌套 19. set集合 -天然去重 认识集合 集合的增删改 增 删 改 去重 其他操作 20. 深浅拷贝 浅拷贝 深拷贝deepcopy 21. 小数据池 22. 数据类型转换 23. 坑 24. 编码解码 25. 文件操作 一般书写格式格式 写 非文本操作b r+ ,w+ , a+ 断点续传 光标 truncate() 截断文件 文件修改 26. 三种格式化输出 函数和模块 1. 函数 - 面向过程编程 初识函数

python 闭包 装饰器

时光怂恿深爱的人放手 提交于 2019-11-27 15:02:27
闭包 1. 什么是闭包 在 python 中创建一个闭包一般有3个要求: (1)闭包函数必须有内嵌函数 (2)内嵌函数必须要引用外层函数的变量 (3)闭包函数返回内嵌函数的地址(函数名称) 作用:可以在不修改目标源码的前提下,加功能 注意:闭包函数中的变量的生命周期得到延长 2. 创建一个闭包函数 def funcOut(): name = 'Jery' def funcIn(): # format的简写方式 print(f"姓名 = {name}") return funcIn f = funcOut() f()  运行结果: 姓名 = Jery    3. 判断是否为闭包函数 闭包函数相对与普通函数会多出一个__closure__的属性,里面定义了一个元组用于存放所有的cell对象,每个cell对象保存了这个闭包中所有的外部变量。 funcIn.__closure__ :返回None,则不是闭包函数 如: def funcOut(): name = 'Jery' def funcIn(): print(f"姓名 = {name}") print(funcIn.__closure__) print(funcIn.__closure__[0].cell_contents) # 第一个外部变量 return funcIn f = funcOut() f() 运行结果 (<cell

Python装饰器使用样例

99封情书 提交于 2019-11-27 11:08:33
装饰器: 装饰器的本质也是一个函数,用于装饰其他函数,在不修改被装饰函数的源码和调用方式的情况下为其新增附加功能。 简单无参装饰器样例: #定义装饰器 def logger(func): def wrapper(*args,**kwargs): print(" start.....") return func(*args,**kwargs) print(" end....") return wapper #使用装饰器 @logger def run1(): print("run1") @logger def run2(arg) print("run2:%s" %arg) return "finished" if __name__ == "__main__": run1() run2("hello") 待参数的装饰器样例: #定义鉴权装饰器 def auth(auth_type): #带参装饰器需要多一层函数来接收参数。 def outer_wrapper(func): def wrapper(*args,**kwargs): auth_result=False if auth_type == "basic": #调用basic鉴权 auth_result = basic_auth() elif auth_type == "ldap": #调用ldap鉴权 auth_result =

python数据结构面试合集

孤街浪徒 提交于 2019-11-27 10:59:56
为什么学python 答题路线:a、python的优点,b、python的应用领域广 具体: 优点 1、python语法非常优雅,简单易学 2、免费开源 3、跨平台,可以自由移植 4、可扩展,可嵌入性强 5、第三方库丰富 应用领域 1、在系统编程中应用广泛,比如说shell工具。 2、在网络爬虫方面功能非常强大,常用的库如scrapy,request等 3、在web开发中使用也很广泛,如很多大型网站都用python开发的,如ins,youtube等,常用的框架如django,flask等 4、python在系统运维中应用广泛,尤其在linux运维方面,基本上都是自动化运维。 5、在人工智能,云计算,金融等方面也应用非常广泛。 通过什么途径学习python 通过看官方文档 通过哔哩哔哩上的视频教程 通过百度查资料 通过买python相关方面的书 公司线上和开发环境使用的什么系统 线上用的centos和Ubuntu系统 开发环境用的windows,mac,还有Ubuntu。 python和java、php、c、c#、c++ 等其他语言对比? Java C# PHP Python (开发效率高),这些语言本身不需要你去管理内存了。它们都有自己的虚拟机,对于开辟内存、释放内存都由这个虚拟机处理。 C 和 Python、Java、C#等C语言: 代码编译得到 机器码

继承 多态 封装 及内置函数

纵然是瞬间 提交于 2019-11-27 06:12:01
**什么时候用组合什么时候用继承:** 老师类 和 生日类 老师的生日 老师.生日 用组合 老师类 和 人类 老师是人 class老师类(人类) 用继承 另外,有相同属性也可判断要用继承 ### 组合 一个对象的属性值是另外一个类的对象 一个类的属性 用另一个类的对象来描述 两连点:alex.weapon.hand18(jin) alex的weapon属性,因为是一个另类的对象,weapon也有自己的方法,故两连点 ```python # 人狗大战 class Dog: def __init__(self,name,aggr,hp,kind): self.name = name self.aggr = aggr #武力值 self.hp = hp #血 self.kind = kind #咬 def bite(self,person): person.hp -= self.aggr class Person: def __init__(self,name,aggr,hp,sex): self.name = name self.aggr = aggr self.hp = hp self.sex = sex self.money = 0 def attack(self,dog): dog.hp -= self.aggr #获取装备 def get_weapon(self,weapon)

python装饰器的原理

安稳与你 提交于 2019-11-27 04:47:24
装饰器的原理就是利用《闭包函数》来实现,闭包函数的原理就是包含内层函数的return和外层环境变量: 装饰器: 装饰器本质上是一个Python函数,其他函数在不需要做任何代码变动的前提下增加额外功能,装饰器的返回值(return)也是一个函数对象。它经常用于有切面需求的场景,比如:插入日志、性能测试、事务处理、缓存、权限校验等场景。 1 2 3 4 5 6 7 8 9 先来看一个简单例子: def foo(): print ( 'i am foo' ) 现在有一个新的需求,希望可以记录下函数的执行日志,于是在代码中添加日志代码: def foo(): print ( 'i am foo' ) logging.info( "foo is running" ) bar()、bar2()也有类似的需求,怎么做?再写一个logging在bar函数里?这样就造成大量雷同的代码,为了减少重复写代码,我们可以这样做,重新定义一个函数:专门处理日志 ,日志处理完之后再执行真正的业务代码 1 2 3 4 5 6 7 8 def use_logging(func): logging.warn( "%s is running" % func.__name__) func() def bar(): print ( 'i am bar' ) use_logging(bar) 逻 辑上不难理解, 但是这样的话

python 装饰器

你说的曾经没有我的故事 提交于 2019-11-27 04:46:05
装饰器:在不修改函数源代码的基础上,添加函数功能 例如: 1 def log_time(func): # 此函数的作用时接受被修饰的函数的引用test,然后被内部函数使用 2 def make_decorater(): 3 print('现在开始装饰') 4 func() 5 print('现在结束装饰') 6 return make_decorater # log_time()被调用后,运行此函数返回make_decorater()函数的引用make_decorater 7 8 @log_time # 此行代码等同于,test=log_time(test)=make_decorater 9 def test(): 10 print('我是被装饰的函数') 11 test() # test()=make_decorater() 当被装饰的函数有形参时: def log_time(func): def make_decorater(*args,**kwargs): # 接受调用语句的实参,在下面传递给被装饰函数(原函数) print('现在开始装饰') test_func = func(*args,**kwargs) # 如果在这里return,则下面的代码无法执行,所以引用并在下面返回 print('现在结束装饰') return test_func #

Python学习day13-函数进阶(1)

巧了我就是萌 提交于 2019-11-27 03:46:29
Python学习day13-函数进阶(1) 闭包函数 闭包函数,从名字理解,闭即是关闭,也就是说把一个函数整个包起来。正规点说就是指函数内部的函数对外部作用域而非全局作用域的引用。 为函数传参的方式有常用有以下两种: 用参数的形式 xxxxxxxxxx 5 1 def func(x): 2 print(x) 3 4 func(1) 5 ​ 包给函数 xxxxxxxxxx 11 1 def outter(x): 2 x = 1 3 4 def inner(): 5 print(x) 6 return inner 7 f = outter(1)# outter的返回值为inner所以会执行到print(x) 8 ​ 9 f() 10 f() 11 ​ 闭包函数的应用 闭包的意义在哪呢,其返回的函数对象,不仅仅是一个函数对象,在该函数外还包裹了一层作用域,这使得该函数无论在何处调用的时候,都会优先调用外层包裹的作用域。 其主要应用领域就在于延迟计算和爬虫领域,可以简化代码量,也会使代码更加的稳定。 装饰器 装饰器是一个逻辑上比较复杂的概念,所幸我们并不必追究太深,只需知道其使用方法和大概原理即可。 所以什么是装饰器呢,个人理解装饰器就是包裹在函数外面的另外一个函数,而且装饰器的起到对原函数增加功能的作用,且不影响原函数的调用和存在。 需要注意的是,装饰器本身其实是任意可调用的对象

Python之浅谈装饰器

生来就可爱ヽ(ⅴ<●) 提交于 2019-11-27 03:44:23
目录 闭包函数 装饰器 迭代器 闭包函数 就是将原先需要调用好几遍的函数和参数写入一个包内,下次调用时一起调用 def name(x): x=1 def age(): print(x) return age f=name(1) f() f() 装饰器 装饰器可以用来装饰原函数,它可以给原函数添加功能 装饰器有两个原则: ​ 1.不改变原函数的调用方式 ​ 2.不改变原函数的源代码 #双层装饰器的模板 def outter(func): def wrapper(*args,**kwargs):#wrapper是将要运作的函数 #加功能 res=func(*args,**keargs)#被装饰的函数 return res retyrn wrapper @outter#语法糖 def shopping():#原函数 print('shopping') shopping() #调用函数 #三层装饰器的模板 def sanceng(engine): def outter(func): def wrapper(*args,**kwargs):#wrapper是将要运作的函数 print(engine) res=func(*args,**kwargs)#被装饰得函数 return res return wrapper return outter @sanceng(3)#语法糖 def

python基础之函数重点

房东的猫 提交于 2019-11-27 03:41:55
函数的返回值 现在有一个需求,比较两个人的月薪,然后想获取月薪较大人的年薪。 如果需要在程序中拿到函数的处理结果做进一步的处理,则需要函数必须要有返回值。 需要注意的是: return是一个函数结束的标志,函数内可以有多个return,只要执行到return,函数就会执行。 return的返回值可以返回任意数据类型 return的返回值无个数限制,即可以使用逗号隔开返回多个值 0个:返回None 1个:返回值是该值本身 多个:返回值是元组 #返回单个值 def max_self(salary_x, salary_y): if salary_x > salary_y: return salary_x else: return salary_y max_salary = max_self(20000, 30000) print(max_salary*12) ##360000 #返回多个值 def fun(): name = 'nick' age = 19 hobby_list = ['read', 'run'] return name, age, hobby_list name, age, hobby_list = func()#解压缩 print(f"name,age,hobby_list: {name, age, hobby_list}") ##name,age,hobby