show()函数为我提供15&;我理解,但为什么print(x)函数返回13 I don';我不懂,我是python新手,你能帮我吗

show()函数为我提供15&;我理解,但为什么print(x)函数返回13 I don';我不懂,我是python新手,你能帮我吗,python,python-3.x,jupyter-notebook,Python,Python 3.x,Jupyter Notebook,我试图理解python中的全局变量和局部变量,并尝试了下面提到的代码,但出于某种原因,show()语句运行良好,我理解这一点,但是show()下面的print(x)语句打印13,而我期望它打印15 def show(): x=10 x+=5 print(x) show() print(x) 函数外部的print语句应该根本不起作用。如果在函数内部定义变量,则不能在函数外部调用它 如果您的代码如下所示: x = 13

我试图理解python中的全局变量和局部变量,并尝试了下面提到的代码,但出于某种原因,show()语句运行良好,我理解这一点,但是show()下面的print(x)语句打印13,而我期望它打印15

 def show():
        x=10
        x+=5
        print(x)

    show()
    
    print(x)

函数外部的print语句应该根本不起作用。如果在函数内部定义变量,则不能在函数外部调用它

如果您的代码如下所示:

x = 13

def show():
    x = 10
    x += 5
    print(x)

show()

print(x)

第二条print语句仍将返回13,因为通过写入
x=10
,您正在函数内创建一个名为x的新变量,该变量在函数外将无法访问。

x可能是在函数之前定义的 尽量不要多次使用同一个变量名

假设在此之前没有定义x,则此代码应该可以工作

def show():
  x = 10
  x += 5
  return x
show()
print(x)

这就是全部代码吗?定义
show
函数之前是否初始化了
x
?无论代码缩进如何,我都会收到一个错误值15仅在函数内部可用,因为它的作用域是函数。它不会在函数外部修改x值。@12944qwerty如果我在show函数之前定义x,那么它会给出一个未绑定的局部错误。至于整个代码,我在jupyter笔记本中运行这个,这是整个单元,我得到一个递归错误或
namererror
,因为
x
从未定义过。如果我在整个代码之前加上
x=15
,它就会工作。这对我来说是不可复制的