`
ooaer
  • 浏览: 138678 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

Python作用域(转)

 
阅读更多
python 变量作用域
分类: Python 2011-07-23 11:20 1143人阅读 评论(1) 收藏 举报
原地址:http://blog.csdn.net/lovingprince/article/details/6627555
目录(?)[+]
几个概念:
python能够改变变量作用域的代码段是def、class、lamda.
if/elif/else、try/except/finally、for/while 并不能涉及变量作用域的更改,也就是说他们的代码块中的变量,在外部也是可以访问的
变量搜索路径是:本地变量->全局变量


python能够改变变量作用域的代码段是def、class、lamda.
[python] view plaincopyprint?
def scopetest():  
    localvar=6;  
    print(localvar)  
    
scopetest()  

#print(localvar) #去除注释这里会报错,因为localvar是本地变量 
if/elif/else、try/except/finally、for/while
[python] view plaincopyprint?
while True:  
    newvar=8  
    print(newvar)  
    break;  
  
print(newvar)  
  
try:  
    newlocal=7  
    raise Exception  
except:  
    print(newlocal)#可以直接使用哦  

输出结果:8 8 7
可见这个关键字中定义变量,他们的作用域跟外部是一致的,这个跟Java的作用域概念有点不一样。
变量搜索路径是:本地变量->全局变量
[python] view plaincopyprint?
def scopetest():  
    var=6;  
    print(var)#  
      
var=5   
print(var)  
scopetest()  
print(var)  

输出结果:5 6 5
这里var 首先搜索的是本地变量,scopetest()中 var=6相当于自己定义了一个局部变量,赋值为6. 当然如果的确要修改全局变量的值,则需要如下:
[python] view plaincopyprint?
def scopetest():  
    global var   
    var=6;  
    print(var)#  
      
var=5   
print(var)  
scopetest()  
print(var) 

输出结果:5 6 6
再看一种这种情况:
[python] view plaincopyprint?
def scopetest():  
    var=6;  
    print(var)#  
    def innerFunc():  
        print(var)#look here  
    innerFunc()  
      
var=5   
print(var)  
scopetest()  
print(var)  

输出结果:5 6 6 5
根据调用顺序反向搜索,先本地变量再全局变量,例如搜先在innerFunc中搜索本地变量,没有,好吧,找找调用关系上一级scopetest,发现本地变量var=6,OK,就用他了。
分享到:
评论

相关推荐

    关于Python作用域自学总结

    Python中的作用域是编程中非常重要的概念,它决定了变量的可见性和生命周期。作用域决定了代码块内部和外部的变量如何访问和使用。Python遵循LEGB规则来决定变量的查找顺序,这四个词分别是Local(局部)、Enclosed...

    Python语言基础:作用域.pptx

    Python语言的基础之一是作用域,它是程序中定义变量的一个范围,决定了变量的可访问性。作用域决定了在程序的不同部分可以使用哪些变量名。理解作用域对于编写清晰、无误的代码至关重要。 1. **作用域(Scope)** ...

    python中变量作用域及嵌套作用域.pdf

    Python 的变量名解析机制也称为 LEGB 法则,具体如下:当在函数中使用未确定的变量名时,Python 搜索四个作用域:本地作用域(L),之后是上一层嵌套结构中 def 或 lambda 的本地作用域(E),之后是全局作用域(G)...

    学习python中变量作用域及嵌套作用域.pdf

    Python 中的变量作用域可以分为四个层次:局部作用域(Local scope)、外部作用域(Enclosing scope)、全局作用域(Global scope)和内置作用域(Built-in scope)。 局部作用域是指当前函数或代码块中的变量作用...

    Python变量作用域LEGB用法解析

    ### Python变量作用域LEGB规则详解 #### 一、引言 在编程语言中,变量的作用域是指变量可被访问的区域。对于Python这门语言来说,了解变量作用域至关重要,因为它直接影响到程序的可读性和维护性。本文将详细介绍...

    python中变量作用域及嵌套作用域.docx

    `g`函数内部的`print(a)`会输出2,这是因为根据作用域查找规则,`a`首先在`g`函数内部查找,未找到后转而在其直接外部作用域`f`函数中找到。 #### 五、闭包 闭包是一种特殊的函数,它可以记住并访问其定义环境中的...

    python 包、模块、函数与变量作用域视频讲解

    在Python编程中,包、模块、函数和变量作用域是四个至关重要的概念,对于理解和组织代码至关重要。 首先,我们来详细探讨一下“模块”(Module)。在Python中,模块是一个包含Python定义和语句的文件。模块可以定义...

    详解Python函数作用域的LEGB顺序

    本文为大家介绍了Python函数作用域的查找顺序,供大家参考,具体内容如下 1.什么是LEGB? L:local 函数内部作用域 E:enclosing 函数内部与内嵌函数之间 G:global 全局作用域 B:build-in 内置作用域 2.LEGB是作...

    8.9 变量作用域|Python函数|Python3.8入门 & 进阶 & 原生爬虫实战完全解读

    8.9_变量作用域|Python函数|Python3.8入门_&_进阶_&_原生爬虫实战完全解读

    python中变量作用域及嵌套作用域扫描.pdf

    在Python中,变量的查找遵循LEGB(Local, Enclosing, Global, Built-in)原则,也就是从局部作用域开始查找,如果找不到再向外扩展到包含它的函数或类的外部作用域,接着是全局作用域,最后是内建作用域。...

    基于Python闭包及其作用域详解

    关于Python作用域的知识在python作用域有相应的笔记,这个笔记是关于Python闭包及其作用域的详细的笔记 如果在一个内部函数里,对一个外部作用域(但不是全局作用域)的变量进行引用,那么内部函数就被称为闭包...

    python中变量作用域及嵌套作用域宣贯.pdf

    在Python编程语言中,变量的作用域是指变量在代码中的可见范围。理解变量作用域对于编写清晰、可维护的代码至关重要。Python遵循LEGB(Local, Enclosing, Global, Built-in)规则来查找变量,这意味着变量查找顺序是...

    Python作用域与名字空间原理详解

    Python的作用域和名字空间是编程中的核心概念,它们决定了变量的可见性和生命周期。在Python中,作用域是指变量在代码中的有效范围,而名字空间则是一个变量的集合,用来存储变量名和对应的值。 首先,Python遵循...

    Python 之嵌套作用域.docx

    Python 之嵌套作用域 Python 之嵌套作用域是指在 Python 语言中,函数可以嵌套定义,并且每个函数都有其自己的作用域。在这个作用域中,变量的名称是唯一的,但在不同的函数中,可以有相同的变量名称,不会相互影响...

    Python作用域用法实例详解

    本文实例分析了Python作用域用法。分享给大家供大家参考,具体如下: 每一个编程语言都有变量的作用域的概念,Python也不例外,以下是Python作用域的代码演示: def scope_test(): def do_local(): spam = "local...

    Python中的作用域规则详解

    在Python 2.0及之前的版本中,Python只支持3种作用域,即局部作用域,全局作用域,内置作用域;在Python 2.2中,Python正式引入了一种新的作用域 — 嵌套作用域;在Python 2.1中,嵌套作用域可以作为一个选项被开启...

Global site tag (gtag.js) - Google Analytics