Python 函数变量

函数变量

函数名是变量,它在创建函数时绑定一个函数

# 示例:
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

相关推荐