我想调用一个方法f()
,但一不小心我就说了f
。Python3 将其误认为是对不存在的变量进行了无意义的评估,因此在没有任何通知的情况下跳过了我想要的方法调用。有没有办法覆盖此默认行为并获取错误消息?是通过禁止标识符作为方法和变量的双重使用,还是通过禁止仅由标识符组成的无意义语句?
问问题
124 次
4 回答
5
这是有效的语法,所以 Python 不会抱怨。您可能需要考虑其他一些工具,例如 pylint。Pylint 会报告:
W: 4,0: Statement seems to have no effect
如果您只是这样做:
f
代替:
f()
唯一的问题是 pylint 可以开箱即用地抱怨很多。确保创建一个兼容您的风格的配置。
于 2013-04-04T09:56:34.713 回答
3
In [1]: def f():
...: print("This is some random function")
...: return
In [2]: a = f
In [3]: a()
This is some random function
In [4]: somedict = {"call_something": f, "call_another": a}
In [5]: somedict["call_something"]()
This is some random function
In [6]: f
Out[6]: <function __main__.f>
使用函数而不调用它是完全有效的语法,并且正如我刚刚展示的那样具有多种用途。不是a meaningless evaluation of a nonexisting variable
,因为函数本质上是变量。
于 2013-04-04T09:47:06.260 回答
1
确保您的代码执行应有的功能的常用方法是编写单元测试。如果您有良好的测试覆盖率,这种类型的错误就不会溜走。
传递对函数/方法的引用在 Python 中很常见(并且很有用),因此您不应该禁用它。
于 2013-04-04T09:49:38.250 回答
0
唉,没有。Python 没有任何严格的警告模式(参见 Perl 和 Ruby)。此外,这些行是有效的陈述,因此警告它们是不公平的。
不过,您可以编写自己的代码检查器来查找这样的行。搜索没有任何标点符号的单个单词并且是 Python 标识符(不是关键字,例如break
)的行
于 2013-04-04T10:08:37.730 回答