模块中的可变范围

Kry*_*rix 0 python variables module

长话短说:为什么该程序输出“ 0”而不是“ 5”,如何使它输出“ 5”:main.py:

from mod import *
setvar(5)
printvar()
Run Code Online (Sandbox Code Playgroud)

mod.py:

var = 0
def setvar(x):
    var = x
def printvar():
    print("var =", var)
Run Code Online (Sandbox Code Playgroud)

rda*_*das 5

您当前在该setvar方法中的代码仅创建一个名为的新局部变量var,该局部变量被赋值为x

您正在修改全局变量,因此需要声明它。

var = 0
def setvar(x):
    global var
    var = x
def printvar():
    print("var =", var)
Run Code Online (Sandbox Code Playgroud)