我想将一个可选的'if'语句传递给要执行的python方法。例如,该方法可能会将某些文件从一个文件夹复制到另一个文件夹,但该方法可能会采用可选条件。
因此,例如,对该方法的一次调用可以说“如果source.endswith(”。exe“)
,则将文件从源复制到dest下一个调用可能只是将文件从源复制到目的地而无条件。
下一个电话可能是将文件从源复制到目的地如果今天是星期一
如何将这些条件传递给python中的方法?
答案 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