![](/img/trans.png)
[英]How to use same-name global variable if passed as None to a function?
[英]behaviour of global variable with same name as function
当全局变量与 function 同名并且此变量在 function 内部使用时,该名称指的是 function。 这种行为的目的是什么?
#global setting
validate=False
def validate():
global validate
if(validate):
print('validation failed, because something is wrong!')
else:
print('No validation done.')
#call
validate()
我希望 output 是:
No validation done.
但相反我得到
validation failed, because something is wrong!
在查看调试器时,我看到这是因为 if 语句中的“变量”指的是 function 而不是 boolean,因此它是“真”。 这不是一个大问题,我已经通过更改 function 的名称来修复它,但我只是好奇它为什么会这样,如果这是出于某种原因还是应该被视为错误?
不,不幸的是,您将无法更改此行为。
这无疑是有意的。 有时在声明 function 时,您希望能够在其内部调用该函数,如果它以另一种方式表现,那将是致命的。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.