about 3 years ago

Reduce Visual Noise with Variable Positional Arguments

相當基本的一個條款,講得是不定長度引數

1.py
def log(message, values):
    if not values:
        print(message)
    else:
        values_str = ', '.join(str(x) for x in values)
        print('%s: %s' % (message, values_str))

log('My numbers are', [1, 2])
log('Hi there', [])
2.py
def log(message, *values):
    if not values:
        print(message)
    else:
        values_str = ', '.join(str(x) for x in values)
        print('%s: %s' % (message, values_str))

log('My numbers are', 1, 2)
log('Hi there')

很明顯地第二個比第一個來得有彈性

不過使用時要小心,如果呼叫端傳入 generator 的話,有可能產生很大的 tuple ,所以要注意傳入的物件,最好是長度能夠掌握的。

← Effective Python 心得筆記: Item 17 Effective Python 心得筆記: Item 19 →
 
comments powered by Disqus