是否可以以列表的形式输入函数的参数。 例如 -
list1 = ["somethin","some"]
def paths(list):
import os
path = os.path.join() #I want to enter the parameters of this function from the list1
return path
好的,我得到了答案,但只是一个与此相关的附加问题 - 这是我的代码 -
def files_check(file_name,sub_directories):
"""
file_name :The file to check
sub_directories :If the file is under any other sub directory other than the application , this is a list.
"""
appname = session.appname
if sub_directories:
path = os.path.join("applications",
appname,
*sub_directories,
file_name)
return os.path.isfile(path)
else:
path = os.path.join("applications",
appname,
file_name)
return os.path.isfile(path)
我收到此错误 -
SyntaxError: only named arguments may follow *expression
请帮帮我。
答案 0 :(得分:5)
您可以unpack the sequence使用splat运算符(*
):
path = os.path.join(*my_list)
<强>演示:强>
>>> import os
>>> lis = ['foo', 'bar']
>>> os.path.join(*lis)
'foo\\bar'
<强>更新强>
要回答您的新问题,在参数中使用*
后,您无法传递位置参数,您可以在此处执行以下操作:
from itertools import chain
def func(*args):
print args
func(1, 2, *chain(range(5), [2]))
#(1, 2, 0, 1, 2, 3, 4, 2)
不要将list
用作变量名称
答案 1 :(得分:2)
只需使用*
运算符
path = os.path.join(*list)
答案 2 :(得分:1)