【python】重复度很高的两段代码精简的问题
本帖最后由 MyModHeaven 于 2022-6-11 08:45 编辑[*]如上图,上下两部分不同的都已标注(少标了一个处),共有三种,内容分别是:checkIn/checkOut, tabCheckIn/tabCheckOut, '入库'/'出库'
[*]函数可以提高代码的复用性,但是引用同一个函数的时候,变化的是变量。像这种情况,变化的是一条语句中间的某个对象,该怎么弄?(我还碰到过,几段重复性很高的代码中,变化的是某条语句的有无,这又该怎么搞?)
[*]代码如下:
item = self.checkIn.horizontalHeaderItem(0)
item.setText(_translate("MainWindow", "日期"))
item = self.checkIn.horizontalHeaderItem(1)
item.setText(_translate("MainWindow", "编码"))
item = self.checkIn.horizontalHeaderItem(2)
item.setText(_translate("MainWindow", "名称"))
item = self.checkIn.horizontalHeaderItem(3)
item.setText(_translate("MainWindow", "内存"))
item = self.checkIn.horizontalHeaderItem(4)
item.setText(_translate("MainWindow", "颜色"))
item = self.checkIn.horizontalHeaderItem(5)
item.setText(_translate("MainWindow", "计量单位"))
item = self.checkIn.horizontalHeaderItem(6)
item.setText(_translate("MainWindow", "单价"))
item = self.checkIn.horizontalHeaderItem(7)
item.setText(_translate("MainWindow", "数量"))
item = self.checkIn.horizontalHeaderItem(8)
item.setText(_translate("MainWindow", "金额"))
self.tabWidget.setTabText(self.tabWidget.indexOf(self.tabCheckIn), _translate("MainWindow", "入库"))
item = self.checkOut.horizontalHeaderItem(0)
item.setText(_translate("MainWindow", "日期"))
item = self.checkOut.horizontalHeaderItem(1)
item.setText(_translate("MainWindow", "编码"))
item = self.checkOut.horizontalHeaderItem(2)
item.setText(_translate("MainWindow", "名称"))
item = self.checkOut.horizontalHeaderItem(3)
item.setText(_translate("MainWindow", "内存"))
item = self.checkOut.horizontalHeaderItem(4)
item.setText(_translate("MainWindow", "颜色"))
item = self.checkOut.horizontalHeaderItem(5)
item.setText(_translate("MainWindow", "计量单位"))
item = self.checkOut.horizontalHeaderItem(6)
item.setText(_translate("MainWindow", "单价"))
item = self.checkOut.horizontalHeaderItem(7)
item.setText(_translate("MainWindow", "数量"))
item = self.checkOut.horizontalHeaderItem(8)
item.setText(_translate("MainWindow", "金额"))
self.tabWidget.setTabText(self.tabWidget.indexOf(self.tabCheckOut), _translate("MainWindow", "出库")) 1.带形参的函数
2.继承 把变量都弄成数组,直接循环 忆白学渣 发表于 2022-6-11 08:51
把变量都弄成数组,直接循环
变化的不全是变量呢,比如:item = self.checkIn.horizontalHeaderItem(0) 变成了 item = self.checkOut.horizontalHeaderItem(0),这该怎么办啊? 我感觉不太好办哈哈,菜鸟建议,加个判断,不同情况进不一样的循环{:1_893:} 这样试试
https://s2.loli.net/2022/06/11/Y1ex2gwRhalcurs.png 可以考虑弄三个数组
{0,1,2,3,4,5,6,7,8,0,1,2,3,4,5,6,7,8}
{0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1}0是checkIn 1是checkOut
{"日期","编码"........)
全都一一对应,然后弄一个循环
判定第二个数组是0就checkIN,第一个数组是8了就多一个setTabText
大爱九月 发表于 2022-6-11 10:08
可以考虑弄三个数组
{0,1,2,3,4,5,6,7,8,0,1,2,3,4,5,6,7,8}
{0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1}0 ...
如果规则比较固定,直接两个数组就可以
{0,1,2,3,4,5,6,7,8}
{"日期",“编码”.....,"金额"}
然后固定循环18次(从1-18),小于等于9就是CheckIn,大于9就checkOut,循环次数%9==0就多一个setTabText 设置函数,带形参,然后引用即可 MyModHeaven 发表于 2022-6-11 08:57
变化的不全是变量呢,比如:item = self.checkIn.horizontalHeaderItem(0) 变成了 item = self.checkOut. ...
函数也可以看成变量,放在list/tuple里
页:
[1]
2