Python 我现在明白我做了什么

Python 我现在明白我做了什么,python,for-loop,lambda,variable-assignment,python-3.8,Python,For Loop,Lambda,Variable Assignment,Python 3.8,我试图在循环中创建变量。i、 我传递一个变量模式,它们的值模式和变量被相应地创建并存储在一个文本文件中 但是,我尝试了一些离题的东西,并做了以下几点: a = lambda a: a for i in ["a", "b"]: b = eval(i)(a) print(i) 结果是: a b 谁能解释一下这里发生了什么事 编辑: 我已经分析了它的答案。 我会把它贴在下面。 请验证它是否正确。 谢谢大家! 让我们先把问题分成几个部分 def

我试图在循环中创建变量。i、 我传递一个变量模式,它们的值模式和变量被相应地创建并存储在一个文本文件中

但是,我尝试了一些离题的东西,并做了以下几点:

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")
def a(n):
    return n
b = eval("a")(a)
print("a")
b = eval("b")(a)
print("b")
我们可以清楚地看到,输出是由于两个print语句

print("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 = eval("a")(a)
b = eval("b")(a)
这些陈述可以简单地表述如下:

def a(n):
    return n
b = a(a)
b = b(a)
def a(n):
    return n
def b(n):
    return n
print("a")
print("b")
def a(n):
    return n
b = a(a)
b = b(a)
def a(n):
    return n
def b(n):
    return n
print("a")
print("b")
声明

b = a(a)
b = a(a)
效果与

def b(n):
    return n
def b(n):
    return n
因此,整个代码可以这样表达:

def a(n):
    return n
b = a(a)
b = b(a)
def a(n):
    return n
def b(n):
    return n
print("a")
print("b")
def a(n):
    return n
b = a(a)
b = b(a)
def a(n):
    return n
def b(n):
    return n
print("a")
print("b")

因此,这个问题现在没有任何含糊不清的地方。

以下是你如何解构你的循环以便自己理解,请不要像评论中指出的那样去做

a=lambda a:a
#第一次迭代
i=“a”
b=评估(i)(a)
印刷品(一)
#第二次迭代
i=“b”
b=评估(i)(a)#评估(“b”)现在是
印刷品(一)#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")
def a(n):
    return n
b = eval("a")(a)
print("a")
b = eval("b")(a)
print("b")
我们可以清楚地看到,输出是由于两个print语句

print("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 = eval("a")(a)
b = eval("b")(a)
这些陈述可以简单地表述如下:

def a(n):
    return n
b = a(a)
b = b(a)
def a(n):
    return n
def b(n):
    return n
print("a")
print("b")
def a(n):
    return n
b = a(a)
b = b(a)
def a(n):
    return n
def b(n):
    return n
print("a")
print("b")
声明

b = a(a)
b = a(a)
效果与

def b(n):
    return n
def b(n):
    return n
因此,整个代码可以这样表达:

def a(n):
    return n
b = a(a)
b = b(a)
def a(n):
    return n
def b(n):
    return n
print("a")
print("b")
def a(n):
    return n
b = a(a)
b = b(a)
def a(n):
    return n
def b(n):
    return n
print("a")
print("b")

因此,这个问题现在没有歧义了。

你在[“a”,“b”](a和b)之间循环,然后打印出来。为不同的结果打印B“我试图在循环中生成变量。”-不要。听从我的建议。我支持提名:用这样的处理方法制造个体变量是不必要的,也是危险的。完成更多数据结构的教程:列表、dicts、类等。这样您就有了适合您的问题的工具。@Prune谢谢!顺便说一句,我只是在做一个项目的时候偶然发现了这一点,并弄明白了第二天发生了什么。顺便说一句,非常感谢!确切地说,他们需要做
print(b)
才能得到任何有意义的东西