python_20_装饰器_高阶函数的使用_01

登陆验证代码.

 1 #用户验证功能,不修改源代码,使用装饰器。
 2 user_dic={‘username‘:None,‘login‘:False}  #定义全局变量
 3
 4 def auth_func(func):
 5     def wrapper(*args,**kwargs):
 6         if user_dic[‘username‘] and user_dic[‘login‘]:
 7             res = func(*args, **kwargs)
 8             return res
 9         user_name = input(‘用户名:‘).strip()  #删除首尾空格
10         pass_wd = input(‘用户密码:‘).strip()
11         if user_name == ‘w‘ and pass_wd == ‘123‘:
12            user_dic[‘username‘] = user_name
13            user_dic[‘login‘] = True
14            res = func(*args, **kwargs)
15            return res
16         else:
17             print(‘用户名或密码输入错误‘)
18
19     return wrapper
20
21 @auth_func
22 def index():
23   print(‘1234564897‘)
24   return 5
25
26 @auth_func
27 def home(name):
28     print(‘%s欢迎回家‘%name)
29 @auth_func
30 def shopping_car(name):
31     print(‘%s购物车里面有【%s,%s,%s】‘%(name,‘手机‘,‘笔记本‘,‘数码相机‘))
32
33 index()
34
35 home(‘123‘)
36 shopping_car(‘产品经理‘)
 1 user_list=[
 2     {‘name‘:‘alex‘,‘passwd‘:‘123‘},
 3     {‘name‘:‘linhaifeng‘,‘passwd‘:‘456‘},
 4     {‘name‘:‘wupeiqi‘,‘passwd‘:‘789‘},
 5     {‘name‘:‘yuanhao‘,‘passwd‘:‘123‘},
 6 ]
 7 # for user_dic in user_list:    #遍历列表字典
 8 #    # print(user_dic.keys(),user_dic.values())
 9 #     a = user_dic[‘name‘]
10 #     b = user_dic[‘passwd‘]
11 #     print(a)
12 #     print(b)
13
14 #用户验证功能,不修改源代码,使用装饰器。
15 current_dic={‘username‘:None,‘login‘:False}  #定义全局变量
16
17 def auth_func(func):
18     def wrapper(*args,**kwargs):
19         if current_dic[‘username‘] and current_dic[‘login‘]:
20             res = func(*args, **kwargs)
21             return res
22
23         user_name = input(‘用户名:‘).strip()  #删除首尾空格
24         pass_wd = input(‘用户密码:‘).strip()
25
26         for user_dic in user_list:           #遍历列表字典(字典包含账号,密码)
27             if user_name == user_dic[‘name‘] and pass_wd == user_dic[‘passwd‘]:
28                 current_dic[‘username‘] = user_name       #保存全局变量
29                 current_dic[‘login‘] = True                #保存全局变量
30                 res = func(*args, **kwargs)
31                 return res
32         else:
33             print(‘用户名或者密码错误‘)
34
35     return wrapper
36
37 @auth_func
38 def index():
39   print(‘1234564897‘)
40   return 5
41
42 @auth_func
43 def home(name):
44     print(‘%s欢迎回家‘%name)
45
46 @auth_func
47 def shopping_car(name):
48     print(‘%s购物车里面有【%s,%s,%s】‘%(name,‘手机‘,‘笔记本‘,‘数码相机‘))
49
50 index()
51 print(‘用户---‘,current_dic)
52 home(‘123‘)
53 print(‘用户---‘,current_dic)
54 shopping_car(‘产品经理‘)

原文地址:https://www.cnblogs.com/TomorrowOFFaith/p/9683610.html

时间: 2024-10-06 22:14:35

python_20_装饰器_高阶函数的使用_01的相关文章

装饰器,闭包,高阶函数,嵌套函数

高阶函数代码形式:(1.函数接收的参数是一个函数名 2.函数的返回值是一个函数名) def too(): print('from too') #高阶函数 def foo(): print('from foo') return too a = foo() a() def too(): print('from too') def foo(func): print('from foo') func() a = foo(too) 函数嵌套 定义一个函数,在该函数的代码块中在定义函数(可以一直定义下去)

