Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/286.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 功能问题中的功能_Python_Python 3.x - Fatal编程技术网

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

我是一个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","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——不管怎么说,一开始就让你看当地人的东西可能是我的错。最好从一开始就向您展示列表变量。