Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/2.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
Python3-使用函数参数作为变量名_Python_List_Python 3.x - Fatal编程技术网

Python3-使用函数参数作为变量名

Python3-使用函数参数作为变量名,python,list,python-3.x,Python,List,Python 3.x,我有一个函数可以创建不同形式的数组,但我不知道如何区分它们。类似的事情可能发生吗 def array_creator(nameArray): nameArray = [0,1,2] array_creator(a) print(a) # prints [0,1,2] 目前,我总是运行函数,然后手动分配变量来存储数组。 谢谢 为了使示例有效,您需要在使用变量之前定义变量a。例如,a=[]。然而,您的示例无法按您希望的方式工作。原因是您将一个新对象([1,2,3])分配给第2行中的na

我有一个函数可以创建不同形式的数组,但我不知道如何区分它们。类似的事情可能发生吗

def array_creator(nameArray):
    nameArray = [0,1,2]

array_creator(a)
print(a)  # prints [0,1,2]
目前,我总是运行函数,然后手动分配变量来存储数组。
谢谢

为了使示例有效,您需要在使用变量之前定义变量
a
。例如,
a=[]
。然而,您的示例无法按您希望的方式工作。原因是您将一个新对象(
[1,2,3]
)分配给第2行中的
nameArray
变量。这样,您就失去了对对象
a
的引用。但是,可以从函数内部更改对象
a

def array_creator(nameArray):
    nameArray.extend([0,1,2])

a = []
array_creator(a)
print(a)  # prints [0,1,2]

这会奏效的。查看以获取更多信息。

要使示例发挥作用,您需要在使用变量之前定义变量
a
。例如,
a=[]
。然而,您的示例无法按您希望的方式工作。原因是您将一个新对象(
[1,2,3]
)分配给第2行中的
nameArray
变量。这样,您就失去了对对象
a
的引用。但是,可以从函数内部更改对象
a

def array_creator(nameArray):
    nameArray.extend([0,1,2])

a = []
array_creator(a)
print(a)  # prints [0,1,2]

这会奏效的。查看以获取更多信息。

在Python中,您可以通过从函数返回一个值并将该值绑定到本地名称来完成此操作,即:

def array_creator():
    return [0, 1, 2]

a = array_creator()

在Python中,可以通过从函数返回一个值并将该值绑定到本地名称来实现这一点,即:

def array_creator():
    return [0, 1, 2]

a = array_creator()
Python没有“输出参数”,因此普通赋值只会更改局部变量的绑定,而不会修改任何值,也不会更改函数外部变量的绑定

def array_creator(nameArray):
    nameArray.extend([0,1,2])

a = []
array_creator(a)
print(a)  # prints [0,1,2]
但是,
list
s是可变的,因此如果要修改参数,请执行以下操作:

nameArray[:] = [0,1,2]
这将用
0,1,2
替换
nameArray
的内容(如果
nameArray
列表
,则有效)

另一种方法是让函数简单地返回要指定的值:

def array_creator():
    values = [0, 1, 2]
    return values

my_arr = array_creator()
最后,如果函数想要修改
全局
/
非局部
变量,则必须将其声明为:

a = [1,2,3]

def array_creator():
    global a
    a = [0,1,2]

print(a)   # [1,2,3]
array_creator()
print(a)   # [0,1,2]
或:

但是请注意,以这种方式使用全局变量通常是不好的做法,因此请尽量避免。

Python没有“输出参数”,因此简单赋值只会更改局部变量的绑定,而不会修改任何值,也不会更改函数外变量的绑定

def array_creator(nameArray):
    nameArray.extend([0,1,2])

a = []
array_creator(a)
print(a)  # prints [0,1,2]
但是,
list
s是可变的,因此如果要修改参数,请执行以下操作:

nameArray[:] = [0,1,2]
这将用
0,1,2
替换
nameArray
的内容(如果
nameArray
列表
,则有效)

另一种方法是让函数简单地返回要指定的值:

def array_creator():
    values = [0, 1, 2]
    return values

my_arr = array_creator()
最后,如果函数想要修改
全局
/
非局部
变量,则必须将其声明为:

a = [1,2,3]

def array_creator():
    global a
    a = [0,1,2]

print(a)   # [1,2,3]
array_creator()
print(a)   # [0,1,2]
或:


但是请注意,以这种方式使用全局变量通常是不好的做法,所以请尽量避免使用。

但是为什么不直接使用
a=[0,1,2]
?为什么从函数内部分配给全局作用域会让人感到困惑?为什么不直接返回数组而不是使用“输出参数”?为什么不直接执行
a=[0,1,2]
?为什么从函数内部分配给全局作用域会让人困惑?为什么不直接返回数组,而不是使用“输出参数”?