python函数作用域包括局部变量和参数_函数(命名空间、作用域、全局变量和局部变量)...

本文详细介绍了Python的命名空间,包括局部、全局和内置命名空间,并探讨了作用域的LEGB原则,以及全局变量和局部变量的使用规则。通过实例解析了函数内部如何访问和修改变量值。
摘要由CSDN通过智能技术生成

一、命名空间

命名空间指的是保存程序中的变量名和值的地方。命名空间的本质是一个字典,用来记录变量名称和值。字典的key是变量的名称,字典的value对于的是变量的值。

例如 {‘name’:’zs’,’age’:10}

命名空间一共分为三种:局部命名空间、全局命名空间、内置命名空间

局部空间:

每个函数都有自己的命名空间,叫做局部空间,它记录了函数的变量,包括函数的参数 和局部定义的变量

全局空间:

每个模块拥有它自已的命名空间,叫做全局命名空间,它记录了模块的变量,包括函数、 类、其它导入的模块。

内置名称空间:

任何模块均可访问它,它存放着内置的函数和异常。

input,print,str,list,tuple…

f06ad08e896d039888de3ec23d368f4f.png

结果:

75de76b208fe4ce2ab023418b3c6e8e3.png

二、作用域

作用域指的是变量在程序中的可应用范围。

作用域按照变量的定义位置可以划分为4类即LEGB:

Local(函数内部)局部作用域。

Enclosing(嵌套函数的外层函数内部)嵌套作用域(闭包)。

Global(模块全局)全局作用域。

Built-in(内建)内建作用域。(指的是builtins.py模块)

Python内层作用域访问外层作用域时的顺序:

Python搜索4个作用域[本地作用域(L)之后是上一层结构中def或者lambda的本地作用域(E),之后是全局作用域(G)最后是内置作用域(B)(即python的内置类和函数等)]

并且在第一处能够找到这个变量名的地方停下来。如果变量名在整个的搜索过程中都没有找到,Python就会报错。

注意:

在python中,模块(module),类(class)、函数(def、lambda)会产生新的作用域,其他代码块是不会产生作用域的,也就是说,类似条件判断(if……else)、循环语句(for x in data)、异常捕捉(try…catch)等的变量是可以全局使用的。

2a8dd21a5c5a38e6757e590add6d1b5d.png

1c9b44cf0db8dc3c98d8dfe64bd1d69c.png

结果:

fd359782f1976fd30cccd9c75d0eed77.png

三、全局变量和局部变量

在函数中定义的变量称为局部变量,只在函数内部生效,在程序一开始定义的变量称为全局变量,全局变量的作用域是整个程序。

全局变量是不可变数据类型,函数无法修改全局变量的值。

全局变量是可变数据类型,函数可以修改全局变量的值。

08ff443cedfe50c811b498cebdc1ca11.png

结果:

ecb711ede2f9a60c61d13ef3de4080a9.png

77d774c4acba47ae32ed904621b67b93.png

结果:

3c66588d45b076d2984ebd49e48a9efe.png

原文链接:https://blog.csdn.net/beginner_WYH/article/details/109293585

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值