看板 Python 關於我們 聯絡資訊
請問我有個架構如下,start1底下的fun1~fun3跟start2底下的fun1~fun3 是完全一樣的內容 def start1(): fun1(): fun2(): fun3(): a1='xxx' a2='xxx' a3='xxx' def start2(): fun1(): fun2(): fun3(): fun4(): a1='xxx' a2='xxx' a3='xxx' 這樣在維護上會很麻煩,等於修改funX要一次改兩個地方,後來改成這樣測試, 但延伸一個全域變數的問題。因funX都會取用a1~a3變數,改完後勢必要把 a1~a3套global才能餵給funX,因為只是舉例沒列太多,實際上變數有數十個 有看到相關文章說global濫用會造成debug困難,這樣該如何避免funX重複 與global的濫用呢 謝謝 def fun1(): def fun2(): def fun3(): def fun4(): def start1(): fun1() fun2() fun3() global a1 global a2 global a3 a1='xxx' a2='xxx' a3='xxx' def start2(): fun1() fun2() fun3() fun4() global a1 global a2 global a3 a1='xxx' a2='xxx' a3='xxx' -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 106.104.34.155 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/Python/M.1628433415.A.DD9.html
a367560: 看不懂為什麼重複的要寫兩次,可是感覺可以用class處理? 08/08 22:44
piligo: 我改一下內容 start2其實有多一個fun4() 08/08 22:47
※ 編輯: piligo (106.104.34.155 臺灣), 08/08/2021 22:47:47
piligo: 我來查class怎麼用 感謝 08/08 23:55
aassdd926: 把a1-a4當參數? 08/09 00:24
aassdd926: *a3 08/09 00:25
piligo: 對耶~沒想到可以把a1~a3直接帶入function的參數 來試試 08/09 00:54
ddavid: 如果只是要取用值,喂參數即可,還動用不到class 08/09 14:17
ddavid: ax有持續存取需求,則就應該用class封裝起來 08/09 14:18
shiyeh: a1a2a3 都是定值? 考慮enumerate? 08/09 20:06
piligo: 請問ddavid ax這區實際是有包for 每一輪的ax值都不一樣 08/10 02:06
piligo: 這樣跟您說的ax有持續存取需求是指同一件事嗎? 看完class 08/10 02:07
piligo: 的介紹 我的腦袋就當機了 XD 08/10 02:07
piligo: shiyeh說到enumerate我有去研究了一下這個函數 是把值多加 08/10 02:14
piligo: 一個索引沒錯吧 但想不出要運用在哪裡 08/10 02:15
hydrogencl: 我也覺得用class 解決 08/11 06:39
ddavid: 如果是因為for迴圈導致的每一輪值不同,其實不建議class 08/11 11:24
ddavid: 用到class,我會覺得情境是某些要持續保存但可變動的狀態 08/11 11:25
ddavid: 值會被多個有關聯性的function存取,所以才用class包 08/11 11:25
ddavid: 但只是迴圈跑一輪的話,那些變數沒有保存的必要,不是應該 08/11 11:26
ddavid: 用class包裝那些迴圈用變數的情境 08/11 11:26
lycantrope: function狀態不受環境改變,都可以不用class包 08/11 14:41