gpt4 book ai didi

python - 解释 Python 变量作用域

转载 作者:太空狗 更新时间:2023-10-29 21:35:45 25 4
gpt4 key购买 nike

我正在自学 Python,我正在将一些示例代码翻译成这个

class Student(object):
def __init__( self, name, a,b,c ):
self.name = name
self.a = a
self.b = b
self.c = c

def average(self):
return ( a+b+c ) / 3.0

这几乎是我想要的类定义。

稍后在 main 方法中我创建了一个实例并将其命名为 a:

if __name__ == "__main__" :
a = Student( "Oscar", 10, 10, 10 )

这就是我如何发现 main 中声明的变量 a 可用于方法 average 并使该方法工作,我必须键入 self.a + self.b + self.c

这样做的理由是什么?

最佳答案

裸名(如 abc)总是限定为本地或全局(嵌套函数除外,它们无处可去)在你的代码中)。理由是添加更多的范围会不必要地使事情变得更复杂——例如,如果在你的 self.a = a 中,裸名 a 可以被限定为你出现的意思想要(相当于 self.a)那么赋值本身就没有意义(给自己赋一个名字),所以你需要更复杂的规则。

当您想要不同于裸名简单、直接和优化行为的东西时,只需使用限定名称(如 self.a),这是迄今为止最简单的方法 -- 完全可行,没有复杂的规则无论如何,并允许编译器有效地优化事物(因为例如,裸名的范围总是由词法决定的,依赖于环境的动态变化特征)。因此,除了可能怀念其他具有更复杂范围规则的语言之外,没有理由让裸名的语义复杂化。

关于python - 解释 Python 变量作用域,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2677545/

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