Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/343.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 2.7 - Fatal编程技术网

Python 无法将一个变量值从一个函数传递到另一个函数

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

在我的代码中,在声明全局变量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 = 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
的值