看板 Python 關於我們 聯絡資訊
※ 引述《zuso ( )》之銘言: : Hi 各位板友,最近剛開始碰Python,遇上了一個問題,實在不懂為甚麼,懇請各位指點 : def abc(): : x = False : y = 0 : if x is True: : print('Working, Please try again') : else: : if y == 0 : : x = True : print('Start Work') : abc() : abc() : #Start Work : #Start Work : 不懂為甚麼第二個回應依舊是Start Work,正常來說應該在第一個Start Work運行後就 : 賦值True給X,第二次應該是Working, Please try again,可是為甚麼會這樣子呢? : 懇請各位給予指點,謝謝 不知道你是想讓他怎樣 連按兩次要變嗎 最近的感想是這樣寫之後會遇到不少麻煩就是了 首先你要搞得懂區域變數跟全域變數 最近會覺得python會自己判定是int還是string會有點讓人分不清楚 y = 0 x = False def abc(): global x if x is True: print('Working, Please try again') else: if y == 0 : x = True print('Start Work') abc() abc() 其實我不太建議拉 要是有兩個FUNCTION同時用到x 而且有可能是用timer之類的讓它去跑 你應該會很難過XDDD -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 1.160.82.29 ※ 文章網址: https://www.ptt.cc/bbs/Python/M.1516287770.A.482.html ※ 編輯: MOONY135 (1.160.82.29), 01/18/2018 23:04:18
zuso: 其實我是想用在Flask上,同時只能有一個人在使用XD 01/19 11:42
zuso: Y ==0 結束的尾聲 在把x = False 開放下一個工作 01/19 11:43
Sunal: 先不論你的Flask架構 直覺聽起來這不是個好方法 01/19 12:22
zuso: 的確是個糟糕的方法,可以用前端就解決掉,只是想嘗試看看 01/19 12:23
zuso: 因為是個很簡單的web service 單純後接收變數去Call後端做爬 01/19 12:24
zuso: 蟲截圖 01/19 12:24
MOONY135: 我可以想像到的就是 當出現BUG的時候你要怎樣抓 01/19 16:48
MOONY135: true false現在看起來可能很簡單 但程式放久 01/19 16:48
MOONY135: 你應該只會靠北當初為啥要這樣玩 01/19 16:49
MOONY135: 我會用到全域的BOOL 大概只有是人為動作 類似按下BTN 01/19 16:49
MOONY135: 這種狀況下才會這樣寫 因為這樣好DEBUG 01/19 16:49