Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/362.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在我的python代码中是否有可能实现紧凑的IF语句?_Python_If Statement - Fatal编程技术网

在我的python代码中是否有可能实现紧凑的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_

目前我有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_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个检查。