Python-如何使两个非常相似的代码块缩短1/2?

Python-如何使两个非常相似的代码块缩短1/2?,python,python-3.x,Python,Python 3.x,是否可以重用一个函数,例如,缩短下面的代码 x,y,m=3,5,10 如果x==0: 通过#代码块1 elif x==m: 通过#代码块2 其他: 通过#代码块1 通过#代码块2 如果y==0: 通过#代码块3 elif y==m: 通过#代码块4 其他: 通过#代码块3 通过#代码块4 编辑:非工作示例可能如下所示: x_val = {value: code1_as_string, value2: code2_as_string} y_val = {value: code1_as_strin

是否可以重用一个函数,例如,缩短下面的代码

x,y,m=3,5,10
如果x==0:
通过#代码块1
elif x==m:
通过#代码块2
其他:
通过#代码块1
通过#代码块2
如果y==0:
通过#代码块3
elif y==m:
通过#代码块4
其他:
通过#代码块3
通过#代码块4
编辑:非工作示例可能如下所示:

x_val = {value: code1_as_string, value2: code2_as_string}
y_val = {value: code1_as_string, value2: code2_as_string}

exec(x_val[x])
exec(y_val[y])
def func(变量、代码1、代码2):
如果var!=m:
代码1
如果var!=0:
代码2
func(x,代码块1,代码块2)
func(y,代码块3,代码块4)
EDIT2:我在YouTube/Twitch上看到有人(Ottomated)在使用我想到的东西,但不是Python。Python中是否可能有类似的结构? 代码块显然非常不同,但插入变量或函数名的想法是相似的


(很抱歉图像质量不好)

我可能会这样写:

x, y, m = 3, 5, 10

if x != m:
    pass  # code block 1
if x != 0:
    pass  # code block 2

if y != m:
    pass  # code block 3
if y != 0:
    pass  # code block 4

我可以这样写:

x, y, m = 3, 5, 10

if x != m:
    pass  # code block 1
if x != 0:
    pass  # code block 2

if y != m:
    pass  # code block 3
if y != 0:
    pass  # code block 4

我想你可以试试这样的东西:

x_val = {value: code1_as_string, value2: code2_as_string}
y_val = {value: code1_as_string, value2: code2_as_string}

exec(x_val[x])
exec(y_val[y])

但我不认为这是最佳/最清晰的方式,我认为最好是在每种情况下都使用if-else的普通方式来做

我想你可以尝试这样的方式:

x_val = {value: code1_as_string, value2: code2_as_string}
y_val = {value: code1_as_string, value2: code2_as_string}

exec(x_val[x])
exec(y_val[y])

但我不认为这是最佳/最清晰的方式,我认为最好是在每种情况下都使用if else的通用方式来做

因为这是您想要改进的工作代码,它可能更适合,您可以从中获得改进方法的建议,但一定要遵守他们的规则。总之,是的,您可以定义函数&调用它们而不是复制代码块(这是使用函数的关键优势之一)。您还可以改进用于条件的逻辑,以进一步重构代码。旁白:请不要使用
max
作为变量名,它已经是一个内置函数了。因为这是您想要改进的工作代码,所以它可能更适合,您可以从中获得改进方法的建议,但一定要遵守他们的规则。简言之,是的,您可以定义函数&调用它们而不是复制代码块(这是使用函数的关键优势之一)。您还可以改进用于条件的逻辑,以进一步重构代码。旁白:请不要使用
max
作为变量名,它已经是一个内置函数了。