2012年1月18日 星期三

[Python]starred expression

Python 3.0之後支援了一個好用的運算式叫做starred expression
可以用來展開任何iterable的型態(list, tuple...)
使用方法很簡單,只要在list前面加上一個*就可以了
以下是一個簡單範例:

>>> first, *rest = [1, 2, 3, 4, 5]
>>> first, rest
(1, [2, 3, 4, 5])

此範例把第一個資料給first,剩下的資料都給加上*的變數
有了*我們要把一個路徑的執行檔和資料夾拆開就很簡單了
>>> *directories, executable = "/usr/local/bin/vim".split("/")
>>> directories, executable
(['', 'usr', local', 'bin'], 'vim')

當然Python 3.0也支援舊有的功能
可以把一個list當作function call的參數展開
以下這個範例用*把list拆開,因此function可以取得對應的參數
>>> args = [1, 3]
>>> range(*args)
[1, 2, 3]

沒有留言:

張貼留言