变量作用域是指变量在程序中的可访问范围。在Python中,变量的作用域分为全局作用域和局部作用域。
不可变对象是指对象在创建后其值不能被改变,例如整数、字符串和元组。可变对象是指对象在创建后其值可以被改变,例如列表和字典。
下面是一个使用 += 运算符的示例,演示了变量作用域和不可变与可变对象的特点:
# 全局作用域
global_variable = 10
def my_function():
# 局部作用域
local_variable = 5
print("局部变量:", local_variable)
# 修改全局变量
global global_variable
global_variable += 1
print("全局变量:", global_variable)
my_function()
# 输出:
# 局部变量: 5
# 全局变量: 11
在上面的示例中,变量 global_variable
是一个全局变量,在函数 my_function
中通过使用 global
关键字可以将其转为全局作用域,并可以使用 += 运算符对其进行修改。
需要注意的是,不可变对象在进行操作时会创建一个新的对象,而不会修改原始对象的值。因此,在 global_variable += 1
中,实际上创建了一个新的整数对象,并将全局变量 global_variable
指向新的对象。
如果想要在函数中修改全局的可变对象(如列表),则无需使用 global
关键字,因为可变对象是通过引用传递的。以下是一个示例:
# 全局作用域
my_list = [1, 2, 3]
def modify_list():
# 直接修改全局列表
my_list.append(4)
modify_list()
print(my_list)
# 输出:[1, 2, 3, 4]
在上面的示例中,函数 modify_list
直接修改了全局变量 my_list
,因为列表是可变对象,通过引用传递。
上一篇:变量作用域狭窄与性能问题?
下一篇:变量作用域,无法访问该值。