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)
您可以将lambda表达式作为可选参数传递:
def copy(files, filter=lambda unused: True):
for file in files:
if filter(file):
# copy
Run Code Online (Sandbox Code Playgroud)
默认的lambda始终返回true,因此,如果未指定条件,则复制所有文件.