【问题标题】:Can I use the variable name "type" as function argument in Python?我可以在 Python 中使用变量名“type”作为函数参数吗?
【发布时间】:2011-01-25 22:55:01
【问题描述】:

我可以使用type 作为 python 函数参数的名称吗?

def fun(name, type):
    ....

【问题讨论】:

  • category 这个名字如果你真的不想指定什么的类型,比如foo_type,这个名字可以很好地工作。
  • 我会使用kind 而不是type。此上下文的字典定义几乎相同。

标签: python


【解决方案1】:

你可以,但你不应该。使用内置名称不是一个好习惯,因为它们会覆盖该范围内的内置名称。如果您必须使用该词,请根据给定的上下文稍微修改它。

虽然对于不使用 type 的小型项目可能无关紧要,但最好不要养成使用关键字/内置插件名称的习惯。如果您绝对必须使用与关键字冲突的名称,Python Style Guide 提供了一个解决方案:

single_trailing_underscore_: 被使用 避免冲突的约定 Python 关键字,例如

Tkinter.Toplevel(master, class_='ClassName')

【讨论】:

  • 顺便说一句,因为 type 是一个通用的,经常被过度使用的词,添加一个限定符,如 "car_type" 或 "animal_type" 无论如何都会使程序更加自我记录
  • 我曾经使用tipe,但我一直讨厌它的外观。现在我使用typ
  • @Bloke,我认为将其命名为typ 是有意义的。如果你有一个类car,你不想拥有一个属性car_type。语言不应该窃取通用名称。
  • 将 PEP 8 的建议扩展到内置函数,您可以使用 type_
【解决方案2】:

你可以,这很好。尽管不隐藏内置函数的建议很重要,但如果标识符很常见,它的适用性会更强,因为它会增加混淆和冲突。 type 似乎不会在这里引起混淆(但你会比其他任何人都更了解这一点),我可以完全使用你所拥有的。

【讨论】:

  • +1 用于提及潜在的混淆。我认为这比可能隐藏内置函数的技术问题要大得多:阅读代码的人(甚至可能是编写代码的人)可能会期望 type 引用内置函数。相比之下,意外隐藏内置 type 的可能性似乎很小:在实际代码中并不经常使用它。
【解决方案3】:

您可以使用任何非关键字作为标识符(当然,只要是valid identifier)。 type 不是关键字,但使用它会影响内置的 type

【讨论】:

    【解决方案4】:

    您可以,但您会屏蔽内置名称类型。所以最好不要那样做。

    【讨论】:

      【解决方案5】:

      您可以为此使用_type。例如:

      def foo(_type):
          pass
      

      如果您使用type,则不能在该函数中使用type()。例如:

      >>> type('foo')
      <type 'str'>
      >>> type = 'bar'
      >>> type('foo')
      Traceback (most recent call last):
        File "<input>", line 1, in <module>
      TypeError: 'str' object is not callable
      

      【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-12-19
      • 2019-02-14
      • 1970-01-01
      • 2013-09-20
      • 2022-11-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多