python函数的多个输入

时间:2017-06-12 22:30:38

标签: python

我从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.

我该怎么办呢。

如果这是一个明显的问题,我道歉。

3 个答案:

答案 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)

将变量作为序列传递,例如tuplelist。或者使用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_))

问候。