- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
为什么 pylint 在函数外部接受大写变量而在函数内部拒绝它们?相反,为什么 pylint 拒绝函数外的 camelCase 并在函数内部接受它?
我刚刚安装了 pylint(版本 2.2.2)来检查我的 Python 3。一定有什么我错过了。我的相关 Python/包版本是:
pylint 2.2.2
astroid 2.1.0
Python 3.6.7 | packaged by conda-forge | (default, Nov 20 2018, 18:20:05)
[GCC 4.2.1 Compatible Apple LLVM 9.0.0 (clang-900.0.37)]
考虑以下代码 (test_1),我在其中使用驼峰式命名和大写变量命名。 Capitalized 变量被接受(为什么?)并且 camelCase 被拒绝(因为代码没有包装到函数中,我猜)。
'''
Nothing important
'''
fileHandler = open("afile.txt")
for line in fileHandler:
Token = line.split("\t")
Part_1 = Token[0]
print(Part_1)
在调用 pylint 时给出:
$ pylint --py3k --enable=all test_1.py
************* Module test_1
test_1.py:5:0: C0103: Constant name "fileHandler" doesn't conform to UPPER_CASE naming style (invalid-name)
------------------------------------------------------------------
Your code has been rated at 8.00/10 (previous run: 8.00/10, +0.00)
现在,如果我将所有内容都放入一个函数 (test_2) 中。
'''
Nothing important
'''
def foo():
fileHandler = open("afile.txt")
for line in fileHandler:
Token = line.split("\t")
Part_1 = Token[0]
print(Part_1)
if __name__ == '__main__':
foo()
然后大写变量被检测为不合规(这是我所期望的):
$ pylint --py3k --enable=all test_2.py
************* Module test_2
test_2.py:5:0: C0102: Black listed name "foo" (blacklisted-name)
test_2.py:5:0: C0111: Missing function docstring (missing-docstring)
test_2.py:6:4: C0103: Variable name "fileHandler" doesn't conform to snake_case naming style (invalid-name)
test_2.py:9:8: C0103: Variable name "Token" doesn't conform to snake_case naming style (invalid-name)
test_2.py:10:8: C0103: Variable name "Part_1" doesn't conform to snake_case naming style (invalid-name)
------------------------------------------------------------------
Your code has been rated at 3.75/10 (previous run: 3.75/10, +0.00)
我有些不清楚...欢迎任何澄清...
最佳
最佳答案
当您将变量放入函数内时,pylint 不再将它们“视为”常量。将变量放入函数后,pylint 将它们“视为”普通变量,不再需要您将它们大写,而是需要“snake_case”。请注意,默认情况下,pylint 更喜欢 snake_case
而不是 camelCase
,但您可以 override this在 .pylintrc
中更喜欢 camelCase。
#!/usr/bin/env python3
# pylint wants 'FILEHANDLER'
fileHandler = open("afile.txt") # <-- pylint sees constant, wants UPPER_CASE
for line in fileHandler:
Token = line.split("\t")
Part_1 = Token[0]
print(Part_1)
#!/usr/bin/env python3
def run_stuff():
# pylint wants 'file_handler'
fileHandler = open("afile.txt") # <-- pylint sees normal variable
for line in fileHandler:
Token = line.split("\t")
Part_1 = Token[0]
print(Part_1)
if __name__ == '__main__':
run_stuff()
通常,.pylintrc 文件会跟在PEP8 之后.如果未提供,它将默认为 PEP8,如 pylint website 中所述.快乐 linting!
关于python - 为什么pylint在函数外部需要大写变量名?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54151197/
以 pylint-1.0.0 开头--include-ids不再允许争论。 如何得到: ************* Module foo.bar E:199,11: Module 'yaml' has
Pylint 在 Linux 运行中退出,代码为 28。这个错误代码是什么意思? 我知道这并不意味着空间不足,因为我在空 VM 上尝试了相同的命令。 最佳答案 Linux 上的 Pyline 退出代码
第 4.1 节中的文档明确指出: https://pylint.readthedocs.io/en/latest/faq.html#message-control 4.1 Is it possible
我正在寻找类似的东西 [BASIC] good-names=X, y 如在 pylintrc 中,但我想将这些名称限制为仅在单个 python 文件中有效。 我考虑过在文件顶部使
给定以下 python 代码: import git try: raise git.exc.GitCommandError("dummy", "foo") except git.exc.Git
为了识别臭代码,我想运行 pylint好像没有# pylint: disable=*说明(例如 pylint: disable=broad-except )。 是否可以禁用 disable自己在命令行
在 python 文件上运行 pylint 时,它默认显示有关 TODO 注释的警告。例如: ************* Module foo W:200, 0: TODO(SE): fix this
这个问题已经有答案了: Invoking Pylint programmatically (10 个回答) 已关闭 9 年前。 我使用Python 3.3,Windows,通过pip工具安装pylin
我已经在我在 Ubuntu 18.04 上使用的 VM 上正确安装了所有上述模块。在特定脚本或文件夹上运行它们中的任何一个时,它们会正确识别样式错误并将其输出到控制台中。例如。: (venv) ...
我正在尝试将模块添加到我的 Pylint 路径,以便可以使用 seen in this question 的解决方案导入它们.不幸的是,我期望在使用此解决方案后应该可以导入的模块似乎仍然不存在。我想检
我的 Pylint 安装导入 flask 就好了。并且使用相同的 flask 安装,我的应用程序中运行良好的 wtforms。但是,当我在导入 wtforms 的文件上运行 Pylint 时: fro
我正在使用 pylint 1.6.4和 git-pylint-commit-hook 2.1.1在预提交时对我的文件进行 lint。我也用 alembic为了生成我的迁移,它们存储在 /migrati
我正在尝试让 Eclipse 识别我在 Jenkins 中使用的 PyLint 配置文件。目前,Eclipse pylint 充斥着无用的错误。我尝试过传入 rcfile 参数。所以... Windo
在python linting docs对于 VS Code,它有这个用于将插件添加到 pylint 的示例: "python.linting.pylintArgs": ["--load-plugin
为什么 pylint 提示这个代码块?R1705: Unnecessary "elif" after "return" (no-else-return) def f(a): if a == 1
我有一个场景,当我想使用 Python 文件运行 pylint 命令时。使用我正在使用的命令提示符 python3 -m pylint test.py 除此之外,我想格式化我的消息,以便以后可以使用
$ pylint --reports=n main.py 输出: No config file found, using default configuration 最佳答案 如果您没有 No con
如何在 Pylint 中禁用“关键字参数分配周围不允许有空格”? 我找到了为什么它会检查空格( PEP 8, why no spaces around '=' in keyword argument
我正在使用带有包控制的 Sublime Text 3 前几天我通过Package Control安装了Pylint 但是不行,只要打开Sublime Text 3就跳出这个提示框 我该如何解决? 最佳
我正在使用pytorch并且pylint无法识别例如torch.stack的几个函数,但是,如果我导入torch._C as torch 似乎工作正常。 如果我执行上述操作,torch 包中存在的实际
我是一名优秀的程序员,十分优秀!