看板 Python 關於我們 聯絡資訊
python新手發問 如題 要如何返回當前已存在且為特定型態的變數名稱list 有沒有任何比較簡單的函數或方法可以做到 而且包含非global的變數(函數內定義等) 目前我想破頭 只能得到global變數的list 但是非global的 一樣無法在list內 如附圖 而且 最糟糕的還是用到eval函數 希望前輩們能提供不要用到eval函數 而且能達到目的的方法 感激不盡 http://i.imgur.com/Kco2ijV.jpg
----- Sent from JPTT on my Asus ASUS_Z00UD. -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 27.242.43.210 ※ 文章網址: https://www.ptt.cc/bbs/Python/M.1498272634.A.131.html
bazoo: [x for x in dir() if isinstance(globals()[x], int)] 06/24 11:38
b大的方法可以不用到eval 可是區域變數一樣沒有在list中欸 我還特地把dir函數結果印出來 卻沒有發現到區域變數
bazoo: 這樣應該可行 06/24 11:39
※ 編輯: LessonWang (27.242.43.210), 06/24/2017 12:15:19
Sunal: 你這樣做的目的是? 06/24 13:08
Sunal: scope不一樣是要怎麼存取func內的變數 除非你加global 06/24 13:26
目的嗎 ?純粹只是想要知道有沒有哪些東西或目的是python做不到的 真的很崇拜開發許多python模組的前輩們 為解決問題 開發很多效能高的模組 ※ 編輯: LessonWang (27.242.43.210), 06/24/2017 14:31:12
freeunixer: 新手就不要在那想洞想縫,老實一點把東西學好... 06/24 15:06
新手就不能有好奇心嗎xd? 而且也是邊問邊學啊 沒有不好吧xd ※ 編輯: LessonWang (27.242.43.210), 06/24/2017 15:23:20
zerof: 大家都看得懂在講什麼好厲害... 06/24 16:59
freeunixer: 你式子跑完就被 gc 回收掉了,還有什麼區域變數可回傳? 06/24 17:19
freeunixer: 好奇心發作前,先把 variable scope 學好再講別的好嗎? 06/24 17:21
freeunixer: 你要是真的崇拜,也去學 C 替 python 寫模組, 06/24 17:26
freeunixer: 用 C 寫個可以傳出區域變數的函式就得了. 06/24 17:27
freeunixer: 加個 static 就能做到了,幹嘛來折騰物件導向的 Python 06/24 17:31
darkgerm: 要看到 local 變數可用 locals() 06/24 20:28
darkgerm: 但你的例子中,只要不是在func裡面,是不可能看到tot的 06/24 20:32
LessonWang: 所以不要以scope的觀念下去看 這題無解囉 沒有辦法把 06/24 22:21
LessonWang: 原本的code弄成string去用re分析? 06/24 22:21
darkgerm: Python 語法不是正規能夠分析的 06/25 14:08
darkgerm: 你可能要順便學一下 formal languages XD 06/25 14:08
好吧 我自討苦吃xd ※ 編輯: LessonWang (27.242.43.210), 06/25/2017 14:14:12
uranusjr: 真想分析可以用 ast, 不過這叫殺雞用牛刀... 06/25 14:19
抽象語法樹是個很不錯的工具xd ※ 編輯: LessonWang (27.242.43.210), 06/25/2017 16:02:16