函数变量
函数名是变量,它在创建函数时绑定一个函数
# 示例: def f1(): print("f1函数被调用") f2 = f1 #两个变量同时绑定一个函数 f2() #f1 函数被调用 # 示例2: def f1(): print("f1") def f2(): print("f2") f1,f2 = f2,f1 f1()# f2
一个函数可以作为另一个函数的实参传递
# 示例: function_as_args.py def f1(): print("f1被调用") def f2(): print("f2被调用") def fx(fn): print(fn) fn()#调用函数 fx(f1) def goodbye(l): for x in l: print("再见:",x) 看懂 def operator(fn,l): fn(l) operator(goodbye,["Tom","Jerry","Spike"])
练习;
# 看懂下列代码: def myinput(fn): L = [1,3,5,7,9] return fn(L) print(myinput(max)) print(myinput(min)) print(myinput(sum)) # 函数可以作为另一个函数的返回值 # 示例见: # function_as_return_value.py def get_function(): s = input("请输入你要做的操作:") if s == "求最大": return max elif s == "求最小": return min elif s == "球和": return sum l=[2,4,6,8,10] f = get_function() print("f绑定:",f) print(f(l))
练习:
# 写一个计算公式的解释执行器 # 已知有如下一些函数: # def myadd(x,y): # return x+y # def mysum(x,y): # return x-y # def mymul(x,y): # return x * y # 定一个带有一个参数的函数 get_func(s): # def get_func(s): # ... # 此处自己实现 # 此函数的在传入字符串“加”或“+”返回myadd函数: # 此函数的在传入字符串“乘”或“*”返回myadd函数: # 在主函数中程序如下: # def main(): # while True: # s = input("请输入计算公式:") # 10 加 20 # l = s.split() # L = ["10","加","20"] # a = int(l[0]) # b = int(l[2]) # in = get_fuc(l[1]) # print("结果是:",fn(a,b)) def myadd(x,y): return x+y def mysum(x,y): return x-y def mymul(x,y): return x * y def get_func(s): if s == "加" or s == "+": return myadd elif s == "减" or s == "-": return mysum elif s == "乘" or s == "*": return mymul def main(): while True: s = input("请输入计算公式:") # 10 加 20 if not s: break l = s.split() # L = ["10","加","20"] a = int(l[0]) b = int(l[2]) fn = get_func(l[1]) print("结果是:",fn(a,b)) main()
函数的嵌套定义
函数嵌套定义是指一个函数里用def语句来创建其他函数的情况
# 示例见: # function_embed_def.py # 此示例示意函数的嵌套定义 def fn_outer(): print("fn_outer被调用") # 此处能否创建新的函数并且调用呢? def fn_inner(): print("fn_inner被调用!") fn_inner() # 调用函数内部的fn_inner fn_inner() print("fn_outer调用结束") fn_outer()
python 作用域
# 作用域也叫名字空间,是访问变量时查找变量名的范围空间 # 示例: a = 100 def fx(): a = 10000 # a = 10000 和 a = 100 是两个不同作用的域内的变量 print(a) fx() print(a)
python的四个作用域 LEGB
作用域 英文解释 英文简写
局部作用域(函数内) Local(function) L
外部嵌套函数作用域 Enclosing function local E
函数定义所在模块的作用域 Global(module) G
python 内置模块的作用域 Builtin(python) B