在我的python代码中是否有可能实现紧凑的IF语句?
目前我有3条If语句是这样做的:在我的python代码中是否有可能实现紧凑的IF语句?,python,if-statement,Python,If Statement,目前我有3条If语句是这样做的: if filetype not in filetypes: print(f' SKIPPED - WRONG FILETYPE: {filetype}') continue elif 'comments' in meme_url or 'gallery' in meme_url: print(' SKIPPED - NOT A MEME') continue elif meme_id in memes or meme_
if filetype not in filetypes:
print(f' SKIPPED - WRONG FILETYPE: {filetype}')
continue
elif 'comments' in meme_url or 'gallery' in meme_url:
print(' SKIPPED - NOT A MEME')
continue
elif meme_id in memes or meme_id in used_memes:
print(' SKIPPED - USED')
continue
def filter_by_name(filename, meme_url, used_memes):
'''
Returns True if filtered IN for more processing. False, if filtered out.
'''
filters = [filter_by_name, filter_by_comment, filter_by_id]
filtered_out = False
for filter_function in filters:
if not filter_function(filename, meme_url, used_memes):
print(f'Not selected because did not pass through {filter_function}')
filtered_out = True
break
if filtered_out:
continue
# Passed though all filters so process more
这些是对无效图像的排序,我希望能够追溯哪个“过滤器”起作用(目前是通过打印(“问题”)完成的)
尽管如此,这段代码“闻起来”很糟糕,所以我对更智能的解决方案感兴趣,如果有的话。提前感谢。您可以这样做:
if filetype not in filetypes:
print(f' SKIPPED - WRONG FILETYPE: {filetype}')
continue
elif 'comments' in meme_url or 'gallery' in meme_url:
print(' SKIPPED - NOT A MEME')
continue
elif meme_id in memes or meme_id in used_memes:
print(' SKIPPED - USED')
continue
def filter_by_name(filename, meme_url, used_memes):
'''
Returns True if filtered IN for more processing. False, if filtered out.
'''
filters = [filter_by_name, filter_by_comment, filter_by_id]
filtered_out = False
for filter_function in filters:
if not filter_function(filename, meme_url, used_memes):
print(f'Not selected because did not pass through {filter_function}')
filtered_out = True
break
if filtered_out:
continue
# Passed though all filters so process more
但正如在评论中提到的,您将拥有一个函数,其中包含一些他们甚至不使用的参数。它们都使用(基于)不同的标准进行过滤。即使将它们放在单独的函数中,也会有一些函数带有无关的参数?你有3个独立的条件,所以你有3个检查。