gpt4 book ai didi

python - 在循环外安全地使用 for 循环变量

转载 作者:行者123 更新时间:2023-12-05 07:47:18 25 4
gpt4 key购买 nike

Most arguments关于为什么做出设计决定使 for 循环变量在循环本地表明存在流行的用例。

明显的用例是这样的:

x = default_value
for x in iterator:
# do stuff
# do something with x here

不幸的是,第一行常常被遗忘:

# should have set default value for x here
# but forgot
for x in iterator:
# do stuff
# do something with x here

因此,当迭代器为空时,如果之前未定义 x,它们将引发 NameError

这个错误在嵌套循环中变得更糟:

for y in outer_iterator:
# should have set default value for x here
# but forgot
for x in inner_iterator(y):
# do stuff
# do something with x

如果 inner_iterator(y) 在外循环的第二次或以后的迭代中为空,则此处忘记 x = default_value 会导致静默错误而不是异常。

测试这些情况很困难,因为 inner_iterator(y) 不是外部参数,所以除非测试足够幸运以某种方式重新创建空的情况,否则不会检测到错误.

是否所有用例都是脆弱的,或者是否有一种安全的方法来依赖 for 循环变量的范围规则?

最佳答案

没有 100% 安全的方法来依赖在 for 循环中设置的变量,除非您可以 100% 确定迭代器永远不会为空。要实现 100% 的保证,您可以执行类似 for x in iterator 或 [None]: 的操作,但这会带来类似的“记住要这样做”的问题。它可能比设置默认值更“pythonic”,但默认值可能更清晰。整个依赖于 for 循环范围类似于 if (condition): x = something 然后考虑如果我在条件为假时调用 x 会怎样?您可能无论如何都不会编写这样的代码,那么为什么要为 for 循环编写代码呢?我喜欢养成预先声明将在外部使用的所有变量的习惯(例如,在函数开头将所有变量设置为 None 或其他一些默认值),但这只是归结为偏好。

关于python - 在循环外安全地使用 for 循环变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39935281/

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