Python中的关键字参数

MEr*_*ric 1 python urllib2 beautifulsoup keyword-argument

所以我试图使用urllib2/BeautifulSoup从维基百科页面读取数据.我将此代码复制到终端:

import urllib2

hdrs = { 'User-Agent': "Mozilla/5.0 (X11; U; Linux i686) Gecko/20071127 Firefox/2.0.0.11" } 
req = urllib2.Request("http://en.wikipedia.org/wiki/List_of_United_States_mobile_phone_companies" , headers = hdrs)
fd = urllib2.urlopen(req) 
Run Code Online (Sandbox Code Playgroud)

它工作正常.但是,当我进行此调用(删除关键字参数)时:

req = urllib2.Request("http://en.wikipedia.org/wiki/List_of_United_States_mobile_phone_companies" , hdrs)
Run Code Online (Sandbox Code Playgroud)

我收到一个错误:

 TypeError: must be string or buffer, not dict
Run Code Online (Sandbox Code Playgroud)

为什么会这样?我认为关键字参数在函数调用中是可选的.谢谢您的帮助!

fal*_*tru 5

urllib2.Request的第二个参数是数据,而不是标题.

class urllib2.Request(url[, data][, headers][, origin_req_host][, unverifiable])
Run Code Online (Sandbox Code Playgroud)

要指定标题而不指定数据,您应该使用关键字参数形式.