好的,所以我得到了这段代码:
var clientId = "___REPLACE_WITH_CLIENTID___";
var clientSecret = "___REPLACE_WITH_CLIENTSECRET___";
var sdkConfig = new Dictionary<string, string> {
{ "mode", "sandbox" },
{ "clientId", clientId },
{ "clientSecret", clientSecret }
};
var accessToken = new OAuthTokenCredential(clientId, clientSecret, sdkConfig).GetAccessToken();
var apiContext = new APIContext(accessToken);
apiContext.Config = sdkConfig;
对函数执行常规for的结果,不需要返回此结果,因为它只返回第一个对象的对:
class ApiCall(object):
def __init__(self, url):
self.url = url
def call(self):
call = requests.get(self.url)
response = call.content.decode('utf-8')
result = json.loads(response)
return result
class IncomeSources(object):
def __init__(self, result):
self.result = result
def all(self):
#This is the dict comprehension
#return {(slot['accountLabelType'], slot['totalPrice']) for slot in self.result}
for slot in self.result:
return (slot['accountLabelType'], slot['totalPrice'])
def main():
url = ('https://datafeed/api/')
api_result = ApiCall(url).call()
target = IncomeSources(api_result).all()
print(target)
main()
但是在dict理解的情况下,它会返回json响应中所有json对象的所有槽对(这很酷)为什么dict理解会抓取所有对,而常规for不是?
答案 0 :(得分:1)
为什么dict理解能够抓住所有对,而常规则不是?
当你循环某个东西并在循环中有一个return语句时会发生什么,一旦遇到return语句,就会返回该值(并且只返回该值)。
dict理解首先构造整个字典,然后作为一个整体返回给调用者。
这与理解力有关,而与return语句有关。比较:
>>> def foo():
... for i in range(5):
... return i
...
>>> foo()
0
使用:
>>> def foo():
... return list(range(5))
...
>>> foo()
[0, 1, 2, 3, 4]