首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何才能得到潜在NameError的警告?

如何才能得到潜在NameError的警告?
EN

Stack Overflow用户
提问于 2012-08-24 01:24:21
回答 3查看 335关注 0票数 1

下面是一个Python脚本的示例:

代码语言:javascript
运行
复制
n, dollar, euro = map(input().split())
if n == 1:
   print(dolar / euro)  # Note the typo, 'dolar' vs. 'dollar'
else:
   print(euro / dollar)

我犯了一个错误("dolar“和一个”l“)。除非您输入n = 1,否则解释器不会通知您error(NameError)或甚至是警告。

如何在运行时通知我这一点?

EN

回答 3

Stack Overflow用户

发布于 2012-08-24 01:32:17

pylint会将其报告为E: 3: Undefined variable 'dolar',并为您提供许多有用的风格提示。

Python本身不会出现这样的编译时错误,因为如果不运行导致该错误的代码,它就不能真正告诉您不是动态创建该名称。(即使你碰巧这样做了,Pylint也会认为这是一个错误,这是很好的,因为如果你写了这样的代码,你应该得到很差的分数……)

票数 7
EN

Stack Overflow用户

发布于 2012-08-24 01:32:52

使用Pylint:

代码语言:javascript
运行
复制
sucmac:~ ajung$ /tmp/bin/pylint ou.py 
No config file found, using default configuration
************* Module ou
W:  3,0: Bad indentation. Found 3 spaces, expected 4
W:  5,0: Bad indentation. Found 3 spaces, expected 4
C:  1,0: Missing docstring
C:  1,0: Invalid name "n" (should match (([A-Z_][A-Z0-9_]*)|(__.*__))$)
C:  1,3: Invalid name "dollar" (should match (([A-Z_][A-Z0-9_]*)|(__.*__))$)
C:  1,11: Invalid name "euro" (should match (([A-Z_][A-Z0-9_]*)|(__.*__))$)
W:  1,18: Used builtin function 'map'
W:  1,22: Used builtin function 'input'
E:  3,9: Undefined variable 'dolar'
票数 3
EN

Stack Overflow用户

发布于 2012-08-24 01:30:51

Python不能在运行前通知您,因为有一些方法可以在该行出现之前将"dolar“插入到符号表中,并且Python在实际尝试运行该行之前无法检测到您是否已经这样做了。正如Josh Lee所说,您最好的选择是创建一个测试套件,(至少)测试代码的每一行。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12097010

复制
相关文章

相似问题

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