函数作用域及匿名函数

一、匿名函数

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


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值