python - 具有另一个函数作为可选参数的函数
问题描述
我正在尝试编写一个将另一个函数作为可选参数的函数。我对语法有点困惑(和困惑)。我希望 func2 成为可选参数。所以我只希望它在 func1 中调用它时工作。当我有更复杂的文件模式时,我希望它可以用作过滤器功能。glob.glob(files + '/*')
可以给出指定目录下的所有文件。(glob.glob(path + '/' + file_name + '*'))
可以提供更复杂的模式,我只是不确定如何将它实现为可选函数参数。任何帮助将非常感激!
import glob
def func1(dirs, func2):
if type(dirs) == list:
for files in dirs:
files = glob.glob(files + '/*')
print(files) # prints all of the file names in each directory given
if func2:
func2(file_name)
def func2(file_name):
if file_name in files:
print(file_name)
# (glob.glob(path + '/' + file_name + '*'))
func1(['C:\path\to\files1\', 'C:\path\to\files2\'], func2('test2'))
对于此示例,假设 \files1 包含“test1.txt”和“test2.txt”,而 files2 包含“test1.jpg”和“test2.jpg”。我想func1
打印 test2.txt 和 test1.jpg 的路径。
解决方案
唯一的区别是你如何传递函数。你目前正在通过return
of func2('test2')
,你应该只是通过func2
。还要确保传递files
给 func2,否则将不会被定义。
import glob
def func1(dirs, func2, another_variable):
if type(dirs) == list:
for files in dirs:
files = glob.glob(files + '/*')
print(files) # prints all of the file names in each directory given
if func2:
func2(another_variable, files)
def func2(file_name, files):
if file_name in files:
print(file_name)
# (glob.glob(path + '/' + file_name + '*'))
func1(['C:\path\to\files1\', 'C:\path\to\files2\'], func2, 'test_2')