gpt4 book ai didi

Python 变量作用域和 .var

转载 作者:太空宇宙 更新时间:2023-11-03 17:33:15 25 4
gpt4 key购买 nike

在 SaltyCraneBlog ( http://www.saltycrane.com/blog/2008/01/python-variable-scope-notes/#c7900 ) 上,我正在阅读 Python 中的变量作用域,一切都非常简单,直到我得到了设置全局变量的解决方法:

def ex8():
ex8.var = 'foo'
def inner():
ex8.var = 'bar'
print 'inside inner, ex8.var is ', ex8.var
inner()
print 'inside outer function, ex8.var is ', ex8.var
ex8()

让我失望的是 ex8.var 部分。这是一个属性吗?如果 var 是 ex8 的属性,那么 var 不需要先定义吗?函数的属性可以在函数本身内调用吗?

最佳答案

What's throwing me off is the ex8.var part. Is this an attribute?

是的。

If var is an attribute of ex8, wouldn't var need to be defined first?

没有。您可以随时在对象上设置属性,而无需预先声明它们(除非该对象定义了阻止您这样做的特殊行为)。

Can a function's attributes be called within the function itself?

是的,可以从函数内部访问函数的属性。该函数是一个与其他对象一样的对象,您可以访问它的属性,就像访问当前范围内可访问的任何其他对象一样。 (这里没有“调用”该属性,因为它的值不是一个函数;它只是您访问的一个值。)

正如您链接到的评论所提到的,这段代码所做的事情不一定是一件好事。正如该博客文章中提到的,Python 3 包含一个 nonlocal 关键字,消除了此类黑客行为的需要。即使在 Python 2 中,也很少会遇到需要诉诸此类技巧的情况。

关于Python 变量作用域和 .var,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31577716/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com