大家好,因为工作上的需求写了一个目标系统为Windows的script,
程式码简化如下:
def main():
func1()
func2() # func2会让电脑重新开机
func3()
...
if __name__ == '__main__':
main()
问题出在func2执行完毕后会使电脑重新开机而使script执行中断,
而我希望重开完成后下一次执行时可以跳过func1跟func2,直接从func3处开始。
目前的做法是修改main(),引入一个新变量var和函式read_var,
并在重新开机以前建立一个档案写入数值:
def main()
# 新增一个var变量,
# 并使用read_var读取存在档案中的值指定给var
var = read_var()
if var == '0':
func1()
func2() # func2经修改后会在重开机前将'1'写入档案中
if var == '1':
func3()
...
但这样写我认为不直观,未来要改变执行顺序时也不好维护,
想请教各位是否有建议可以提供?
var变量改成bool型态的has_been_rebooted就很直观啦,而且你不管多不多这个判断,未来改变执行顺序的工都一样,不会因为没这个判断就比较少呀?
你觉得这样太乱 可以改在func1跟2里判断 重开过就直接early return
听起来在每个func内各自做判断然后early return,比较符合我现在的需求。实际的程式码有10个以上的func,还需要重开4次,若考虑到保留调换执行顺序的弹性,这样比较好改那如果要各自判断的话,是不是用装饰器比较好?
作者:
mantour (朱子)
2024-05-29 17:19:00有没有可能某个function前面做过一次后来又要做一次如果用一个list存执行步骤, 然后读一个N进来决定要从第几步继续跑? 这样要改顺序也很容易
作者:
mpk (小赖x)
2024-05-30 15:57:00重开机前先存一些资料到database或是先连到某个网页存资料
作者: anhi 2024-06-01 01:06:00
若func各自判断的逻辑都一样,可以写个装饰器来处理就好
作者:
ddavid (谎言接线生)
2024-06-03 18:09:00状态机。每个 function 都在开头加上只有进入特定状态才执行的条件,并且执行完会让状态改变,应该可以比较容易满足你随时可能变换顺序设定的需求?只要改头尾的状态判定与改变就好。
fun2完成后写入档案ready > fun3.txt , 最开头发现有这档案就goto, 执行完成就砍掉