【问题标题】:Is it more "pythonic" to use str() instead of ""?使用 str() 而不是“”更“pythonic”吗?
【发布时间】:2014-07-23 20:07:52
【问题描述】:

正如大多数 Python 用户所知,有两种方法可以将 x 创建为空字符串或列表(或者,对于整数,0)。你可以这样做:

x = str()
y = list()
z = int()

或者,你可以这样做:

x = ""
y = []
z = 0

我知道这些语句在语义上是相同的,但其中一个比另一个更受鼓励(因为在某些情况下map()for x in y... 更受鼓励)?

【问题讨论】:

标签: python


【解决方案1】:

我认为这是更常见和更pythonic的做法

x = ""
y = []
z = 0

它更明确,因为您不希望读者知道类型的默认值是什么。

【讨论】:

  • 我倾向于同意这个答案,但出于不同的原因:这些最初是用于更改变量类型的函数(即,您可以将 int()list() 应用于字符串)。
【解决方案2】:

str([object]) 返回对象的可打印表示。

list([iterable]) 返回一个基于可迭代的列表

int([object]) 将字符串或数字转换为整数。

如果没有传递参数,这些函数中的每一个都会返回一个默认值。我不确定你为什么要使用这些函数而不是 ""[]0

【讨论】:

  • 我倾向于同意,请参阅我对 @Bartosz 答案的评论。
  • 有一些伟大的 pythonistas 至少在容器类型上不同意我们:stackoverflow.com/a/2745292/748858
  • 风格偏好。我可以尊重:)
【解决方案3】:

我喜欢按照“说出你的意思”的口头禅来生活。如果您想要一个空字符串,请使用""。如果你想要0,请使用0

函数形式对于获取任意内置函数的空值很有用:

d = defaultdict(list)

作为一个方面的好处,当您使用文字时,它也稍微快一些,因为 python 不需要查找 intstrlist 可能会被隐藏。


值得指出的是,有famous pythonistas不同意我的观点。

【讨论】:

  • 哇,从来不知道defaultdict() 位。我想知道如果你自己使用它会发生什么......
  • @KnightOfNi:会变成二维默认字典:defaultdict(defaultdict)。但是如果你尝试查找一个不存在的键d[missing][key],你最终会得到一个KeyError。但是,作业确实有效,例如d[new][key] = 1337。顺便说一句:这样的任意内置函数被官方称为 default factory
  • @KnightOfNi -- defaultdict 不能用于自身,因为 default_factory 传递了 0 个参数。你可以这样做:factory = lambda: defaultdict(factory) 然后d = defaultdict(factory) ;-)
猜你喜欢
  • 1970-01-01
  • 2017-05-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-23
相关资源
最近更新 更多