我是一个Perl人,目前正在学习Python。如果我在Perl名单,我可以将它的值(成员),以明确的变量,像这样:如何在分配显式变量时忽略某些元组成员?
my ($a, $b, $c) = ('one', 'two', 'three');
现在$a == 'one'
,$b == 'two'
,$c == 'three'
。非常类似于Python。
如果我对例如第二个成员,我可以在Perl写:
my ($a, undef, $c) = ('one', 'two', 'three');
现在$a == 'one'
,并$c == 'three'
。没有$b
。 'two'
只是被Perl抛弃。这避免了发明无用的变量(在这种情况下为$b
)并污染了名字空间,我很欣赏。
Python中是否有类似的习语?
toople = (1, 2, 3)
a, None, c = toople
给出SyntaxError: cannot assign to None
这听起来对我来说很合理。
有没有办法避免Python中的(无用的)变量b
?
除了命名空间污染之外,还有另一个问题值得关注:可读性和可维护性。当定义b
时,潜在维护者必须搜索使用哪个b
(如果有的话)。一种解决方案是命名约定,如_unused_b
。这是解决方案吗?
您是否考虑过减少右手边而不是解开整个元组? – rth
@rth是的。但在我的情况下这是不可行的。我正在为第三方工具编写插件,我应该写的函数给了我一个包含N个元素的元组,但我只对其中的一些元素感兴趣。 – PerlDuck
如果你保存你的元组,你可以操作它,就像这样'x =(1,2,3),A,B = x [:1] + x [2:]',不是吗?但我知道这并不好。 numpy可以做花哨的事情,但只有数字。 – rth