Python :(请求模块)我的程序请求两次吗?

时间:2016-04-27 16:37:26

标签: python

我对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

1 个答案:

答案 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发生于普通整数)