python开发函数进阶:装饰器

一,装饰器本质

闭包函数

功能:就是在不改变原函数调用方式的情况下,在这个函数前后加上扩展功能

二,设计模式

开放封闭原则

*对扩展是开放的

*对修改是封闭的

三,代码解释

 1 #!/usr/bin/env python
 2 #_*_coding:utf-8_*_
 3
 4 tag = False
 5
 6 def login(func):
 7     def inner(*args,**kwargs):
 8         global tag
 9         if tag == False:
10             user = input(‘please your username>>>:‘)
11             pwd = input(‘please your password>>>:‘)
12             f = open(‘aaa‘,‘r‘,encoding=‘utf-8‘)
13             for i in f:
14                 user_pwd = eval(i)
15                 if user == user_pwd[‘name‘] and pwd == user_pwd[‘password‘]:
16                     tag = True
17             f.close()
18         if tag:
19             ret = func(*args,**kwargs)
20             return ret
21     return inner
22
23 @login
24 def haha(*args,**kwargs):
25     print(‘中国动漫‘)
26     pass
27
28 @login
29 def hengheng(*args,**kwargs):
30     print(‘美国动漫‘)
31     pass
32 ##########用户调用方式
33 haha()
34 hengheng()
时间: 2024-09-30 11:15:46

python开发函数进阶:装饰器的相关文章

python 基础篇 11 函数进阶----装饰器

11. 前??能-装饰器初识本节主要内容:1. 函数名的运?, 第?类对象2. 闭包3. 装饰器初识 一:函数名的运用: 函数名是一个变量,但他是一个特殊变量,加上括号可以执行函数. ?. 闭包什么是闭包? 闭包就是内层函数, 对外层函数(非全局)的变量的引?. 叫闭包 可以使用_clesure_检测函数是否是闭包  返回cell则是闭包,返回None则不是 闭包的好处: 由它我们可以引出闭包的好处. 由于我们在外界可以访问内部函数. 那这个时候内部函数访问的时间和时机就不?定了, 因为在外部,

python开发函数进阶:可迭代的&迭代器&生成器

一,可迭代的&可迭代对象 1.一个一个的取值就是可迭代的   iterable#str list tuple set dict#可迭代的 --对应的标志 __iter__ 2.判断一个变量是不是一个可迭代的 # print('__iter__' in dir(list))# print('__iter__' in dir([1,2,3])) 3.可迭代协议--凡是可迭代的内部都有一个__iter__方法 二,迭代器 1.将可迭代的转化成迭代器 1 #!/usr/bin/env python 2

python开发函数进阶:匿名函数

一,匿名函数 #简单的需要用函数去解决的问题 匿名函数的函数体 只有一行#也叫lambda表达式# cal2(函数名) = lambda n(参数) : n*n(参数怎么处理,并且返回值)#参数可以有多个,用逗号隔开#匿名函数不管逻辑多复杂,只能写一行,且逻辑执行结束后的内容就是返回值#返回值和正常的函数一样可以是任意数据类型1.函数和匿名函数 1 #!/usr/bin/env python 2 #_*_coding:utf-8_*_ 3 4 def cal(n): 5 return n*n 6

python开发函数进阶:递归函数

一,什么叫递归 #递归#在一个函数里调用自己#python递归最大层数限制 997#最大层数限制是python默认的,可以做修改#但是我们不建议你修改 例子和尚讲故事 1 #!/usr/bin/env python 2 #_*_coding:utf-8_*_ 3 4 #:基础版本 5 def story(): 6 print("从前有座山,山里有座庙,庙里有个老和尚讲故事,讲的什么呀?") 7 while True: 8 story() 9 10 #:递归版本 11 def story

python开发函数进阶:命名空间,作用域,函数的本质,闭包,内置方法(globales)

一,命名空间 #局部命名空间#全局命名空间#内置命名空间 #三者的顺序#加载顺序 硬盘上--内存里#内置-->全局(从上到下顺序加载进来的)-->局部(调用的时候加载) 1 #!/usr/bin/env python 2 #_*_coding:utf-8_*_ 3 4 #全局命名空间 5 a = 5 6 b = 8 7 #局部命名空间(函数) 8 def my_max(): 9 c = a if a > b else b 10 return c 11 m = my_max() 12 pr

函数-函数进阶-装饰器

想象一下: 你是一家视频网站的后端开发工程师,你们网站有以下几个版本: def home(): print("----首页----") def america(): print("----欧美专区----") def japan(): print("----日韩专区----") def henan(): print("----河南专区----") 视频刚上线初期,为了吸引用户,你们采取了免费政策,所有视频免费观看,迅速吸引了一

python基础-函数之装饰器、迭代器与生成器

1. 函数嵌套 1.1 函数嵌套调用 函数的嵌套调用:在调用一个函数的过程中,又调用了其他函数 def bar(): print("from in the bar.") def foo(): print("from in the foo.") bar() foo() 1.2 求函数最大值 def max2(x,y): if x > y: return x else: return y def max4(a,b,c,d): res1 = max2(a,b) re

Python基础——函数的装饰器

等待更新…………………… 后面再写 原文地址:https://www.cnblogs.com/mashangsir/p/11330234.html

第二模块·函数编程-第1章 函数、装饰器、迭代器、内置方法

01-鸡汤之人丑就要多读书 02-三元运算 03-文件处理 04-文件处理-二进制模式 05-文件处理-智能检测编码的工具 06-文件处理-写模式操作文件 07-文件处理-追加模式操作文件 08-文件处理-混合操作文件 09-文件操作其他功能 10-文件处理-文件修改功能 11-函数-基本介绍 12-函数-默认参数 13-函数-关键参数 14-函数-非固定参数 15-函数-非固定参数2 16-函数-返回值 17-函数-局部变量 18-函数-在函数里修改全局变量 19-函数-在函数里修改列表数据