在python中将代码更新为更好的结构



我有一个代码可以计算一些东西,有很多硬编码的值和双工性,我只需要帮助以这样一种方式排列它,它看起来不会很乱。

这不是我的实际代码,而是我的代码的基本结构

def my_code():
a = [func1(x),func2(x),func3(x)]
return a
def func1(x):
func1_x =  #calculation using x formula
func1_dict = {}
func1["name"] = #some f1hardcoded name
func1["school"] = "some f1hardcoded value"
func1["school_address"] = "some f1hardcoded value"
func1["score_in_written"] = f" func1 student scored {func1_x} percentage "
func1["score_in_perc"] = func1_x
def func2(x):
func2_x = #some calculation using y formula
func2_dict = {}
func2["name"] = #some f2hardcoded name
func2["school"] = "some f2hardcoded value"
func2["school_address"] = "some f2hardcoded value"
func2["score_in_written"] = f" func1 student scored {func2_x} percentage "
func2["score_in_perc"] = func2_x
def func3(x):
func3_x = #some calculation using z formula
func3_dict = {}
func3["name"] = # f3 related some hardcoded name
func3["school"] = " f3 related some hardcoded value"
func3["school_address"] = " f3 related hardcoded value"
func3["score_in_written"] = f" func1 student scored {func3_x} percentage "
func3["score_in_perc"] = func3_x

对于特定函数中的任何x值,硬编码值基本上都不会改变,只有百分比和score_in_writen中的分数会改变。

由于我有很多这样的函数(直到func9(,有什么方法可以把它变成更好的代码结构吗?有什么方法可以让这个代码变得整洁干净吗?

您可以使用类来构造重复值,如下所示:


class StudentAcademics:
def __init__(self, name, school, schoolAddress, score):
self.name = name
self.school = school
self.schoolAddress = schoolAddress
self.scoreInWritten = f" func1 student scored {score} percentage "
self.scoreInPercent = score
score =  #calculation using x formula
student_academics_1 = StudentAcademics("John", "xyz school", "xyz address", score)
score =  #calculation using y formula
student_academics_2 = StudentAcademics("Tom", "abc school", "abc address", score)
score =  #calculation using z formula
student_academics_2 = StudentAcademics("Bill", "jkl school", "jkl address", score)

现在,当你想再次访问数据时,你可以简单地做:

print("name {} studied at {}".format(student_academics_1.name, student_academics_1.school))

如果你还有任何问题,请告诉我。

您可以看到的是创建多个类,每个类似操作的子部分都有一个类。然后创建合并所有这些类的主类。这样一来,它看起来既干净又有条理。只需阅读python类以及如何创建对象。

最新更新