繁体   English   中英

与 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM