欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

函数作用域及匿名函数

程序员文章站 2023-12-22 09:02:46
...

一、匿名函数

f = lambda 变量名:返回值
f()
filter(lambda x: x>10, li)

简单函数
# def f1(): # 不带参数
#     return 1213

# 等同于
f1 = lambda: 12123


res = f1()
print(res)


# def f2(a1, a2):   # 带参数
#     return a1 + a2

# 等同于
f2 = lambda a1, a2: a1 + a2


res = f2(5, 6)
print(res)

# filter(func, li)
li = [3, 15, 10, 5, 9, 8]


# def f1(x):
#     return x > 8
# f1 = lambda x: x > 8

print(list(filter(lambda x: x > 8, li)))

2)强化
# def test(a, b):
#     result = a + b
#     return result

test = lambda a, b: a + b


num = test(5, 6)
print(num)


def test(a, b, func):
    res = func(a, b)
    return res


num = test(5, 6, lambda a, b: a + b)
print("加法:", num)
num = test(5, 6, lambda a, b: a - b)
print("减法:", num)

#实现匿名函数的输入
func = input("请输入一个匿名函数:")
 print(func)
print(type(func))
 eval:返回值/exec:没有返回值
 func = eval(func)
 num = test(11, 22, func)
 print(num)

# 实现输入函数循环执行
while True:
    flag = input("继续吗?如果继续请输入y,其他结束")
    if flag.lower() == 'y':
        func = input("请输入一个匿名函数:")
        func = eval(func)
        num = test(11, 22, func)
        print(num)
    else:
        print("结束运行")
        break

二、作用域
1.函数内部定义的变量是局部变量,函数外无法调用–局部作用域
2.函数外定义的变量是全局变量

1)外部不能访问函数内部变量:
def   fun1():
	x = 1
	return x
2)函数里面不能修改函数外部变量:
x = 123
def  fun3():
	x = x + 1
	return x
3)
函数内部能够访问函数外部变量:
x = 123
def  fun2():
	print(x)
	return x + 1
4)
函数里面和函数外部变量名相同:
x = 123
print(x, id(x))
def  fun4():
	x = 456
	print(x, id(x))
	x += 1
	return x
	1.函数内部定义的变量是局部变量,函数外无法调用--局部作用域
2.函数外定义的变量是全局变量

1)外部不能访问函数内部变量:
def   fun1():
	x = 1
	return x
2)函数里面不能修改函数外部变量:
x = 123
def  fun3():
	x = x + 1
	return x
3)
函数内部能够访问函数外部变量:
x = 123
def  fun2():
	print(x)
	return x + 1
4)
函数里面和函数外部变量名相同:
x = 123
print(x, id(x))
def  fun4():
	x = 456
	print(x, id(x))
	x += 1
	return x


上一篇:

下一篇: