我对python和变量有疑问。
spell1Id_match1 = match_spell1[my_summoner_id]
request_spell1name = requests.get('https://global.api.pvp.net/api/lol/static-data/na/v1.2/summoner-spell/{0}?api_key=REMOVED'.format(spell1Id_match1)).json()
spell1Name_match1 = (request_spell1name['name'])
如果每次执行spell1Name_match1 = (request_spell1name['name'])
之类的操作,我会使用request.get
功能吗?或者python会在第一时间存储它然后那就是那个?我正在使用的API受限于我允许的请求数量。
我把它写成一个简单的逻辑测试:
x = 1
y = 1
z = x + y
print(z)
y = 3
x = 6
print(z)
输出结果为:
2
2
那么,python不会更新z
?
答案 0 :(得分:0)
当您调用requests.get()
时,会发送一次HTTP请求,然后您将结果输入到您正在读取的类似dict的对象中(使用.json()
)多次。
从概念上讲,获得JSON时会发生什么等同于:
# response = request.get(...).json()
>>> response = {'name': 'bakkal'} # You have a dict
>>> response['name'] # You read from the dict saved in memory (no HTTP)
'bakkal'
因此,在第一个获得JSON数据的
之后,没有进行HTTP调用 在你的第二个例子中,没有Python不会自动重新计算z
的值,你必须再次运行z = x + y
才能实现(至少赢得& #39; t发生于普通整数)