标签:inner 匿名 生成器 匿名函数 obj 依次 pre print 自己
>>> graphic = ‘三角形‘ >>> def chang(): graphic = ‘正方形‘ def chang1(): #内部嵌套的函数命名可相同 graphic = ‘圆形‘ print(‘第三层打印‘,graphic) chang1() print(‘第二层打印‘,graphic) >>> chang() 第三层打印 圆形 第二层打印 正方形 >>> print(‘第一层打印‘,graphic) 第一层打印 三角形 #在各自的命名空间中同名变量不受影响
lambda 函数拥有自己的命名空间,且不能访问自己参数列表之外或全局命名空间里的参数
语法为 lambda [arg1 [,arg2,.....argn]]:expression ,以变量的方式调用 sum = lambda arg1, arg2: arg1 + arg2
装饰器的作用:在原先代码不改变的情况扩展功能
def test(f): def inner(): print(‘hello‘) f() return inner # 返回内部函数对象,内部不调用,这种现象称为‘‘闭包’’ @test def log(): print(‘world‘) # @test 相当于执行 log= test(log) log() # 现在的log()相当于inner() -------------------- hello world
装饰器的参数传递
def test(f): def inner(*arg): print(‘hello‘) f(*arg) #此处f(*arg)是原先login函数的调用 return inner @test def login(x=None): if x == ‘xing‘: print(‘world‘) login() #不传参数,因为inner函数是可选参数,f(*arg)则中则为默认参数x = None --------------- # hello -------------- login(‘xing‘) --------------- # hello # world
递归函数需设停止递归的条件
递归代码还有代码的话,递归结束后还会依次执行
def calc(n): print(n ) n = int(n /2) # 50 if n > 0: calc(n) # 50 print(n)
a = [x for x in range(10)] b = (x for x in range(10)) print(a) print(b) ------------------- # [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] # <generator object <genexpr> at 0x00505070>
标签:inner 匿名 生成器 匿名函数 obj 依次 pre print 自己
原文地址:https://www.cnblogs.com/lalaxing/p/11322535.html