python中的全局关键字行为



案例1

x = 0
def set_x(n):
    global x
    if n%2==0:
        x=n
    else:
        x = -1
set_x(10)
print(x)

预期输出:10实际输出:10

此输出是非常预期的,这就是global关键字的行为方式。

情况2

x = 0
def set_x(n):
    if n%2==0:
        global x
        x=n
    else:
        x = -1
set_x(10)
print(x)

预期输出:0实际输出:10

如果我对global的理解是正确的,则IF块中global的CC_7关键字如何影响Else Block中的本地关键字x。我相信这些是两个不同的块。

有这种行为的解释。

  1. global语句是一项声明,可为整个当前代码块提供。

    if不引入新的代码块

    a block 是作为单位执行的Python程序文本。以下是块:模块,功能主体和类定义。

  2. global是解析器的指示。

    if正在运行时评估,但是global被解析器拾取。解析器不在乎,无法评估if语句。

摘录摘自https://docs.python.org/3/reference/simple_stmts.html#the-global-statement和https://docs.pypython.org/3/3/reference-rreference-reference-lececution-/executiate-model.html.html。

换句话说,函数定义中的任何 global语句始终在整个函数中都适用。

相关内容

  • 没有找到相关文章

最新更新