python作用域推荐_说说 Python 的作用域

在函数内定义的变量,在函数的 “局部作用域” 中;而在函数外定义的变量,在 “全局作用域” 中。

在程序启动时,会创建一个全局作用域。当程序终止时,就会销毁这个作用域,其内部保存的变量也会被一同销毁。

一个函数被调用时,会创建一个局部作用域。当这个函数返回时,这个作用域就会被销毁。

1 全局作用域内,不能使用局部变量

全局作用域内如果使用了局部变量,就会抛错:

def cook():

dumplings = 3

cook()

print(dumplings)

运行结果:

NameError: name 'dumplings' is not defined

因为 cook() 返回后,其局部作用域中的 dumplings 变量也被一同销毁了,所以在全局作用域内无法访问。

2 局部作用域内,不能使用其它局部作用域内的变量

def dumpling():

dumplings = 5

print('dumpling()=' + str(dumplings))

def cook():

dumplings = 3

dumpling()

print('cook()=' + str(dumplings))

cook()

运行结果:

dumpling()=5

cook()=3

cook() 中调用了 dumpling(),因此其同名的 dumplings 变量被重新定义了。也就是说,一个函数内定义的局部变量与其它函数内部定义的变量,是完全隔离的。

另外,这个示例也说明了:不同作用域中的变量,可以同名。但不建议这样做,因为变量名相同,我们不好跟踪代码。

3 局部作用域内,可以使用全局变量

def cook2():

print(dumplings)

dumplings = 3

cook2()

运行结果:

3

总的来说,作用域与变量遵守以下规则:

全局作用域中的代码,无法使用局部作用域中定义的变量。

局部作用域可以使用局部作用域中的定义的变量。

一个函数局部作用域中,无法使用其它局部作用域中的变量。

变量如果分别定义在不同的作用域中,那么可以同名(不建议这样做)。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值