l_s=[] def test(n): n=int(n/2) l_s.append(n) print(l_s) if n==1: return l_s #注意这里 return l_s 不是test对应的return test(n) print(test(10))
函数作用域
name="sxj" def test1(): name="abc" def test2(): name="love" print(name) return test2#返回内存地址 如果+括号 代表运行test2 a=test1()#返回了test2的地址 print(a) a()#内存地址+括号 代表开始运行
test1()() 同上面 a()
函数运行的作用域和先前声明有关,和调用位置无关
匿名函数
lambda 行参:反馈值
func=lambda x:x+1 #定义匿名函数,如果print 则是内存地址 print(func(10))#lambda 自动return
匿名函数无复杂逻辑
#匿名函数 #例子:字符串+_sb f=lambda name:name+"_sb" print("方法1",f("abc")) g=lambda n:"%s_sb"%n print("方法2",g("wsc")) def change_name(name): print('方法3',name+"_sb") change_name("lex") h=lambda x,y,z:(x+y+z,x*y*z)#如果返回多个值,需要增加一个括号 print("用法2",h(4,2,3))