在此示例中,星號運算符對輸入參數列表做了什麼?在列表中使用星號運算符的目的
def main(name, data_dir='.'):
print 'name', type(name)
if __name__ == '__main__':
main(*sys.argv)
具體而言,如果我與明星的操作運行該程序將打印:
name <type 'str'>
如果沒有星運行main(sys.argv)
它打印:
name <type 'list'>
在此示例中,星號運算符對輸入參數列表做了什麼?在列表中使用星號運算符的目的
def main(name, data_dir='.'):
print 'name', type(name)
if __name__ == '__main__':
main(*sys.argv)
具體而言,如果我與明星的操作運行該程序將打印:
name <type 'str'>
如果沒有星運行main(sys.argv)
它打印:
name <type 'list'>
*
運營商unpacks an argument list。它允許你使用列表項作爲單獨的參數來調用一個函數。
例如,如果sys.argv
是["./foo", "bar", "quux"]
,main(*sys.argv)
相當於main("./foo", "bar", "quux")
。
main(*sys.argv)
電話main
與列表sys.argv
的內容作爲的各自參數的方法和在這種情況下等效於:取決於sys.argv
長度
main(sys.argv[0])
或
main(sys.argv[0], sys.argv[1])
。
因此,如果您使用星號調用它,它將傳遞到name
列表sys.argv
的第一個元素。
如果您不帶星號稱呼它,它將傳遞到name
整個列表sys.argv
。
可能的重複[對Python參數有什麼**和*做什麼?](http://stackoverflow.com/questions/36901/what-does-and-do-for-python-parameters) –