如何解决我现在知道我的所作所为
我试图在一个循环内创建变量。也就是说,我传递了一种变量模式,并且相应地创建了它们的值和变量的模式,并将其存储在文本文件中。
但是,我尝试了一些话题之外的方法,并且做到了:
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")
因此,这个问题现在没有歧义。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。