【问题标题】:Should I avoid using "str" as a variable name in Python?我应该避免在 Python 中使用“str”作为变量名吗?
【发布时间】:2020-12-30 12:27:05
【问题描述】:

我注意到 Python 中的某些变量名会被 Vim 以蓝色突出显示,而其他变量名则不会。根据this question,我对保留字的概念很熟悉,但通过查找,“str”似乎不是这些字之一。

尽管突出显示,但它(似乎)不会导致任何问题。一个简单的例子:

str = "Hello"
sfgfgf = "World"
print(str)
print(sfgfgf)  

这是 Vim 突出显示的屏幕截图:

在变量定义和打印语句中,str 以蓝色突出显示,但sfgfgf 不是。然而,这段代码很高兴地打印出“Hello”和“World”。

“int”也是如此,我相信还有其他例子(下面的代码也可以毫无怨言地运行):

int = 1
intentional_or_no = 5
print(int)
print(intentional_or_no)

所以,我的问题:

  1. 使用“str”和“int”等词作为变量名有什么问题吗?
  2. 如果不是,为什么 Vim 用蓝色突出显示它们?

【问题讨论】:

  • 这些是内置名称,Python 允许在那里使用,但是,你不能使用它们。例如,str()int() 用于显式类型转换
  • 这些是用于内置的名称。不要使用它们,这通常被认为是一种不好的做法。请注意,如果它们保留字,则根据定义,您将无法使用它们

标签: python vim syntax-highlighting vim-syntax-highlighting variable-names


【解决方案1】:

是的,你应该避免使用 str 作为变量,因为

A) 以变量的用途命名变量可以让您和其他人更容易阅读代码。

and B) str() 是一个函数,用于转换字符串中的某些内容(整数、浮点数等)。这就是它被突出显示的原因。

它仍然可以工作,但最好为变量使用另一个名称

【讨论】:

  • 谢谢,我一定忘记了 str 和 int 都是内置函数! :)
  • str 不是函数;这是一种类型。作为一个callable,它接受一个参数x并返回x.__str__()
【解决方案2】:

突出显示是 linting 的一部分,表明您正在做的事情是不好的做法。随着脚本的增长,用自己的保留字覆盖保留字会导致混乱。

例如,如果您在 Python 中开发了自己的“str”函数,并且在代码中引用了“str”,那么您希望使用 Python 函数还是您的函数?

【讨论】:

    【解决方案3】:

    看,要了解为什么这不好,请看以下示例:

    num = 10
    real = 5.4
    print(real, int(real))
    

    将产生:

    5.4 5
    

    现在,如果你要写:

    int = 10
    real = 5.4
    print(real, int(real))
    

    你会得到这个错误:

    ---------------------------------------------------------------------------
    TypeError                                 Traceback (most recent call last)
    <ipython-input-3-39e8d577bf55> in <module>
          2 int = 10
          3 real = 5.4
    ----> 4 print(real, int(real))
    
    TypeError: 'int' object is not callable
    

    本地名称掩盖了globals 或built-ins,使它们无法使用,除非您引入并非总是可能的命名空间。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-02-25
      • 1970-01-01
      • 2018-06-16
      • 2020-12-15
      • 1970-01-01
      • 2011-03-26
      • 2012-04-14
      相关资源
      最近更新 更多