在我的GUI应用程序中,我从main
中的嵌套函数中为\u register\u allowed
赋值。
def toggle_registration():
if _register_allowed:
_register_allowed = False
else:
_register_allowed = True
这当然会返回一个无限的LocalError。
我的问题是,为什么使用global
declaration关键字来解决这个问题是件坏事?
因为它实现了与nonlocal
相同的最终结果,即从嵌套函数范围之外_register_allowed
的值被更改,而不是创建一个新的局部变量;为什么这是一个坏的,或者不-蟒蛇的方法来解决这个问题?
给一个简单的答案:因为它很难阅读。例如:
我有三个职能:
def a():
A *= 2
def b():
A += 7
def C():
A = 0
另外,A原来是2
现在,想象一下这些函数被分割成多个文件。有一天,你想做一个任务A次,但是A的值和你预期的不同!现在,你怎么知道为什么A有不同的值?从哪里开始调试?
相反,如果所有这些函数都需要一个输入并返回它,那么就可以立即清楚地知道变量的使用位置以及它们何时更改,从而更易于调试!
问题内容: 我不是PHP开发人员,但我在很多地方都看到人们似乎把它当作瘟疫之类。为什么? 问题答案: 表示通过GET或POST传递的所有变量都可以作为脚本中的全局变量使用。由于访问未声明的变量不是PHP中的错误(这是警告),因此可能导致非常讨厌的情况。考虑一下,例如: 这本身不是一件坏事(精心设计的代码不应生成警告,因此不应访问可能未声明的变量(并且出于相同原因也不 需要 )),但是PHP代码通常
问题内容: 我已经用Java编程了几年了,但是最近我刚回到学校获得了正式学位。得知我在上一次作业中因使用如下所示的循环而丢了积分,我感到非常惊讶。 现在,对于我的测试,我只是在扫描一些控制台输入,但是我被告知不鼓励这种循环,因为使用break类似于goto,我们只是不这样做。 我完全了解及其表亲的陷阱,并且我有很好的意识不使用它们。我还意识到,一个更完整的程序可以提供其他一些逃生方法,例如只是结束
问题内容: Here is the original image: http://rank.my/public/images/uploaded/orig-4193395691714613396.png And here it is scaled down to 300x225: http://rank.my/public/images/uploaded/norm-41933956917146133
问题内容: 我希望有人能够提供一些有关Java虚拟机的根本差异的见解,从而使Java虚拟机可以很好地实现线程而无需使用全局解释器锁(GIL),而Python则需要这样做。 问题答案: Python(该语言)不需要GIL(这就是为什么它可以在JVM [Jython]和.NET [IronPython]上完美实现的原因,并且这些实现可以自由地使用多线程)。CPython(流行的实现)一直使用GIL来简
其他人告诉我,在代码中使用名称空间std;编写
我用jacoco做报道。当我看jacoco报告时,覆盖面似乎不错。但是在Sonarqube中,覆盖率很低,因为它说来自lombok的< code>@Data注释没有被测试覆盖。 编译的类被标记为但 Sonar 不会忽略它。 如何排除分析的?