拓冰建站拓冰建站
首页 / 资讯中心 / 正文

Python 变量作用域详解

变量作用域详解处于编程范畴内, 变量作用域, 此实乃一个相当关键的概念, 其对变量的可见程度、以及生命周期予以确定。领会变量作用域, 会助力我们去编写出更为清晰、且更便于维护的代码之举规避变量名出现冲突以及出现意外的变量被修改的情况。本文会对变量作用域的基础概念、运用方法、常见实践以及最佳实践展开细致介绍, 借由富足的代码示例推动读者深入领会并高效运用这一概念。有着基础概念, 有着使用方法, 有着常见实践, 有着最佳实践, 有着小结, 有着参考资料, 有着基础概念, 这个基础概念是全局作用域。全程范围叫做在通篇程序文档里皆能够触及的变量。全局变量常常于模块的最上层予以界定, 也就是不在任何函数或者类以内。在下便是一个简易的例子:# 全局变量 global_variable 10 def print_global_variable(): print(global_variable) print_global_variable() # 输出: 10于这个例子里头, 存在着一个全局变量, 此全局变量在函数e的内部是能够直接去进行访问的。局部作用域局部作用域所言指之为, 于函数的内部予以定义的变量, 此等变量仅仅能够于函数的内部进行访问得到。在函数执行完毕之后, 局部变量会被实施销毁的操作。示例情况如下所示:def print_local_variable(): # 局部变量 local_variable 20 print(local_variable) print_local_variable() # 输出: 20 # 尝试在函数外部访问局部变量 # print(local_variable) # 这行代码会抛出 NameError在这个例子中是一个局部变量只能在 函数内部访问。嵌套作用域当在一个函数的内部, 嵌套着另外一个函数之时, 便会产生出嵌套作用域。内部的那个函数能够去访问外部函数的变量, 这些变量被称作是非局部变量。示例如下:def outer_function(): outer_variable 30 def inner_function(): print(outer_variable) inner_function() outer_function() # 输出: 30于这个例子里头, 存在着一个属于外部函数的局部变量, 然而内部函数能够对其进行访问。内置作用域解释器自带的作用域, 叫做内置作用域它涵盖了所有的内置函数以及内置异常, 像print、len等函数, 都归属于内置作用域, 我们能够直接运用这些内置函数, 无需进行额外的定义。使用方法全局变量和局部变量的定义在模块的顶层所进行定义的是全局变量, 有关局部变量, 其是要在函数的内部给予定义的, 示例情况如下:# 全局变量 global_num 100 def modify_variables(): # 局部变量 local_num 200 print(global_num) print(local_num) modify_variables()变量作用域的查找顺序在代码里面引用一个变量之际, 解释器将会依照以下顺序去查找变量:局部作用域, 那种被称为Local的, 嵌套作用域, 也就是那个样子的, 全局作用域, 就是这般的, 内置作用域, 名为Built - in的。这个顺序也被称为 LEGB 规则。示例如下# 全局变量 x 1 def outer(): x 2 def inner(): x 3 print(x) # 输出: 3 inner() outer()于这个例子里, 首先在局部作用域那里找到inner函数内部的x, 所以输出是3。和 关键字的使用global_var 5 def modify_global(): global global_var global_var 15 modify_global() print(global_var) # 输出: 15def outer_func(): nonlocal_var 25 def inner_func(): nonlocal nonlocal_var nonlocal_var 35 inner_func() print(nonlocal_var) # 输出: 35 outer_func()常见实践函数内部使用全局变量在某些状况范围内, 我们有可能需要于函数内部运用全局变量。能够借助关键字去更改全局变量的值。示例如下:total 0 def add_to_total(num): global total total num add_to_total(10) print(total) # 输出: 10嵌套函数中的变量作用域处于嵌套状态的函数能够对存在于外部的函数的变量予以访问, 而且能够运用特定的关键字去对这些变量作出修改。示例情况如下所示:def counter(): count 0 def increment(): nonlocal count count 1 return count return increment c counter() print(c()) # 输出: 1 print(c()) # 输出: 2最佳实践减少全局变量的使用在代码之中, 全局变量的存在, 会致使代码的耦合程度有所增加, 进而使得代码的可维护性能有所降低。所以, 应当尽可能地把变量的作用范围限定在那些需要加以使用的函数或者类的内部。合理使用 和虽说, 关键字能够便利地更改全局变量以及非局部变量, 然而过度运用会致使代码变得难以领会。唯有在必要情形下才运用这些关键字。遵循命名规范取用具备意义的变量名称, 防止变量名出现冲突情况能够采用命名约定方式, 像是运用前缀或者后缀去区分不同作用域的变量。小结处于重要概念范畴的变量作用域, 其对变量起到决定可见情况以及生命周期的作用。在理解全局作用域、局部作用域、嵌套作用域与内置作用域的基础上, 历经掌握相关关键字使用这一过程, 我们能够编写出更加逻辑清晰、更方便于进行维护的代码。与此同时, 遵循最佳规范能提升出代码的质量以及可维护的程度。参考资料
分享:

看完干货,该让你的企业上线了

免费需求沟通 · 48 小时内出具建站方案 · 河南本地可上门