在python 3中的方法中更改全局字符串

Ste*_*ron 2 python string methods definition

我用谷歌搜索了我的问题,但没有找到答案。我的问题是:我正在尝试在 python 3 中的方法中更改字符串。我正在尝试这样的小代码:

number_a = 0
number_b = 1

word = 'empty'

def something():
    if number_a > number_b
        word = 'hello'
    else: 
        word = 'goodbye'

something()
print(word)
Run Code Online (Sandbox Code Playgroud)

Python 给我的输出是

empty
Run Code Online (Sandbox Code Playgroud)

我在这里做错了什么?

dsc*_*ose 5

函数假定变量是局部变量,并且默认情况下赋值将创建一个新的局部变量来包含它。非局部的全局变量不受影响。

这是可取的。否则,您必须为所有内容创建唯一的名称,并且总是冒着意外覆盖重要全局变量的风险。

您可以通过明确告诉 Python 它是您要为其分配值的全局变量来更改此行为。为此,使用global关键字将本地名称显式链接到全局变量:

def something():
    global word

    if number_a > number_b
        word = 'hello'
    else: 
        word = 'goodbye'
Run Code Online (Sandbox Code Playgroud)

有时这是必要的。但是,在您的简单示例中,最好只返回值并在函数外部进行赋值。这样函数就不会绑定到周围的命名空间:

def something(number_a, number_b):
    if number_a > number_b
        return 'hello'
    else: 
        return 'goodbye'

word = something(a, b)
Run Code Online (Sandbox Code Playgroud)