Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/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
Python 在函数之间传递变量_Python - Fatal编程技术网

Python 在函数之间传递变量

Python 在函数之间传递变量,python,Python,关于使用以下代码将变量从函数传递到另一个函数,我有一个问题: def Hello(): good = "Nice" return good def Bye(): print (good) Hello() Bye() 它返回“全局名称”“良好”“未定义” 我怎样才能解决这个问题? 谢谢您需要了解范围。变量good仅存在于函数Hello的范围内-此函数之外的变量未知 在您的情况下,应该将Hello的返回值存储在变量中,然后将此变量传递给函数Bye: def Hello(

关于使用以下代码将变量从函数传递到另一个函数,我有一个问题:

def Hello():
    good = "Nice"
    return good

def Bye():
    print (good)

Hello()
Bye()
它返回“全局名称”“良好”“未定义”

我怎样才能解决这个问题?
谢谢

您需要了解范围。变量
good
仅存在于函数
Hello
的范围内-此函数之外的变量未知

在您的情况下,应该将
Hello
的返回值存储在变量中,然后将此变量传递给函数
Bye

def Hello():
    good = "Nice"
    return good

def Bye(g):
    print (g)

g = Hello()
Bye(g)
从:

作用域定义名称在块中的可见性。如果在块中定义了局部变量,则其范围包括该块。如果定义出现在功能块中,则范围将扩展到定义块中包含的任何块,除非包含的块为名称引入不同的绑定

[……]

如果根本找不到名称,将引发NameError异常。如果当前作用域是函数作用域,且名称引用的局部变量尚未绑定到使用该名称的点处的值,则会引发UnboundLocalError异常。UnboundLocalError是NameError的子类


您需要了解范围。变量
good
仅存在于函数
Hello
的范围内-此函数之外的变量未知

在您的情况下,应该将
Hello
的返回值存储在变量中,然后将此变量传递给函数
Bye

def Hello():
    good = "Nice"
    return good

def Bye(g):
    print (g)

g = Hello()
Bye(g)
从:

作用域定义名称在块中的可见性。如果在块中定义了局部变量,则其范围包括该块。如果定义出现在功能块中,则范围将扩展到定义块中包含的任何块,除非包含的块为名称引入不同的绑定

[……]

如果根本找不到名称,将引发NameError异常。如果当前作用域是函数作用域,且名称引用的局部变量尚未绑定到使用该名称的点处的值,则会引发UnboundLocalError异常。UnboundLocalError是NameError的子类


如果希望变量
good
可用于其他函数,而不必运行函数
Hello
,则应将good声明为全局函数

def Hello():
    global good
    good = 'Nice'
    ...

如果希望变量
good
可用于其他函数,而不必运行函数
Hello
,则应将good声明为全局函数

def Hello():
    global good
    good = 'Nice'
    ...

有一个更简单的解决方案更接近原始代码:

def Hello():
    good = "Nice"
    return good

def Bye():
    print (good)

good = Hello()
Bye()

Python将在局部作用域中定义的变量保持为局部变量,因此除非显式返回(并存储),否则无法在函数外部读取
good
。Python也不允许写入在更大范围内定义的变量,除非将它们作为输入参数传递或使用
global
指令。但是OP没有要求从另一个函数中写入good。Python确实允许从更大的范围读取变量。因此,您需要做的就是将变量
good
存储在更大的范围内,OP的
Hello
函数已经返回了该变量。

有一个更简单的解决方案,它更接近原始代码:

def Hello():
    good = "Nice"
    return good

def Bye():
    print (good)

good = Hello()
Bye()

Python将在局部作用域中定义的变量保持为局部变量,因此除非显式返回(并存储),否则无法在函数外部读取
good
。Python也不允许写入在更大范围内定义的变量,除非将它们作为输入参数传递或使用
global
指令。但是OP没有要求从另一个函数中写入good。Python确实允许从更大的范围读取变量。因此,您只需将变量
good
存储在更大的范围内,OP的
Hello
函数已经返回了该变量。

非常感谢。我有一个相当大的代码,没有工作,因为这一点,但现在它完全工作!!非常感谢!!很高兴它帮助了你。非常感谢你。我有一个相当大的代码,没有工作,因为这一点,但现在它完全工作!!非常感谢!!很高兴它帮助了你。