Luk*_*tra 3 python python-3.x python-requests
我试图理解为什么在我的例子中params传入session.get会引发 TypeError。
response_get返回200响应,同时response_open引发 TypeError。
import requests
class Foo:
def __init__(self):
self.session = requests.Session()
def get(self, url, params=None):
"""Return a Response object."""
return requests.get(url, params)
def open(self, url, params=None):
"""Return a Response object using the Session object."""
return self.session.get(url, params)
if __name__ == '__main__':
foo = Foo()
response_get = foo.get('https://estilen.github.io')
response_open = foo.open('https://estilen.github.io')
Run Code Online (Sandbox Code Playgroud)
错误:
Traceback (most recent call last):
File "/home/estilen/Dropbox/Python/leapy/foo.py", line 21, in <module>
response_open = foo.open('https://estilen.github.io')
File "/home/estilen/Dropbox/Python/leapy/foo.py", line 15, in open
return self.session.get(url, params)
TypeError: get() takes 2 positional arguments but 3 were given
Run Code Online (Sandbox Code Playgroud)
问题是只get需要一个未命名的(位置)参数:
def get(self, url, **kwargs):
# ...
Run Code Online (Sandbox Code Playgroud)
您提供了两个:url和params。
要解决此问题,您需要提供params命名(关键字)参数:
return self.session.get(url, params=params)
Run Code Online (Sandbox Code Playgroud)