作者LessonWang (橘白Cat)
看板Python
標題[問題] 製作當前整數型態的變數名稱list
時間Sat Jun 24 10:50:32 2017
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://webptt.com/m.aspx?n=bbs/Python/M.1498272634.A.131.html
1F:推 bazoo: [x for x in dir() if isinstance(globals()[x], int)] 06/24 11:38
b大的方法可以不用到eval 可是區域變數一樣沒有在list中欸
我還特地把dir函數結果印出來 卻沒有發現到區域變數
2F:→ bazoo: 這樣應該可行 06/24 11:39
※ 編輯: LessonWang (27.242.43.210), 06/24/2017 12:15:19
3F:推 Sunal: 你這樣做的目的是? 06/24 13:08
4F:推 Sunal: scope不一樣是要怎麼存取func內的變數 除非你加global 06/24 13:26
目的嗎 ?純粹只是想要知道有沒有哪些東西或目的是python做不到的 真的很崇拜開發許多python模組的前輩們 為解決問題 開發很多效能高的模組
※ 編輯: LessonWang (27.242.43.210), 06/24/2017 14:31:12
5F:→ freeunixer: 新手就不要在那想洞想縫,老實一點把東西學好... 06/24 15:06
新手就不能有好奇心嗎xd?
而且也是邊問邊學啊 沒有不好吧xd
※ 編輯: LessonWang (27.242.43.210), 06/24/2017 15:23:20
6F:→ zerof: 大家都看得懂在講什麼好厲害... 06/24 16:59
7F:噓 freeunixer: 你式子跑完就被 gc 回收掉了,還有什麼區域變數可回傳? 06/24 17:19
8F:→ freeunixer: 好奇心發作前,先把 variable scope 學好再講別的好嗎? 06/24 17:21
9F:→ freeunixer: 你要是真的崇拜,也去學 C 替 python 寫模組, 06/24 17:26
10F:→ freeunixer: 用 C 寫個可以傳出區域變數的函式就得了. 06/24 17:27
11F:→ freeunixer: 加個 static 就能做到了,幹嘛來折騰物件導向的 Python 06/24 17:31
12F:推 darkgerm: 要看到 local 變數可用 locals() 06/24 20:28
13F:→ darkgerm: 但你的例子中,只要不是在func裡面,是不可能看到tot的 06/24 20:32
14F:→ LessonWang: 所以不要以scope的觀念下去看 這題無解囉 沒有辦法把 06/24 22:21
15F:→ LessonWang: 原本的code弄成string去用re分析? 06/24 22:21
16F:→ darkgerm: Python 語法不是正規能夠分析的 06/25 14:08
17F:→ darkgerm: 你可能要順便學一下 formal languages XD 06/25 14:08
好吧 我自討苦吃xd
※ 編輯: LessonWang (27.242.43.210), 06/25/2017 14:14:12
18F:→ uranusjr: 真想分析可以用 ast, 不過這叫殺雞用牛刀... 06/25 14:19
抽象語法樹是個很不錯的工具xd
※ 編輯: LessonWang (27.242.43.210), 06/25/2017 16:02:16