Python - 元组赋值中有“无关”符号吗?
给定一个字符串 "VAR=value",我想要在第一个 '=' 符号处分割它(只在第一个 '=' 符号处分割,后面的
var, sep, value = "VAR=value".partition('=')
有没有办法不声明一个变量 'sep'?像这样(这个语法是我自己编的):
var, -, value = "VAR=value".partition('=')
为了完整起见,我的目标是 Python 2.6 版本
9 个回答
在这个编程语言里,没有什么官方的规定可以用来解决这个问题;你可以随便用一个临时变量。至于标准,我看到在Python和其他语言中,有时会用下划线。唯一的问题是,下划线在本地化时被用作gettext
的别名。不过,如果你不做本地化,或者不使用全局绑定的话,下划线应该是没问题的。
快到了:
var, _, value = "VAR=value".partition('=')
_
通常被认为是一个不关心的变量。
_
确实是一个很常用的选择,代表“一个不重要的名字”——它是合法的名字,看起来也不显眼等等。不过,有时候这些特点反而会给你带来困扰。例如,GNU 的 gettext 模块用于国际化和本地化,它是 Python 标准库的一部分,通常会用 _
来做不同的事情,比如...:
_ = gettext.gettext
# ...
print _('This is a translatable string.')
用来标记和翻译代码中的所有字符串消息(同时也利用了 _('...')
的视觉不显眼性)。显然,任何使用这个模块和这种用法的代码,都不应该再用 _
来表示完全不同的意思(“一个不在乎的名字”)。
所以,另一个有用的选择是用 unused
这个名字来明确表示这种“不在乎”的情况,这样看起来更直观。谷歌的 Python 风格指南 推荐使用 _
或者一个以 unused_
开头的名字——后者虽然有点啰嗦,但通常非常清晰,例如:
name, unused_surname, salutation = person_data
print "Hello, %s %s!" % (salutation, name)
这就清楚地表明 person_data
是一个包含三个项目的序列(可能是一个元组),而你跳过的那个项目(完全不使用)是姓氏(因为你想打印一个友好的消息,比如“你好,亚历克斯先生!”或者“你好,皮吉小姐!”;-)。 (pylint
和类似的工具会提醒你,如果你有未使用的变量名不是 _
或 unused_...
,当然也会提醒你如果你真的使用了一个名为 unused_something
的变量!-)