如何将'if'语句传递给python方法?

时间:2011-07-12 13:38:52

标签: python

我想将一个可选的'if'语句传递给要执行的python方法。例如,该方法可能会将某些文件从一个文件夹复制到另一个文件夹,但该方法可能会采用可选条件。

因此,例如,对该方法的一次调用可以说“如果source.endswith(”。exe“)

,则将文件从源复制到dest

下一个调用可能只是将文件从源复制到目的地而无条件。

下一个电话可能是将文件从源复制到目的地如果今天是星期一

如何将这些条件传递给python中的方法?

3 个答案:

答案 0 :(得分:14)

功能是对象。它只是一个返回布尔结果的函数。

def do_something( condition, argument ):
   if condition(argument):
       # whatever

def the_exe_rule( argument ):
    return argument.endswith('.exe')

do_something( the_exe_rule, some_file )

Lambda是另一种创建这种功能的方法

do_something( lambda x: x.endswith('.exe'), some_file )

答案 1 :(得分:5)

您可以将lambda表达式作为可选参数传递:

def copy(files, filter=lambda unused: True):
    for file in files:
        if filter(file):
            # copy

默认的lambda总是返回true,因此,如果没有指定条件,则复制所有文件。

答案 2 :(得分:0)

认为你可以使用这样的东西:

def copy_func(files, destination, condition=None):
    for fileName in files:
        if condtition is None or condition(fileName):
            #do file copy

copy_func(filesToCopy, newDestionation) # without cond
copy_func(filesToCopy, newDestionation, lambda x: x.endswith('.exe')) # with exe cond