python装饰器

python之闭包函数和装饰器

匿名 (未验证) 提交于 2019-12-02 22:54:36
1.闭包函数 作用域的关系: 闭包函数: 闭指的是:该函数是一个内部函数 包指的是:指的是该函数包含对外部作用域(非全局作用域)名字的引用==(即形参变量名的赋值引用) 给函数传值有两种方式: def inner(x): inner(x) 方式二: 2.装饰器 import time def index(): print('welcome to index') time.sleep(3) return 123 def home(name): print('welcome %s to name'%(name)) def timmer(func): def wepper(*args, **kwargs): start = time.time() res = func(*args, **kwargs) stop = time.time() print('run time is %s' % (stop - start)) return res return wepper index = timmer(index) home = timmer(home) index() home('egon') 装饰器语法糖: # def timmer(func): # # def index(): # # def home(name): # # res=index() # home('egon')

17 python

匿名 (未验证) 提交于 2019-12-02 22:54:36
位运算 生成器:只能使用一次 占用内存少 generator.__next__() generator.send("hehe") 第一次传None 上面temp就是send传送的参数 迭代器(Iterator):可以被next()函数调用并不断返回下一个值得对象称为迭代器 判断是否可迭代 iter()转换为迭代器 命名空间(namespace) 全局变量函数外部定义的变量 globals() 局部变量函数内部定义的变量 locals() 在函数内部使用global声明修改全局变量 变量的优先关系: 内部函数对外部函数作用域里变量的引用(非全局变量), 内部函数称为闭包 装饰器:其实就是一个闭包,把一个函数当做参数 然后返回一个替代版本 def w(func) @w def f() 文章来源: 17 python

python 装饰器

ε祈祈猫儿з 提交于 2019-12-02 22:51:57
1. 装饰器 装饰器其实是一个函数,作用是装饰其他函数装饰器的特点:1. 不改变被装饰的函数的源代码的情况下添加函数的功能 2. 不改变被装饰的函数的调用方式装饰器的组成方式:高阶函数+嵌套函数 1.1 高阶函数 高阶函数,以一个函数名作为参数,传递给另一个函数,这个函数就是高阶函数。 print(abs(-10)) # abs,内置函数,返回一个数的绝对值 def test(num,func): # 高阶函数,以一个函数名作为参数,传递给另一个函数 absNum = func(num) # 调用函数 print(absNum) test(-2,abs) # 注意,这里写的是abs,是函数名,没有加() map和lambda函数 map函数是一个内置的函数,它也是一个高阶函数,配合lambda(匿名函数),可以实现很多功能 lambda函数 lambda是匿名函数,没有函数名,最多支持三元运算,是一种简单的函数 三元运算: a,b,c = 1,2,3 d = 5 if a>b else c # 如果条件成立,d=5,否则就 =c lambda函数,以:分开,:左边写参数(可以多个,以‘,’分割),右边写函数体 a = lambda n:n*2 if n<10 else n print(a(6)) b = lambda x,y:x+y print(b(1,1)) ''' 上面的b

经典Python面试题之Python基础篇

匿名 (未验证) 提交于 2019-12-02 22:51:30
1. 为什么学习Python? 2. 通过什么途径学习的Python? 3. Python和Java、PHP、C、C#、C++等其他语言的对比? 4. 简述解释型和编译型编程语言? 5. Python解释器种类以及特点? 6. 位和字节的关系? 7. b、B、KB、MB、GB 的关系? 8. 请至少列举5个 PEP8 规范(越多越好)。 9. 通过代码实现如下转换: 十进制转换成十六进制:v = 87 10. 请编写一个函数实现将IP地址转换成一个整数。 如 10.3.9.12 转换规则为: 再将以上二进制拼接起来计算十进制结果:00001010 00000011 0000100100001100 = ? 11. python递归的最大层数? 12. 求结果: 13. ascii、unicode、utf-8、gbk 区别? 14. 字节码和机器码的区别? 15. 三元运算规则以及应用场景? 16. 列举 Python2和Python3的区别? 17. 用一行代码实现数值交换: 18. Python3和Python2中 int 和 long的区别? 19. xrange和range的区别? 20. 文件操作时:xreadlines和readlines的区别? 21. 列举布尔值为False的常见值? 22. 字符串、列表、元组、字典每个常用的5个方法? 23.

python装饰器之登录练习

匿名 (未验证) 提交于 2019-12-02 22:51:30
#__author: Administrator #date: 2018/5/21 login_status_jingdong = False login_status_weixin = False def start(): list={1:'home',2:'finance',3:'book'} list1={1:home,2:finance,3:book} for i in list: print(i,list[i]) select_num =input('请输入访问网页的编号[退出:q]>>') if select_num=='q': return exit() elif select_num.isdigit(): key=int(select_num) list1[key]() else: print('请输入有效值!') def login(auth_type=''): def outter(a): def inner(): global login_status_jingdong#获取全局变量来实现该变量的赋值修改 global login_status_weixin if auth_type=='jingdong': if login_status_jingdong is False: with open('京东账号', 'r', encoding='utf8')

Python_@修饰器(装饰器)的理解

