我是一個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