【react】---react中使用装饰器(高阶组件的升级用法)

一.creact-react-app中使用装饰器 运行 npm run eject 可以让由create-react-app创建的项目的配置项暴露出来 此时,项目中多了一个config文件,并且各个配置文件已经暴露出来了.(运行npm run eject之前,保证本地没有待提交到git的文件) 安装babel插件npm install --save-dev @babel/plugin-proposal-decorators 修改package.json文件的babel配置项 "babel&quo

002_第三部分_[函数 / 高阶函数 / 装饰器]

一.高阶函数: 顺序排序 enumerate([1,2 ,3 , 4, 5]) for idx, item in enumerate([1, 2, 3, 4]):     print(idex)     print(item) def sort(*args):     ret = []     for item in args:         for i, v in enumerate(ret):             if item > v:                 ret.ins

190401装饰器-高阶函数-闭包

一.装饰器 装饰器本质是函数 为其他函数添加附加功能 不修改被修饰函数的源代码 不修改被修饰函数的调用方式 装饰器示例 import time def timmer(func): def wrapper(*args,**kwargs): start_time = time.time() res = func(*args,**kwargs) stop_time = time.time() print("函数的运行时间:%s" % (stop_time - start_time)) ret

5.初识python装饰器 高阶函数+闭包+函数嵌套=装饰器

一.什么是装饰器? 实际上装饰器就是个函数,这个函数可以为其他函数提供附加的功能. 装饰器在给其他函数添加功能时,不会修改原函数的源代码,不会修改原函数的调用方式. 高阶函数+函数嵌套+闭包 = 装饰器 1.1什么是高阶函数? 1.1.1函数接收的参数,包涵一个函数名. 1.1.2 函数的返回值是一个函数名. 其实这两个条件都很好满足,下面就是一个高阶函数的例子. def test1(): print "hamasaki ayumi" def test2(func): return t

python 高阶函数与装饰器

高阶函数定义1.函数接收的参数是一个函数名2.函数的返回值是一个函数名以上两者满足任意一个,就是高阶函数 装饰器定义本质就是函数,功能是为其他函数添加新功能 装饰器的原则 1.不修改被装饰函数的源代码(开放封闭原则) 2.为被装饰函数添加新功能后,不修改被修饰函数的调用方式 装饰器=高阶函数+函数嵌套+闭包     # 无返回值无参数 import time def timer(func): #func = test def w(): start_time = time.time() func(

python学习笔记之函数总结--高阶函数以及装饰器

python学习笔记之函数总结--高阶函数以及装饰器 Python特点: 1.不是纯函数式编程(允许变量存在): 2.支持高阶函数(可以传入函数作为变量): 3.支持闭包(可以返回函数): 4.有限度的支持匿名函数: 高阶函数: 1.变量可以指向函数: 2.函数的参数可以接收变量: 3.一个函数可以接收另一个函数作为参数: 下面我将示例一些函数的写法以及使用,并说明python中函数的特性: 1.基本的高阶函数示例: #!/usr/bin/env python def func():      

高阶函数和装饰器

函数式:一种编程范式 纯函数式编程:没有变量,支持高阶函数编程 Python不是纯函数式编程语言,支持高阶函数编程 变量可以指向函数,函数名就是指向函数的一个变量,与普通变量没有区别 高阶函数:能接收函数做参数的函数. map():是 Python 内置的高阶函数,它接收一个函数 f 和一个 list,并通过把函数 f 依次作用在 list 的每个元素上,得到一个新的 list 并返回. def f(x): return x*x print map(f, [1, 2, 3, 4, 5, 6, 7

python学习笔记4:高阶函数,装饰器,生成器,迭代器

一.高级函数1.把一个函数名当作实参传给另一个函数2.返回值包含函数名>>> def bar():... print ("in the bar")... >>> def foo(func):... res=func()... return res... >>> foo(bar)in the bar 二.嵌套函数在函数中定义另一个函数 三.装饰器装饰器本质上是函数,作用是装饰其他函数,就是为其他函数添加附加功能.原则1:不能修改被装饰