2017-03-05 58 views
-1

我正在构建一个简单的控制台实用程序,用户需要输入并获取输出。参数存储在参数中:splat运算符用Python中的空列表做什么?

$ ls -optional_arg 
args = ['ls', '-optional_arg'] 

当某些命令仅作为唯一参数给出时,我必须处理输入。

$ ls 
args = ['ls'] 

切片超出范围与图示符(“*”)不带参数的函数中使用时能正常工作,但我没有找到做任何解释。

func_without_param(*args[1:]) 

dirname 
things.zip 

任何人都可以解释我在幕后发生了什么,当我们拆开使用图示列表为空?

+0

什么不清楚?正如你所看到的那样,它根本不会发送任何参数。 – TigerhawkT3

回答

0

如果args == ['ls']然后args[1:] == []func_without_param(*[])相当于func_without_param()

+0

我认为OP意识到它是一个空列表(“当我们用splat解压一个空列表时”)。他们也看到,它相当于不发送任何参数(“正常工作”)。我不确定他们要求的其他信息。 – TigerhawkT3

+0

谢谢,约翰,我明白这是关于一个空的列表。只是想知道是否某个特定的“空”类型被传递给了一个函数。看起来这只是无效的。 – Kirill

+0

你的问题'func()'是如何工作的? 'func(* [])'实际上等同于'func()'。或者你问如何func(* [])'变成'func()'? –