你真的会lambda表达式吗?
最近在刷CS61A的lab的时候,遇到了一些很有意思的关于lambda表达式的问题。
以下题目均来自CS61A的lab02, 地址为https://inst.eecs.berkeley.edu/~cs61a/sp18/lab/lab02/
现在给大家分享一下。
Python 会显示什么?
输入
Function
如果你认为答案是某个函数 <function…>, 输入Error
如果你认为答案会返回一个error, 输入Nothing
如果你认为什么都不显示。如果遇到不会的,可以打开python调试器测试一下。
# 1. A lambda expression with one parameter x
lambda x: x
# 2. Assigning a lambda function to the name a
a = lambda x: x
a(5)
#3. Using a lambda expression as an operator in a call exp.
(lambda: 3)()
# 4. Lambdas can return other lambdas!
b = lambda x: lambda: x
c = b(88)
# 4.1
c()
# 5. They can have functions as arguments as well
d = lambda f: f(4)
def square(x):
return x * x
d(square)
# 6.Pay attention to the scope of variables
z = 3
e = lambda x: lambda y: lambda: x + y + z
e(0)(1)()
# 7
f = lambda z: x + z
f(3)
# 8. Which argument belongs to which function call?
higher_order_lambda = lambda f: lambda x: f(x)
g = lambda x: x * x
higher_order_lambda(2)(g)
#8.1
h(g)(2)
# 9.
t = lambda f: lambda x: f(f(f(x)))
t(lambda y: y + 1)(0)
# 10.
print_lambda = lambda z: print(z)
print_lambda
# 10.1
one_thousand = print_lambda(1000)
# 10.2
one_thousand
答案如下:
1. Function
2. 5
3. 3
4. Function
4.1 88
5. 16
6. 4
7. Error
8. Error
8.1 4
9. 3
10. Function
10.1 1000
10.2 Nothing