Python 在IF语句之后如何重复两个相同的过程?
在我定义了一些函数之后,我希望两个函数在IF循环中调用它们,只要满足一些条件:Python 在IF语句之后如何重复两个相同的过程?,python,python-3.x,if-statement,Python,Python 3.x,If Statement,在我定义了一些函数之后,我希望两个函数在IF循环中调用它们,只要满足一些条件: if __name__== "__main__": if args['param'] == None: fun_1(x, y, z) fun_4(x, y, z) fun_2(x, y, z) #SAME fun_a(x, y, z) fun_b(x, y, z) fun_c(x, y, z) elif args['param'] == 'yes' or
if __name__== "__main__":
if args['param'] == None:
fun_1(x, y, z)
fun_4(x, y, z)
fun_2(x, y, z)
#SAME
fun_a(x, y, z)
fun_b(x, y, z)
fun_c(x, y, z)
elif args['param'] == 'yes' or args['param'] == 'y' and param == True:
fun_1(x, y, z)
fun_3(x, y, z)
fun_6(x, y, z)
#SAME
fun_a(x, y, z)
fun_b(x, y, z)
fun_c(x, y, z)
elif args['param'] == 'no' or args['param'] == 'n' and param == True:
fun_a(x, y, z)
fun_b(x, y, z)
fun_c(x, y, z)
但是,这是多余的,因为我调用了相同的函数:
fun_a(x, y, z)
fun_b(x, y, z)
fun_c(x, y, z)
在第一个和第二个IF语句中。在这里如何称呼fun_a、fun_b和func_c:
if __name__== "__main__":
if args['param'] == None:
fun_1(x, y, z)
fun_4(x, y, z)
fun_2(x, y, z)
#SAME
fun_a(x, y, z)
fun_b(x, y, z)
fun_c(x, y, z)
elif args['param'] == 'yes' or args['param'] == 'y' and param == True:
fun_1(x, y, z)
fun_3(x, y, z)
fun_6(x, y, z)
#SAME
fun_a(x, y, z)
fun_b(x, y, z)
fun_c(x, y, z)
您可以按如下方式重写它:
if __name__== "__main__":
if args['parm'] is None:
fun_1(x, y, z)
fun_4(x, y, z)
fun_2(x, y, z)
elif args['parm'] == 'yes' and param:
fun_1(x, y, z)
fun_3(x, y, z)
fun_6(x, y, z)
if args['parm'] is None or (param and args['parm'] in ['yes', 'no']):
fun_a(x, y, z)
fun_b(x, y, z)
fun_c(x, y, z)
请注意,您应该使用
foo is None
,而不是foo==None
,并且foo==True
与foo
相同。您可以使用初始化为True
的布尔标志,并且只有在不满足任何所需条件时才设置False
,并且仅当标志为True
时才运行公共函数:
postprocessing = True
if args['param'] == None:
fun_1(x, y, z)
fun_4(x, y, z)
fun_2(x, y, z)
elif args['param'] == 'yes' or args['param'] == 'y' and param == True:
fun_1(x, y, z)
fun_3(x, y, z)
fun_6(x, y, z)
elif not (args['param'] == 'no' or args['param'] == 'n' and param == True):
postprocessing = False
if postprocessing:
fun_a(x, y, z)
fun_b(x, y, z)
fun_c(x, y, z)
if-elif-else语句的格式不是如下所示:
if args['parm'] == None:
#do something
elif args['parm'] == 'yes' and param == True:
#do something else
else ##args['param'] == 'no' and param == True:
#do something left
我从未见过关键字else后面的条件
在这里如何称呼fun_a、fun_b和func_c:
if __name__== "__main__":
if args['param'] == None:
fun_1(x, y, z)
fun_4(x, y, z)
fun_2(x, y, z)
#SAME
fun_a(x, y, z)
fun_b(x, y, z)
fun_c(x, y, z)
elif args['param'] == 'yes' or args['param'] == 'y' and param == True:
fun_1(x, y, z)
fun_3(x, y, z)
fun_6(x, y, z)
#SAME
fun_a(x, y, z)
fun_b(x, y, z)
fun_c(x, y, z)
在if-else分支中,实际上每个函数只调用一次
但是,正如Ami Tavory所示的例子,您可以使用if-elif而不是其他方法重构代码
if args['parm'] is None:
# do something
elif args['parm'] == 'yes' and param:
# do something else
fun_a(x, y, z)
fun_b(x, y, z)
fun_c(x, y, z)
你有语法错误,
else
不能有条件我知道@OlivierMelançon,还有什么方法可以不重复地重新格式化语句?请先修复它,它会使你想做的事情模棱两可请澄清你想做的事。适用于这里。在您发布MCVE代码并准确指定问题之前,我们无法有效地帮助您。我们应该能够将您发布的代码粘贴到文本文件中,并重现您指定的问题。StackOverflow不是编码、评论或教程资源。。。。什么是IF循环
如果
是一个条件语句,循环是的或而
语句…我不知道这个是什么,你能详细说明一下吗?@anon看看如果我再加一个值会怎么样?。。。检查我的更新版本谢谢你的帮助!很高兴能帮上忙。添加另一个值与此答案中的操作无关。关键是要根据条件设置标志,因此条件在这里并不重要。这是一个更直观的好答案!no
或n
参数如何?