[問題] 多個function的變數需互通的運用

看板Python作者 (霹靂狗)時間2年前 (2021/08/08 22:36), 2年前編輯推噓6(6015)
留言21則, 7人參與, 2年前最新討論串1/3 (看更多)
請問我有個架構如下,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

08/08 22:44, 2年前 , 1F
看不懂為什麼重複的要寫兩次,可是感覺可以用class處理?
08/08 22:44, 1F

08/08 22:47, 2年前 , 2F
我改一下內容 start2其實有多一個fun4()
08/08 22:47, 2F
※ 編輯: piligo (106.104.34.155 臺灣), 08/08/2021 22:47:47

08/08 23:55, 2年前 , 3F
我來查class怎麼用 感謝
08/08 23:55, 3F

08/09 00:24, 2年前 , 4F
把a1-a4當參數?
08/09 00:24, 4F

08/09 00:25, 2年前 , 5F
*a3
08/09 00:25, 5F

08/09 00:54, 2年前 , 6F
對耶~沒想到可以把a1~a3直接帶入function的參數 來試試
08/09 00:54, 6F

08/09 14:17, 2年前 , 7F
如果只是要取用值,喂參數即可,還動用不到class
08/09 14:17, 7F

08/09 14:18, 2年前 , 8F
ax有持續存取需求,則就應該用class封裝起來
08/09 14:18, 8F

08/09 20:06, 2年前 , 9F
a1a2a3 都是定值? 考慮enumerate?
08/09 20:06, 9F

08/10 02:06, 2年前 , 10F
請問ddavid ax這區實際是有包for 每一輪的ax值都不一樣
08/10 02:06, 10F

08/10 02:07, 2年前 , 11F
這樣跟您說的ax有持續存取需求是指同一件事嗎? 看完class
08/10 02:07, 11F

08/10 02:07, 2年前 , 12F
的介紹 我的腦袋就當機了 XD
08/10 02:07, 12F

08/10 02:14, 2年前 , 13F
shiyeh說到enumerate我有去研究了一下這個函數 是把值多加
08/10 02:14, 13F

08/10 02:15, 2年前 , 14F
一個索引沒錯吧 但想不出要運用在哪裡
08/10 02:15, 14F

08/11 06:39, 2年前 , 15F
我也覺得用class 解決
08/11 06:39, 15F

08/11 11:24, 2年前 , 16F
如果是因為for迴圈導致的每一輪值不同,其實不建議class
08/11 11:24, 16F

08/11 11:25, 2年前 , 17F
用到class,我會覺得情境是某些要持續保存但可變動的狀態
08/11 11:25, 17F

08/11 11:25, 2年前 , 18F
值會被多個有關聯性的function存取,所以才用class包
08/11 11:25, 18F

08/11 11:26, 2年前 , 19F
但只是迴圈跑一輪的話,那些變數沒有保存的必要,不是應該
08/11 11:26, 19F

08/11 11:26, 2年前 , 20F
用class包裝那些迴圈用變數的情境
08/11 11:26, 20F

08/11 14:41, 2年前 , 21F
function狀態不受環境改變,都可以不用class包
08/11 14:41, 21F
文章代碼(AID): #1X3-m7tP (Python)
文章代碼(AID): #1X3-m7tP (Python)