匿名 (未验证) 提交于 2019-12-02 22:51:30
装饰器本质上是一个Python函数,它可以让其他函数在不需要做任何代码变动的前提下增加额外功能. 装饰器的作用就是为已经存在的对象添加额外的功能。 def funA(fun): print (fun()) def funB(): print ('B') return 1 funA(funB) ----------------------------- >>> B 1 可以看出,这个程序的运行过程为: 1.执行函数funB,输出了一个B,另外返回了一个值:1 2.执行函数funA,把funB返回的值1给输出了出来 而修饰器的作用: def funA(fun):  #函数本身也是对象,所以可以将函数作为参数传入另一函数并进行调用,而funB是有返回值的,所以结果输出了返回值1.(个人理解) print (fun()) @funA def funB(): print ('B') return 1 ---------------------- >>> B 1 作用相当于 funA(funB),不过只能放在一个函数或者类定义之前 需要注意的是,如果funB在funA里没用被调用的话,那funB是不会被执行的,如: def funA(fun): print ('funA') @funA def funB(): print ('B') return 1 ---------------------

python面试题(持续更新)

匿名 (未验证) 提交于 2019-12-02 22:51:30
第1~10题 1、一行代码实现1--100之和 >>> sum(range(1,101)) 5050 >>> 2、如何在一个函数内部修改全局变量 a= 3 def func(): global a a = 4 func() print(a) #4 3 、列出5个python标准库 os:提供了不少与操作系统相关联的函数 math: 数学运算 datetime:处理日期时间 4、字典如何删除键和合并两个字典 #删除 >>> dic = {"name":"derek","age":18} >>> del dic["name"] >>> dic {'age': 18} #合并 >>> dic2 = {'name':'derek2'} >>> dic.update(dic2) >>> dic {'age': 18, 'name': 'derek2'} 5、谈下python的GIL   使该进程内的其他线程无法运行,等该线程运行完后其他线程才能运行。如果线程运行过程中遇到耗时操作,则解释器锁解开,使其他线程运行。   所以在多线程中,线程的运行仍是有先后顺序的,并不是同时进行。多进程中因为每个进程都能被系统分配资源,相当于每个进程有了一个python   解释器,所以多进程可以实现多个进程的同时运行,缺点是进程系统资源开销大 6、python实现列表去重的方法 #先通过集合去重,再转列表 >

python调用时间装饰器检测函数运行时间

匿名 (未验证) 提交于 2019-12-02 22:51:30
用一个装饰器,监控程序的运行时间 import time def count_time(func): def int_time(*args, **kwargs): start_time = time.time() # 程序开始时间 func() over_time = time.time() # 程序结束时间 total_time = over_time - start_time print('程序共计%s秒' % total_time) return int_time @count_time def main(): print('>>>>开始计算函数运行时间') x = 0 for i in range(1000000): x=x//13 print(x) if __name__ == '__main__': main() 来源:博客园 作者: 耀扬 链接:https://www.cnblogs.com/duoba/p/11784576.html

python基础面试题(全网最全!)

匿名 (未验证) 提交于 2019-12-02 22:51:30
Ŀ¼ 1、为什么学习Python? 1、为什么学习Python? 人生苦短....哈哈,自己想吧!!! emmm。。。来真的 python语言的简洁、优美! 官网、网上视频、学习网站 1、python代码,简介,明确,优雅,简单易懂 2、开发效率高 3、可扩展性强 解释型:在执行程序时,计算机才一条一条的将代码解释成机器语言给计算机来执行 编译型:是把源程序的每一条语句都编译成机器语言,并保存成二进制文件,这样计算机运行该程序时可以直接以机器语言来运行此程序,运行速度很快。 Cpython,IPython,Jpython,pypy,Ironpython Python是一门解释器语言,代码想运行,必须通过解释器执行,Python存在多种解释器,分别基于不同语言开发,每个解释器有不同的特点,但都能正常运行Python代码,以下是常用的五种Python解释器: CPython:当 从Python官方网站下载并安装好Python2.7后,就直接获得了一个官方版本的解 释器:Cpython,这个解释器是用C语言开发的,所以叫 CPython,在命名行下运行python, 就是启动CPython解释器,CPython是使用最广的Python解释器。 IPython:IPython是基于CPython之上的一个交互式解释器,也就是说,IPython只是在交互方 式上有所增强

Python何时执行装饰器

匿名 (未验证) 提交于 2019-12-02 22:51:30
装饰器的一个关键特性是,它们在被装饰的函数定义之后立即运行。这 通常是在导入时(即 Python 加载模块时),如示例 7-2 中的 registration.py 模块所示。   示例 7-2 registration.py 模块 registry = [] def register(func): print('running register(%s)' % func) registry.append(func) return func @register def f1(): print('running f1()') @register def f2(): print('running f2()') def f3(): print('running f3()') def main(): print('running main()') print('registry ->', registry) f1() f2() f3() if __name__ == '__main__': main() 运行结果 running register(<function f1 at 0x0000027913AA8708>) running register(<function f2 at 0x0000027913AA8E58>) running main() registry -> [