python80-Python的函数参数,变量作用域

本文介绍了Python中变量的作用域,包括局部变量和全局变量。局部变量在函数内部定义,随着函数执行结束而失效;全局变量在整个程序中都可访问。Python提供globals()、locals()和vars()函数来获取不同范围的变量字典。在函数内部重新定义同名变量会导致全局变量被遮蔽,可以通过globals()或使用global关键字避免这种情况。

在程序中定义一个变量时,这个变量是有作用范围的,变量的作用范围被称为它的作用域。根据定义变量的位置,变量分为两种。

1)局部变量。在函数中定义的变量,包括参数,都被称为局部变量。

2)全局变量。在函数外面、全局范围内定义的变量,被称为全局变量。

每个函数在执行时,系统都会为该函数分配一块“临时内存空间”,所有的局部变量都被保存在这块临时内存空间内。当函数执行完成后,这块内存空间就被释放了,这些局部变量也就失效了,因此离开函数之后就不能再访问局部变量了。

全局变量意味着它们可以在所有函数内被访问。

不管是在函数的局部范围内还是在全局范围内,都可能存在多个变量,每个变量“持有”该变量的值。从这个角度来看,不管是局部范围还是全局范围,这些变量和它们的值就像一个“看不见”的字典,其中变量名就是字典的 key,变量值就是字典的 value。

实际上,Python提供了如下三个工具函数来获取指定范围内的“变量字典”

1)globals():该函数返回全局范围内所有变量组成的“变量字典”。

2)locals():该函数返回当前局部范围内所有变量组成的“变量字典”

3)vars(object):获取在指定对象范围内所有变量组成的“变量字典”。如果不传入obiect参数,vars()和locals()的作用完全相同。

globals()和 locals()看似完全不同,但它们实际上也是有联系的,关于这两个函数的区别和联系大致有以下两点。

1)locals()总是获取当前局部范围内所有变量组成的“变量字典”,因此,如果在全局范围内(在函数之外)调用 locals()函数,同样会获取全局范围内所有变量组成的“变量字典;而globals()无论在哪里执行,总是获取全局范围内所有变量组成的“变量字典”。般来说,使用locals()和globals()获取的“变量字典”只应该被访问,不应该被修改。但实际上,不管是使用globals()还是使用locals()获取的全局范围内的“变量字典”,都可以被修改,而这种修改会真正改变全局变量本身:但通过 lo

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

软件测试老痞

你的支持,是我最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值