Python 功能问题中的功能
我是一个Python和通用编程的noob。只做了大约两周的编程。我有一个关于python函数的快速问题。 有人能解释一下为什么会这样:Python 功能问题中的功能,python,python-3.x,Python,Python 3.x,我是一个Python和通用编程的noob。只做了大约两周的编程。我有一个关于python函数的快速问题。 有人能解释一下为什么会这样: import random valuea = valueb = valuec = "0" stationary = "X" def func1(): print("",valuea,"\n",valueb,"\n",valuec) return random.seed(0) random_list = ("valuea","valueb","va
import random
valuea = valueb = valuec = "0"
stationary = "X"
def func1():
print("",valuea,"\n",valueb,"\n",valuec)
return
random.seed(0)
random_list = ("valuea","valueb","valuec")
random_result = random.choice(random_list)
locals()[random_result] = stationary
func1()
结果:
0
X
0
0
0
0
但是,这并不起作用:
def func1():
import random
valuea = valueb = valuec = "0"
stationary = "X"
def func2():
print("",valuea,"\n",valueb,"\n",valuec)
return
random.seed(0)
random_list = ("valuea","valueb","valuec")
random_result = random.choice(random_list)
locals()[random_result] = stationary
func2()
return
func1()
结果:
0
X
0
0
0
0
在第二种情况下,是否有一种方法可以让它在函数中工作?让我们看一个更简单的例子:
def func1():
a = 0
def func2():
print(a)
locals()['a'] = 1
print(a)
func2()
func1()
print(a)
这个输出
0
0
1
i、 e.两个函数的局部变量a
未修改。查看一个人的文档可以发现“…更改可能不会影响解释器使用的局部变量和自由变量的值。”因此,使用它更改局部变量的值可能有效,也可能无效
如果要将值与名称关联,我建议使用字典:
def func1():
d = {'a' : 0}
def func2():
print(d['a'])
d['a'] = 1
print(d['a'])
func2()
func1()
print(d['a'])
这将导致以下输出:
1
1
Traceback (most recent call last):
File "...", line 10, in <module>
print(d['a'])
NameError: name 'd' is not defined
1
1.
回溯(最近一次呼叫最后一次):
文件“…”,第10行,在
打印(d['a'])
NameError:未定义名称“d”
最后一行引起的异常是正确的行为,因为d
仅在func1
中定义。因此,在func1
的范围之外无法访问它
您可以阅读更多有关示波器的信息,例如…非常感谢!再说一次:)Np——不管怎么说,一开始就让你看当地人的东西可能是我的错。最好从一开始就向您展示列表变量。