Python 无法将一个变量值从一个函数传递到另一个函数
在我的代码中,在声明全局变量prime之后,它应该从第一个变量中获取值并添加到第二个变量中,在执行之后,我应该得到一个类似于[1,2,3,7]的数组。但是当我打印第二个函数时,我只得到[3,7]。知道我错在哪里吗?这是我的密码:Python 无法将一个变量值从一个函数传递到另一个函数,python,python-2.7,Python,Python 2.7,在我的代码中,在声明全局变量prime之后,它应该从第一个变量中获取值并添加到第二个变量中,在执行之后,我应该得到一个类似于[1,2,3,7]的数组。但是当我打印第二个函数时,我只得到[3,7]。知道我错在哪里吗?这是我的密码: import numpy as np prime = [] nprime = [] def first(): global prime global nprime prime = np.append(1, 2) nprime
import numpy as np
prime = []
nprime = []
def first():
global prime
global nprime
prime = np.append(1, 2)
nprime = np.append(6, 4)
return (prime, nprime)
def second():
global prime
prime = np.append(3, 7)
return prime
A = second()
print A
假设您确实在程序中调用了
first()
,那么问题的发生是因为您这样做了-
np.append(3,7)
您正在创建一个新列表-[3,7]
-并将其分配给prime
变量。这不会附加到现有的素数
我甚至不知道为什么要使用np.append()
,如果要将单个值附加到简单列表,请使用list.append()
,如果要将多个值附加到简单列表,请使用list.extend()
。范例-
prime = []
nprime = []
def first():
global prime
global nprime
prime.extend([1, 2])
nprime.extend([6, 4])
return (prime, nprime)
def second():
global prime
prime.extend([3, 7])
return prime
first()
A = second()
print A
prime = []
nprime = []
def first(prime, nprime):
prime.extend([1, 2])
nprime.extend([6, 4])
return (prime, nprime)
def second(prime):
prime.extend([3, 7])
return prime
prime, nprime = first(prime)
prime = second(prime)
print prime
也就是说,不推荐使用全局变量,一种更简单的方法是从第一个函数返回值,并将其作为参数传递给第二个函数,例如-
prime = []
nprime = []
def first():
global prime
global nprime
prime.extend([1, 2])
nprime.extend([6, 4])
return (prime, nprime)
def second():
global prime
prime.extend([3, 7])
return prime
first()
A = second()
print A
prime = []
nprime = []
def first(prime, nprime):
prime.extend([1, 2])
nprime.extend([6, 4])
return (prime, nprime)
def second(prime):
prime.extend([3, 7])
return prime
prime, nprime = first(prime)
prime = second(prime)
print prime
这是一个非常简单的示例,不确定您想用它做什么。例如,您的示例代码不首先调用
first
为什么要使用np.append()
?但我甚至必须调用第一个函数吗?我将数组设置为全局数组@AnthonySottile如果你想让数组中放入1和2的代码运行(在first
中的代码),你需要通过调用first()
来运行该代码(也就是说,即使你这样做了,你也可以通过在prime=np.append(3,7)
中赋值来丢弃prime
的值