python的作用域

昨天我们科普了一点点关于区块链的小知识,你应该对区块链有一个大致的了解了吧?

好的,今天我们要来讲一下python的作用域。什么是python的作用域,其实说白了就是参数赋值的有效期到哪里,也就是字典的有效期,而这个字典通常是不会显示地出现在我们面前的,不显示?难道还能隐藏?对的,真的是隐藏起来了,我们来看一段示例代码:

a = 1
LSF = vars()
LSF[‘a‘]
#按回车,得到的结果是:1
LSF[‘a‘] += 1
a
#按回车,得到的结果是:2

我们来看一下上面 的代码,先是对a进行赋值,接着给LSF一个vars函数,类似于容量的东西,最终会返回一个看不见的字典,然后我们把a放到这个函数里面,得到的结果是一开始给a赋的值,也就是1。接着,我们尝试对LSF进行加法运算,也能得到正确的结果。这似乎还不能说明返回了一个字典。我们姑且这样认为吧~嘻嘻~

这个看不见的字典我们一般称为命名空间或者作用域,除全局作用域以外,上面每隔函数调用都将创建一个作用域。

接着,我们来看一下什么是局部作用域,局部作用域顾名思义就是只作用在函数内部的字典。我们来看一下示例代码:

def foo():a = 5
#按回车,直到出现<<<
a = 1
foo()
a
#按回车,得到的结果是:1

我们看一下上面的代码,我们先定义了一个foo函数,在这个函数里面,我们将a的值直接转化为5,也就是说,只要在这个函数内部,不管之前a的值是多少,都会被转化为5。接着,我们给a赋值1,然后调用一下这个函数,最后,我们在函数以外看一下a的值是多少,还是1,没有被foo函数转化为5,这在一定程度上说明a = 5是一个局部作用域。

好的,今天的内容就讲到这里啦~

(文章图片若有侵权,请联系作者删除)

原文地址:https://www.cnblogs.com/Galaxyfengfeng/p/9170370.html

时间: 2024-10-09 10:01:29

python的作用域的相关文章

zg手册 之 python2.7.7源码分析(5)-- python的作用域和名空间

在 python 中, module,作用域,名空间这几个概念与虚拟机的运行机制有紧密的联系, 这里先了解 module,作用域,和名空间,为后面分析虚拟机的运行做准备. module 在python中一个文件对应是一个module,每个py文件被导入后都对应一个module对象. 这个对象包含有一个dict对象,保存着本py文件中对应的变量和函数的引用, 也保存从其他python文件(module)导入的变量或函数的引用. 名空间和作用域 python 有三个独立的名空间, local, gl

Python 模块 & 作用域

1        模块 在这部分,主要区分模块.包.多层目录. 请注意,每一个包目录下面都会有一个__init__.py的文件,这个文件是必须存在的,否则,Python就把这个目录当成普通目录,而不是一个包.__init__.py可以是空文件,也可以有Python代码,因为__init__.py本身就是一个模块,而它的模块名就是mycompany. 文件结构: mycompany   --包 __init__.py abc.py     --模块 xyz.py 1.1   使用模块 1.1.1 

Python变量作用域

Python对于作用域有四种:buildin作用域.全局作用域(模块作用域或文件作用域).高层函数作用域和局部作用域. 其中buildin作用域是Python内建作用域,在Python初始化时建立的: 全局作用域是在文件中直接定义的变量所处的作用域: 高层函数作用域是外层函数中定义的局部变量所处的作用域: 局部作用域是函数内部定义的局部变量所处的作用域: 而在Python语言中变量赋值的位置即是其变量所处的作用域. Python在查找一个变量时首先从局部作用域查起,若未找到则依次查找高层函数作用

详解Python的作用域和命名空间

最近在学习Python,不得不说,Python真的是一门很好用的语言.但是学习的过程中关于变量作用域(scope)的命名空间(namespace)的问题真的把我给搞懵了.在查阅了相关资料之后,觉得自己对Python的作用域和命名空间有了一定得了解.故写在这里,一方面加深自己的理解,另一方面分享知识. 一.本篇博客需要解决的问题. 1.什么是作用域和命名空间? 2.Python中作用域和命名空间的工作原理是什么? 3.我怎样在Python中声明一个全局变量(global variable),局部变

Python 变量作用域 LEGB (下)—— Enclosing function locals

上篇:Python 变量作用域 LEGB (上)—— Local,Global,Builtin https://www.cnblogs.com/yvivid/p/python_LEGB_1.html 下篇 没想到 拖这么久,距离上篇完成 都一年多了. 一.闭包常规形态下的 locals作用域  典型的闭包 如下: def outer(x = 3): def inner(y): print("yvivid's test") print("Locals =", loca

[Python] 命名空间&amp;作用域

Python的类语句不会创建实例 类会创建命名空间,通过对象访问类的属性和方法 类不会创建作用域,对方法和属性的引用必须加以限定(如在方法中必须通过self引用实例的属性) class My1(): my1 = "My1bianliang" def __init__(self): print("My1gouzao") def __del__(self): print("My1xigou") class My2(): def __init__(se

Python变量作用域(一)

在一个程序中使用变量名时,Python创建.改变或者查找变量名都是在所谓的命名空间中进行的.作用域指的就是命名空间. Python中的变量名在第一次赋值时已经创建,并且必须经过赋值后才能够使用.由于变量名最初没有声明,Python将一个变量名 被赋值的地点关联为一个特定的命名空间.也即是说,在代码中给一个变量赋值的地方决定了这个变量将存在于哪个命名空间,也 就是它可见的范围. 函数除了打包代码之外,还为程序增加了一个额外的命名空间曾:在默认的情况下,一个函数的所有变量名都是与函数的命名空间 相关

python 变量作用域

python能够改变变量作用域的代码段是def(函数).class(类).lamda. if/elif/else.try/except/finally.for/while 并不能涉及变量作用域的更改,也就是说他们的代码块中的变量,在外部也是可以访问的,这点与有{}标注界限的其他类型语言不通.特别注意. 变量搜索路径是:本地变量->全局变量

Python的作用域陷阱

问题发现:for循环内部的"局部"变量,在出现异常后,赋的变量仍有值可以输出. 每个循环都输出,发现没有重复. 结论:无for内的"局部"变量. Python内的变量作用域,最小是以函数为单位. 之上是类,再是模块. 对于本问题,而输出没有重复,是因为出现异常后就跳出了赋值语句块,输出的设计不好. 实际上输出的值,是上次循环中赋的值.