gpt4 book ai didi

python - 关于变量范围?

转载 作者:太空狗 更新时间:2023-10-30 00:41:00 25 4
gpt4 key购买 nike

我今天有一个数学测试,测试中的一个额外学分问题是

product = 1
for i in range(1,7,2):
print i
product = product * i
print i
print product

我们应该列出简单的循环步骤;但这让我开始思考,为什么这个程序会运行?第二个 print i 对我来说似乎不合适。我认为 i 仅存在于 for 循环中,然后被销毁,因此当您调用第二个 print i 时,没有变量 i你得到一个错误。

为什么 i 仍然是一个全局变量?

最佳答案

魔鬼藏在细节中

Naming and binding

A block is a piece of Python program text that is executed as a unit. The following are blocks: a module, a function body, and a class definition.

或者简单地说,for 循环 不是 block

A scope defines the visibility of a name within a block. If a local variable is defined in a block, its scope includes that block. If the definition occurs in a function block, the scope extends to any blocks contained within the defining one, unless a contained block introduces a different binding for the name.

所以定义的任何变量从定义点到 block 、functionmoduleclass 定义范围的末尾都是可见的.

Why does i remain a global variable?

从命名法的角度来看,如果您突出显示的代码是模块的一部分而不是定义的函数,我会将 i 称为全局变量。

关于python - 关于变量范围?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19316985/

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