我是一个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
对我来说这听起来很合理。你知道吗
有没有办法避免Python中的(无用的)变量b
?
除了名称空间污染,还有另一个问题与我有关:可读性和可维护性。定义b
时,潜在的维护人员必须搜索使用b
的位置(如果有的话)。一种解决方案是命名约定,如_unused_b
。这就是解决办法吗?你知道吗
因为你选择了按位置或者采取特定的元素
或者排除其他人
它们使用list comprehension和enumerate
一种让人想起Perl的
undef
的方法是使用_
作为一个一次性变量,但是正如在注释中所指出的,这与国际化冲突,因为_
可能正在使用。见answers in this post。你知道吗相关问题 更多 >
编程相关推荐