Python自由之路(四)变量作用域

简介: Python中,在一个函数里,当搜索一个标识符的时候,先从函数你的局部变量开始搜索,如果局部作用域没有,再到模块所在的命名空间下的全局域找,再找不到就抛出NameError异常。一个变量的作用域与它寄住的名称空间有关(下面会讨论到)。
Python中,在一个函数里,当搜索一个标识符的时候,先从函数你的局部变量开始搜索,如果局部作用域没有,再到模块所在的命名空间下的全局域找,再找不到就抛出NameError异常。一个变量的作用域与它寄住的名称空间有关(下面会讨论到)。
 当函数中存在一个 变量 example,而全局域中也存在一个变量example,那么这时候规则会变得很有趣。但也很容易弄错。来看几个例子吧。。。
 _global="I'm a global variable"
 def testgloba1(): 
     print _global
 def testgloba2():
     print _global
      _global='123'
Testglobal2()异常:UnboundLocalError: local variable '_global' referenced before assignment
当在函数中创建了与全局域中同名的局部变量_global时,需要特别注意在_global之前是否又引用了同名的全局变量_global,如果是这样就会引发变量未声明的异常,接下来看看解释器怎样解决这个问题,我们引入了global关键字,在函数内部直接传递全局变量的引用:
 print _global ,id(_global)
def testgloba3():
  global _global   #1.直到再次声明同名变量_global之前的所有_global
      print _global,id(_global) #2.都是对全局变量_global的引用
      _global='123' 
      print _global,id(_global)
如果在#2之后还要对全局变量进行访问,那么最好就是在#1之后为全局_global定义一个新的别名。
注意:局部同名变量不能在global关键字之前使用,否则会有警告,而且结果也不正确。
 print _global ,id(_global)
def testgloba3():
  _global='123' 
      print _global,id(_global)
  global _global   #SyntaxWarning
      print _global,id(_global)
SyntaxWarning: name '_global' is assigned to before global declaration
Global关键字的还有一个作用就是在函数内部可以声明全局域的变量,看例子:
def testgloba4():
  global _my_global
  _my_global = "I'm a global variable from testglobal4()"
 Print _my_global
目录
相关文章
|
1月前
|
Python
Python系列(5)—— 作用域
Python系列(5)—— 作用域
|
1月前
|
存储 开发者 索引
python怎么判断变量的数据类型
python怎么判断变量的数据类型
29 0
|
1月前
|
Python
Python新手常见问题三:如何正确理解Python作用域?
在学习Python编程的过程中,理解和掌握作用域(Scope)的概念至关重要。它直接影响到变量的可见性、生命周期以及程序结构的设计。然而,对于许多初学者而言,Python的作用域规则有时可能显得有些神秘和复杂。本文将深入剖析Python作用域的基本原理,并通过实例讲解如何在实际编程中正确应用。
20 1
|
1月前
|
存储 算法 开发者
Python新手常见问题二:如何正确理解和使用变量?
在Python编程的世界中,变量是程序设计的基础元素之一。它就像是一个可以存储数据的容器,帮助我们管理和操作程序中的各种信息。对于初学者而言,正确理解和使用变量至关重要,因为它是构建复杂逻辑、实现高效算法以及创建实用程序的关键所在。本文将带领Python新手深入探讨变量的本质,并通过实例讲解如何在实际编程场景中有效运用。
23 1
|
1天前
|
索引 Python
Python高维变量选择:SCAD平滑剪切绝对偏差惩罚、Lasso惩罚函数比较
Python高维变量选择:SCAD平滑剪切绝对偏差惩罚、Lasso惩罚函数比较
|
3天前
05-python之函数-函数的定义/函数的参数/函数返回值/函数说明文档/函数的嵌套使用/函数变量的作用域
05-python之函数-函数的定义/函数的参数/函数返回值/函数说明文档/函数的嵌套使用/函数变量的作用域
|
27天前
|
存储 Python
Python变量与数据类型探秘
本文介绍了Python编程中的核心概念——变量和数据类型。变量是存储数据的标识符,无需预声明类型,类型由赋值自动确定。命名规则要求变量名具有描述性,以字母或下划线开头,区分大小写。Python支持多种数据类型:数值(整数、浮点数、复数)、字符串、列表、元组、字典和集合。理解这些基本概念和类型特性对编写高效Python代码至关重要。
|
29天前
|
存储 算法 数据挖掘
【Python 基础教程 25】全面入门指南:深度解析Python3的命名空间,作用域及变量使用教程
【Python 基础教程 25】全面入门指南:深度解析Python3的命名空间,作用域及变量使用教程
50 0
|
1月前
|
数据处理 索引 Python
python变量以及数据类型(四)
python变量以及数据类型(四)
19 1
|
1月前
|
存储 Python
python变量以及数据类型(三)
python变量以及数据类型(三)
23 2