首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >为什么Pylint对默认参数发出警告:“从外部范围重新定义名称”?

为什么Pylint对默认参数发出警告:“从外部范围重新定义名称”?
EN

Stack Overflow用户
提问于 2022-06-06 16:05:36
回答 1查看 1.1K关注 0票数 0
代码语言:javascript
运行
复制
def print_name(your_name = "Anonymous Andy"):
    print("Hello, " + your_name)

def your_name():
    # This function has same name as variable in above function
    return None

print_name() # Prints "Hello, Anonymous Andy"
print_name("World") # Prints "Hello, World"

上面的代码是为了学习Python,而不是为了生产而编写的。Pylint (2.14.0)警告我:

1:15: W0621: Redefining name 'your_name' from outer scope (line 4) (redefined-outer-name)

问题

  1. 我猜想Pylint是在警告我“嘿,您正在重新定义your_name函数”。这个理解正确吗?
  2. ,如果上面的理解是正确的,那么我认为Pylint是错误的,我认为我正在重新定义your_name变量,它是print_name函数作用域的局部变量。这个理解是正确的吗?
  3. ,如果我以上的理解是正确的,我会进一步困惑,因为我不认为像Pylint这样的著名程序会引起这样的错误警报。它发出警报的事实并不是错误的,但这条消息看起来像是一个谎言,因为我是而不是,从外部范围重新定义任何东西。我错过了什么吗?
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-06-06 23:48:21

  1. Yes

  1. No.函数在“外部作用域”中定义参数之前和模块内进行解释。您的代码将被解释为与此相同;因此,该错误在视觉上会更有意义。

代码语言:javascript
运行
复制
def your_name():
    return None

def print_name(your_name = "Anonymous Andy"):
    print("Hello, " + your_name)

如果要重新定义局部变量,则如下所示

代码语言:javascript
运行
复制
def print_name(your_name = "Anonymous Andy"):
    your_name = ""
    print("Hello, " + your_name)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72520439

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档