我有一個爲汽車刮取JSON文件的遞歸腳本。在每個遞歸級別上,它會得到一個新的變量,並將其與其他值一起傳遞給遞歸調用,每次都獲得越來越詳細的信息。我試圖用locals()
來動態分配一個變量,但即使在調用之後它仍然是None
(我記得有時候看到locals()
是隻讀的)。使用locals()動態分配變量在遞歸函數中不起作用
我嘗試使用eval()
以及它給了我同樣的問題(我知道eval是不理想的)。我最好避免使用字典,因爲這需要我首先加載值,這似乎有一些不必要的步驟,但我現在對任何事情都是開放的。
例子:
scraper(manufacturer='Honda')
會湊的機型JSON文件,設置model='Accord'
然後遞歸調用
scraper(manufacturer='Honda, model='Accord')
其中擦傷年的文件時,設置的year=2014
和遞歸調用
scraper(manufacturer='Honda', model='Accord', year='2014')
這是鹼案例
def scraper(self, manufacturers, model=None, year=None):
if year:
scrapeurl = '%s&manufacturer=%s&model=%s&year=%s' % (url, manufacturer, model, year)
return someFinalFunction()
elif model:
scrapeurl = '%s&manufacturer=%s&model=%s' % (url, manufacturer, model)
elif manufacturer:
scrapeurl = '%s&manufacturer=%s' % (url, manufacturer)
j = getJSONFromUrl(scrapeurl)
key, values = j.popitems()
for value in values:
locals()[key] = value
return self.scraper(manufacturer, model, year, color)
我感謝有關如何處理這個問題的任何意見,我知道Python總是似乎有一些聰明的做事方式,而且我總是對它有更多的瞭解,所以提前謝謝!我在這個例子中使用Python3也一樣,如果改變任何東西
每[docs for'locals'](https://docs.python.org/2/library/functions.html#locals) - *「**注意**本詞典的內容不應修改;更改可能不會影響inter使用的局部變量和自由變量的值preter。「* – jonrsharpe 2014-10-19 17:58:09
'locals()'只是一本字典。只需製作自己的字典和所有值,而不是「本地人」。 – BrenBarn 2014-10-19 18:00:41
什麼是價值的價值:...返回試圖實現? – Eric 2014-10-19 18:05:06