亿迅智能制造网
工业4.0先进制造技术信息网站!
首页 | 制造技术 | 制造设备 | 工业物联网 | 工业材料 | 设备保养维修 | 工业编程 |
home  MfgRobots >> 亿迅智能制造网 >  >> Industrial programming >> Python

理解Python全局、局部与非局部变量

理解Python全局、局部与非局部变量

掌握Python中全局、局部、非局部变量的用法,知晓何时应用各类变量以编写清晰、可维护代码。

视频:Python局部与全局变量

全局变量

Python中,模块层级(函数外)声明的变量是 全局变量。模块任处可读,但函数内修改需用 global 关键字声明。

示例:创建和读取全局变量

x = "global"
def foo():
    print("x inside:", x)
foo()
print("x outside:", x)

输出

x inside: global
x outside: global

未声明全局就重新赋值 x 导致 UnboundLocalError:

x = "global"
def foo():
    x = x * 2
    print(x)
foo()

输出

UnboundLocalError: local variable 'x' referenced before assignment

函数内修改全局变量,用 global 关键字:

x = "global"
def foo():
    global x
    x = x * 2
    print(x)
foo()

输出

globalglobal

局部变量

局部变量 定义在函数体内,仅在函数执行期间存在。函数外不可访问。

示例:在作用域外访问局部变量

def foo():
    y = "local"
foo()
print(y)

输出

NameError: name 'y' is not defined

正确定义和使用局部变量:

def foo():
    y = "local"
    print(y)
foo()

输出

local

全局与局部变量结合

同一模块常同时使用两种作用域。global 关键字确保变量指向模块级实例。

x = "global "
def foo():
    global x
    y = "local"
    x = x * 2
    print(x)
    print(y)
foo()

输出

global global
local

局部变量与全局变量同名时,它们独立:

x = 5
def foo():
    x = 10
    print("local x:", x)
foo()
print("global x:", x)

输出

local x: 10
global x: 5

非局部变量

嵌套函数可用 nonlocal 关键字访问和修改外层(非全局)作用域变量。

def outer():
    x = "local"
    def inner():
        nonlocal x
        x = "nonlocal"
        print("inner:", x)
    inner()
    print("outer:", x)
outer()

输出

inner: nonlocal
outer: nonlocal

注意: 在内部函数更新非局部变量会更新外部函数作用域中的该变量。

Python

  1. C 语言变量、常量与字面量完全指南
  2. Python关键字与标识符:掌握保留字与命名规范
  3. Python语句、缩进与注释:清晰指南
  4. Python变量、常量与字面量完全指南
  5. 精通Python类型转换与强制转换:综合指南
  6. 精通Python输入输出与模块导入:实战指南
  7. 精通Python global关键字:用法、时机与最佳实践
  8. 精通 Python 数字、类型转换与数学运算
  9. 精通 Python 目录与文件操作
  10. 精通 Python 错误与内置异常
  11. Python 获取当前日期和时间:实用指南
  12. 理解 Python type() 与 isinstance():实战示例详解