Python局部与全局变量作用域及global关键字详解
本文详细解析Python中局部变量与全局变量的作用域规则。通过代码示例说明如何定义和使用全局变量,重点讲解global关键字在函数内部修改全局变量的机制,以及nonlocal关键字处理嵌套函数变量的用法,帮助开发者避免变量命名冲突并正确管理数据状态。
在Python编程中,理解局部变量与全局变量的区别至关重要。局部变量仅在定义它的函数内部有效,而全局变量则在整个程序生命周期内可见。以下代码片段展示了如何定义全局变量name,并在函数change_name中尝试修改它。注意,若未在函数内使用global关键字声明,直接赋值会创建一个新的局部变量,而非修改全局变量。
# name='lhf'
# def change_name():
# # global name
# name='帅了一比'
# print('change_name',name)
#
#
# change_name()
# print(name)
# name='lhf'
#
# def change_name():
# name1='帅了一比'
# name2='帅了一比'
# name3='帅了一比'
# print('change_name',name)
#
# change_name()
# globals
# NAME = "杠娘"
#
# def yangjian():
# # NAME = "史正文"
# global NAME
# NAME = "小东北"
# print('我要搞', NAME)
#
# def qupengfei():
# NAME = "基"
# print('我要搞', NAME)
#
# yangjian()
# qupengfei()
# NAME = "产品经理"
# def yangjian():
# # NAME = "史正文"
# global NAME # 已经声明,NAME就是全局的的那个变量
# print('我要搞', NAME)
# NAME = "小东北" # 修改 全局的变量
# print('我要搞', NAME)
# def qupengfei():
# NAME = "基"
# print('我要搞', NAME)
# 如果函数的内容无global关键字,
# - 有声明局部变量
# NAME = ["产品经理","廖波湿"]
# def qupengfei():
# NAME = "自己"
# print('我要搞', NAME)
# qupengfei()
# - 无声明局部变量
# NAME = ["产品经理","廖波湿"]
# def qupengfei():
# NAME.append('XXOO')
# print('我要搞', NAME)
# qupengfei()
# 如果函数的内容有global关键字
# - 有声明局部变量
# NAME = ["产品经理","廖波湿"]
# def qupengfei():
# global NAME
# NAME = "自己"
# print('我要搞', NAME)
# qupengfei()
# 错误示例
# NAME = ["产品经理","廖波湿"]
# def qupengfei():
# NAME = "自己"
# global NAME
# print('我要搞', NAME)
# qupengfei()
# - 无声明局部变量
# NAME = ["产品经理","廖波湿"]
# def qupengfei():
# global NAME
# NAME = ["阿毛"]
# NAME.append('XXOO')
# print('我要搞', NAME)
# qupengfei()
######## 全局变量变量名大写
######## 局部变量变量名小写
# 优先读取局部变量,能读取全局变量,无法对全局变量重新赋值 NAME=“fff”,
# 但是对于可变类型,可以对内部元素进行操作
# 如果函数中有global关键字,变量本质上就是全局的那个变量,可读取可赋值 NAME=“fff”
# qupengfei()
# yangjian()
NAME = ["产品经理","廖波湿"]
# def yangjian():
# # NAME = "史正文"
# global NAME # 已经声明,NAME就是全局的的那个变量
# print('我要搞', NAME)
# NAME = "小东北" # 修改 全局的变量
# print('我要搞', NAME)
# def qupengfei():
# # NAME = "aS"
# NAME.append('天扎龙')
# print('我要搞', NAME)
#
# qupengfei()
# NAME = ["产品经理","廖波湿"]
# def qupengfei():
# name = "自己"
# global NAME
# print('我要搞', NAME)
# qupengfei()
# NAME = '海风'
#
# def huangwei():
# name = "黄伟"
# print(name)
# def liuyang():
# name = "刘洋"
# print(name)
# def nulige():
# name = '沪指花'
# print(name)
# print(name)
# nulige()
# liuyang()
# print(name)
#
# huangwei()
# name = "刚娘"
#
# def weihou():
# name = "陈卓"
# def weiweihou():
# nonlocal name # nonlocal,指定上一级变量,如果没有就继续往上直到找到为止
# name = "冷静"
#
# weiweihou()
# print(name)
#
# print(name)
# weihou()
# print(name)
# 刚娘
# 冷静
# 刚娘
通过上述示例,我们可以总结出Python变量作用域的核心规则:首先,函数内部定义的变量默认为局部变量;其次,若需在函数内部修改全局变量,必须使用global关键字显式声明;最后,对于嵌套函数,可使用nonlocal关键字引用外层函数的变量。掌握这些规则有助于编写更清晰、可维护的代码,避免意外覆盖全局状态。
以上所述是Python中常量和变量代码的详细解析,旨在帮助读者深入理解变量作用域机制。希望这些内容能对您的学习有所帮助。如果您有任何疑问或需要进一步探讨,欢迎留言,我们将及时回复。在此,也非常感谢大家对本站网站的支持!
免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









