我从Python开始,并尝试创建一个函数。 我遇到麻烦的是:
#~ this function should make a directory only if it doesn't exist
def make_dir(directoryname):
if not os.path.exists(directoryname):
return os.makedirs(directoryname)
else:
print "la carpeta %s ya existe" %(directoryname)
我想知道的是,是否可以提供多种输入,例如
def make_dir(a,b,c,d,r) #where a,b,c,d,r are directory names.
我该怎么办呢。
如果这是一个明显的问题,我道歉。
答案 0 :(得分:4)
Python具有特定的语法。它通常被称为*args
。当Python在函数定义中看到它时,它允许函数调用者将可变数量的参数传递给函数。
然后可以使用*args
语法中使用的变量(它是一个元组)来访问参数。在您的情况下,您可以简单地循环遍历参数并相应地处理它们。
def make_dir(*dirs):
for directory in dirs:
if not os.path.exists(directory):
return os.makedirs(directory)
else:
print "la carpeta %s ya existe" %(directory)
请务必注意,您可以在args
中将 *args
命名为您想要的任何内容。我将其重命名为dirs
(目录的缩写)。虽然通常的做法是简单地命名*args
,但在我看来,重命名它以适应每个特定情况要好得多。这样,您可以清楚地传达您的函数所期望的参数类型。
答案 1 :(得分:1)
将变量作为序列传递,例如tuple
或list
。或者使用splat运算符*
来解压缩可变数量的参数。
即
def foo(*args):
return args
示例输出:
>>> foo(1, 2, 3)
(1, 2, 3)
答案 2 :(得分:0)
您可以将变量arguments变量与* directorynames一起使用,并在函数中使用for循环:
import os
def make_dir(*directorynames):
for dir_ in directorynames:
if not os.path.exists(dir_):
return os.makedirs(dir_)
else:
print("la carpeta %s ya existe" %(dir_))
问候。