python函数的多个输入

Multiple inputs for a python function

本问题已经有最佳答案,请猛点这里访问。

我从python开始,尝试创建一个函数。我遇到的麻烦是:

1
2
3
4
5
6
#~ 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)

我想知道的是,是否可以提供

1
def make_dir(a,b,c,d,r)  #where a,b,c,d,r are directory names.

我该怎么做呢?

如果这是一个显而易见的问题,我道歉。


python对此有特定的语法。它通常被称为*args。当Python在函数定义中看到这一点时,它允许函数调用者向函数传递变量数量的参数。

*args语法中使用的变量(元组)可用于访问参数。在您的例子中,您可以简单地循环这些参数并相应地处理它们。

1
2
3
4
5
6
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是常见的做法,但在我看来,将其重命名以适合每个特定的情况要好得多。这样,您就可以清楚地传递函数期望的参数类型。


或者将变量作为一个序列传递,如tuplelist。或者使用splat操作符*来解包变量数量的参数。

1
2
def foo(*args):
    return args

样品输出:

1
2
>>> foo(1, 2, 3)
(1, 2, 3)


可以将变量arguments变量与*directorynames一起使用,并在函数中使用for循环:

1
2
3
4
5
6
7
8
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_))

当做。