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

sho*_*ews 4 python arguments if-statement function

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

因此,例如,对方法的一次调用可以说" 如果source.endswith(".exe")将文件从源复制到dest .

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

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

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

S.L*_*ott 13

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

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 )
Run Code Online (Sandbox Code Playgroud)

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

do_something( lambda x: x.endswith('.exe'), some_file )
Run Code Online (Sandbox Code Playgroud)


Bjö*_*lex 5

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

def copy(files, filter=lambda unused: True):
    for file in files:
        if filter(file):
            # copy
Run Code Online (Sandbox Code Playgroud)

默认的lambda始终返回true,因此,如果未指定条件,则复制所有文件.