我明白我做了什么,现在
I do understand what I did, now
我试图在循环中创建变量。即我传递了一个变量模式,它们的值和变量的模式相应地创建并存储在一个文本文件中。
但是,我尝试了一些题外话并做了这个:
a = lambda a: a
for i in ["a", "b"]:
b = eval(i)(a)
print(i)
输出是:
a
b
谁能解释一下这里发生了什么?
编辑:
我已经分析了它的答案。
我将其粘贴在下面。
请验证是否正确。
谢谢!
让我们先把问题分成几个部分。
def a(n):
return n
b = eval("a")(a)
print("a")
b = eval("b")(a)
print("b")
我们可以清楚地看到输出是由于两个打印语句。
print("a")
print("b")
因此,其余语句在输出中不起作用。
def a(n):
return n
b = eval("a")(a)
b = eval("b")(a)
这些陈述可以简单地这样表达:
def a(n):
return n
b = a(a)
b = b(a)
声明
b = a(a)
与
效果相同
def b(n):
return n
因此整个代码可以这样写:
def a(n):
return n
def b(n):
return n
print("a")
print("b")
所以这个问题现在没有歧义了。
您可以通过以下方式解构循环以便自己理解,请不要按照评论中指出的那样去做。
a = lambda a: a
# First iteration
i = "a"
b = eval(i)(a)
print(i) # a
# Second iteration
i = "b"
b = eval(i)(a) # eval("b") is now <function __main__.<lambda>(a)>
print(i) # b
您正在打印变量 i(它取值“a”和“b”,因为您遍历 [“a”,“b”])。如果您想查看变量 b 取哪些值,请打印 b:
a = lambda a: a
for i in ["a", "b"]:
b = eval(i)(a)
print(b)
让我们先把问题分成几个部分。
def a(n):
return n
b = eval("a")(a)
print("a")
b = eval("b")(a)
print("b")
我们可以清楚地看到输出是由于两个打印语句。
print("a")
print("b")
因此,其余语句在输出中不起作用。
def a(n):
return n
b = eval("a")(a)
b = eval("b")(a)
这些陈述可以简单地这样表达:
def a(n):
return n
b = a(a)
b = b(a)
声明
b = a(a)
与
效果相同
def b(n):
return n
因此整个代码可以这样写:
def a(n):
return n
def b(n):
return n
print("a")
print("b")
所以这个问题现在没有歧义了。
我试图在循环中创建变量。即我传递了一个变量模式,它们的值和变量的模式相应地创建并存储在一个文本文件中。
但是,我尝试了一些题外话并做了这个:
a = lambda a: a
for i in ["a", "b"]:
b = eval(i)(a)
print(i)
输出是:
a
b
谁能解释一下这里发生了什么?
编辑: 我已经分析了它的答案。 我将其粘贴在下面。 请验证是否正确。 谢谢!
让我们先把问题分成几个部分。
def a(n):
return n
b = eval("a")(a)
print("a")
b = eval("b")(a)
print("b")
我们可以清楚地看到输出是由于两个打印语句。
print("a")
print("b")
因此,其余语句在输出中不起作用。
def a(n):
return n
b = eval("a")(a)
b = eval("b")(a)
这些陈述可以简单地这样表达:
def a(n):
return n
b = a(a)
b = b(a)
声明
b = a(a)
与
效果相同def b(n):
return n
因此整个代码可以这样写:
def a(n):
return n
def b(n):
return n
print("a")
print("b")
所以这个问题现在没有歧义了。
您可以通过以下方式解构循环以便自己理解,请不要按照评论中指出的那样去做。
a = lambda a: a
# First iteration
i = "a"
b = eval(i)(a)
print(i) # a
# Second iteration
i = "b"
b = eval(i)(a) # eval("b") is now <function __main__.<lambda>(a)>
print(i) # b
您正在打印变量 i(它取值“a”和“b”,因为您遍历 [“a”,“b”])。如果您想查看变量 b 取哪些值,请打印 b:
a = lambda a: a
for i in ["a", "b"]:
b = eval(i)(a)
print(b)
让我们先把问题分成几个部分。
def a(n):
return n
b = eval("a")(a)
print("a")
b = eval("b")(a)
print("b")
我们可以清楚地看到输出是由于两个打印语句。
print("a")
print("b")
因此,其余语句在输出中不起作用。
def a(n):
return n
b = eval("a")(a)
b = eval("b")(a)
这些陈述可以简单地这样表达:
def a(n):
return n
b = a(a)
b = b(a)
声明
b = a(a)
与
效果相同def b(n):
return n
因此整个代码可以这样写:
def a(n):
return n
def b(n):
return n
print("a")
print("b")
所以这个问题现在没有歧义了。