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

作者: LessonWang (橘白Cat)   2017-06-24 10:50:32
python新手發問
如題 要如何返回當前已存在且為特定型態的變數名稱list
有沒有任何比較簡單的函數或方法可以做到
而且包含非global的變數(函數內定義等)
目前我想破頭 只能得到global變數的list
但是非global的 一樣無法在list內
如附圖
而且 最糟糕的還是用到eval函數
希望前輩們能提供不要用到eval函數
而且能達到目的的方法
感激不盡
http://i.imgur.com/Kco2ijV.jpg
作者: bazoo (surfers'paradise)   2017-06-24 11:38:00
[x for x in dir() if isinstance(globals()[x], int)]這樣應該可行
作者: Sunal (SSSSSSSSSSSSSSSSSSSSSSS)   2017-06-24 13:08:00
你這樣做的目的是?scope不一樣是要怎麼存取func內的變數 除非你加global
作者: freeunixer (御劍客)   2017-06-24 15:06:00
新手就不要在那想洞想縫,老實一點把東西學好...
作者: zerof (貓橘毛發呆雕像)   2017-06-24 16:59:00
大家都看得懂在講什麼好厲害...
作者: freeunixer (御劍客)   2017-06-24 17:19:00
你式子跑完就被 gc 回收掉了,還有什麼區域變數可回傳?好奇心發作前,先把 variable scope 學好再講別的好嗎?你要是真的崇拜,也去學 C 替 python 寫模組,用 C 寫個可以傳出區域變數的函式就得了.加個 static 就能做到了,幹嘛來折騰物件導向的 Python
作者: darkgerm (黑駿)   2017-06-24 20:28:00
要看到 local 變數可用 locals()但你的例子中,只要不是在func裡面,是不可能看到tot的
作者: LessonWang (橘白Cat)   2017-06-24 22:21:00
所以不要以scope的觀念下去看 這題無解囉 沒有辦法把原本的code弄成string去用re分析?
作者: darkgerm (黑駿)   2017-06-25 14:08:00
Python 語法不是正規能夠分析的你可能要順便學一下 formal languages XD
作者: uranusjr (←這人是超級笨蛋)   2017-06-25 14:19:00
真想分析可以用 ast, 不過這叫殺雞用牛刀...

Links booklink

Contact Us: admin [ a t ] ucptt.com