[問題] 製作當前整數型態的變數名稱list

看板Python作者 (橘白Cat)時間8年前發表 (2017/06/24 02:50), 8年前編輯推噓3(4113)
留言18則, 7人參與, 最新討論串1/1
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

06/24 11:38, , 1F
[x for x in dir() if isinstance(globals()[x], int)]
06/24 11:38, 1F
b大的方法可以不用到eval 可是區域變數一樣沒有在list中欸 我還特地把dir函數結果印出來 卻沒有發現到區域變數

06/24 11:39, , 2F
這樣應該可行
06/24 11:39, 2F
※ 編輯: LessonWang (27.242.43.210), 06/24/2017 12:15:19

06/24 13:08, , 3F
你這樣做的目的是?
06/24 13:08, 3F

06/24 13:26, , 4F
scope不一樣是要怎麼存取func內的變數 除非你加global
06/24 13:26, 4F
目的嗎 ?純粹只是想要知道有沒有哪些東西或目的是python做不到的 真的很崇拜開發許多python模組的前輩們 為解決問題 開發很多效能高的模組 ※ 編輯: LessonWang (27.242.43.210), 06/24/2017 14:31:12

06/24 15:06, , 5F
新手就不要在那想洞想縫,老實一點把東西學好...
06/24 15:06, 5F
新手就不能有好奇心嗎xd? 而且也是邊問邊學啊 沒有不好吧xd ※ 編輯: LessonWang (27.242.43.210), 06/24/2017 15:23:20

06/24 16:59, , 6F
大家都看得懂在講什麼好厲害...
06/24 16:59, 6F

06/24 17:19, , 7F
你式子跑完就被 gc 回收掉了,還有什麼區域變數可回傳?
06/24 17:19, 7F

06/24 17:21, , 8F
好奇心發作前,先把 variable scope 學好再講別的好嗎?
06/24 17:21, 8F

06/24 17:26, , 9F
你要是真的崇拜,也去學 C 替 python 寫模組,
06/24 17:26, 9F

06/24 17:27, , 10F
用 C 寫個可以傳出區域變數的函式就得了.
06/24 17:27, 10F

06/24 17:31, , 11F
加個 static 就能做到了,幹嘛來折騰物件導向的 Python
06/24 17:31, 11F

06/24 20:28, , 12F
要看到 local 變數可用 locals()
06/24 20:28, 12F

06/24 20:32, , 13F
但你的例子中,只要不是在func裡面,是不可能看到tot的
06/24 20:32, 13F

06/24 22:21, , 14F
所以不要以scope的觀念下去看 這題無解囉 沒有辦法把
06/24 22:21, 14F

06/24 22:21, , 15F
原本的code弄成string去用re分析?
06/24 22:21, 15F

06/25 14:08, , 16F
Python 語法不是正規能夠分析的
06/25 14:08, 16F

06/25 14:08, , 17F
你可能要順便學一下 formal languages XD
06/25 14:08, 17F
好吧 我自討苦吃xd ※ 編輯: LessonWang (27.242.43.210), 06/25/2017 14:14:12

06/25 14:19, , 18F
真想分析可以用 ast, 不過這叫殺雞用牛刀...
06/25 14:19, 18F
抽象語法樹是個很不錯的工具xd ※ 編輯: LessonWang (27.242.43.210), 06/25/2017 16:02:16
文章代碼(AID): #1PJTDw4n (Python)