为什么在函数外时pylint需要大写的变量名? 

为什么pylint在函数外部时接受大写变量,而在函数内部拒绝它们?相反,为什么pylint拒绝camelCase ouside函数并在函数内部接受它?

我刚刚安装了pylint(版本2.2.2)来检查我的Python3.一定错过了某些东西.我相关的Python /软件包版本是:

  1. pylint 2.2.2
  2. astroid 2.1.0
  3. Python 3.6.7 | packaged by conda-forge | (default,Nov 20 2018,18:20:05)
  4. [GCC 4.2.1 Compatible Apple LLVM 9.0.0 (clang-900.0.37)]

考虑下面的代码(test_1),其中我使用camelCase和大写的变量命名.大写的变量被接受(为什么?)而骆驼的情况被拒绝(我想是因为代码没有包装到函数中).

  1. '''
  2. Nothing important
  3. '''
  4. fileHandler = open("afile.txt")
  5. for line in fileHandler:
  6. Token = line.split("\t")
  7. Part_1 = Token[0]
  8. print(Part_1)

哪个调用pylint:

  1. $pylint --py3k --enable=all test_1.py
  2. ************* Module test_1
  3. test_1.py:5:0: C0103: Constant name "fileHandler" doesn't conform to UPPER_CASE naming style (invalid-name)
  4. ------------------------------------------------------------------
  5. Your code has been rated at 8.00/10 (previous run: 8.00/10,+0.00)

现在,如果我将所有内容都放入一个函数中(test_2).

  1. '''
  2. Nothing important
  3. '''
  4. def foo():
  5. fileHandler = open("afile.txt")
  6. for line in fileHandler:
  7. Token = line.split("\t")
  8. Part_1 = Token[0]
  9. print(Part_1)
  10. if __name__ == '__main__':
  11. foo()

然后将大写变量检测为不合规(这是我所期望的):

  1. $pylint --py3k --enable=all test_2.py
  2. ************* Module test_2
  3. test_2.py:5:0: C0102: Black listed name "foo" (blacklisted-name)
  4. test_2.py:5:0: C0111: Missing function docstring (missing-docstring)
  5. test_2.py:6:4: C0103: Variable name "fileHandler" doesn't conform to snake_case naming style (invalid-name)
  6. test_2.py:9:8: C0103: Variable name "Token" doesn't conform to snake_case naming style (invalid-name)
  7. test_2.py:10:8: C0103: Variable name "Part_1" doesn't conform to snake_case naming style (invalid-name)
  8. ------------------------------------------------------------------
  9. Your code has been rated at 3.75/10 (previous run: 3.75/10,+0.00)

我有一些不清楚的地方…欢迎澄清…

最好

最佳答案
当您将变量放在函数内部时,pylint不再“将其视为”常量.在将变量放入函数内部之后,pylint将它们“视为”正常变量,不再需要大写它们,而是需要“ snake_case”.注意,默认情况下,pylint首选使用snake_case而不是camelCase,但是您可以在.pylintrc中使用override this来首选camelCase.Python脚本(无方法)

  1. #!/usr/bin/env python3
  2. # pylint wants 'FILEHANDLER'
  3. fileHandler = open("afile.txt") # <-- pylint sees constant,wants UPPER_CASE
  4. for line in fileHandler:
  5. Token = line.split("\t")
  6. Part_1 = Token[0]
  7. print(Part_1)

用方法

  1. #!/usr/bin/env python3
  2. def run_stuff():
  3. # pylint wants 'file_handler'
  4. fileHandler = open("afile.txt") # <-- pylint sees normal variable
  5. for line in fileHandler:
  6. Token = line.split("\t")
  7. Part_1 = Token[0]
  8. print(Part_1)
  9. if __name__ == '__main__':
  10. run_stuff()

通常,.pylintrc文件将跟随PEP8.如果未提供任何文件,则它将默认为PEP8(如pylint website所述).

总结

以上是脚本之家为你收集整理的为什么在函数外时pylint需要大写的变量名? 全部内容,希望文章能够帮你解决为什么在函数外时pylint需要大写的变量名? 所遇到的程序开发问题。

如果觉得脚本之家网站内容还不错,欢迎将脚本之家网站推荐给程序员好友。

weinxin
我的微信
一个码农、工程狮、集能量和智慧于一身的、DIY高手、小伙伴er很多的、80后奶爸。
Igor
  • 版权声明: 发表于 2020-02-1518:27:08
  • 转载注明:http://blog.tsingmac.com/prolions/software/python/2577/
无线功率传输(WPT)及相关标准 物联网+传感器

无线功率传输(WPT)及相关标准

无线功率传输(WPT)及相关标准(包括Qi)。 1. 无线功率传输原理 WPT的工作原理与电源变压器相似,但有一些区别,例如变压器有两个非常靠近的线圈,通常每个线圈都缠绕在铁氧体材料上以增加磁耦合,但...
修改pip源为清华源,提高下载速度 Python

修改pip源为清华源,提高下载速度

pip命令使用清华源进行下载安装。 如果想使用命令行pip命令进行下载: 使用pip的时候在后面加上-i参数,指定pip的下载源 pip install numpy -i https://pypi.t...
python虚拟环境—virtual environment Python

python虚拟环境—virtual environment

操作系统:ubuntu16.04 1.1 什么时候会用到python虚拟环境 问题1 举个例子,tensorflow(tf)是一个十分流行的python机器学习库,你现在手里有两个tf项目,其中项目A...
匿名

发表评论

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: