出现这个错误,大家是如何解决的? Local variable 'result' might be referenced before assignment,我有强迫症。
这是一段简单的代码。
if method == ToolRequest.GET:
result = self.session.get(url)
elif method == ToolRequest.POST:
result = self.session.post(url, data=data)
print(f"请求 URL {url}\n 返回状态 {result.status_code}\ncookie {result.cookies}\n 返回内容 {result.content}")
print()
return result
附上图吧,大家都知道这是 Pycharm 吧
1
lspvic 2019-09-27 16:21:52 +08:00 via Android
在 if 前定义 result=None
|
2
kaid97 2019-09-27 16:23:20 +08:00
第一个是因为可能存在在使用前没有对 result 进行赋值,第二个是你声明 result 为 Response 类型,又先初始化为 None,要么第一个加个 else: result = None,让 result 必定会被初始化,要么就第二个不声明不就行。。
|
3
bantao 2019-09-27 16:23:32 +08:00 via Android
elif 后面再加个 else 就可以了
|
4
lspvic 2019-09-27 16:25:59 +08:00 via Android
加个 else raise 吧,result=None 了下面还是有可能报错
|
5
Vegetable 2019-09-27 16:28:03 +08:00
你别写这种编辑器都能看出来有问题的代码就行了,这 put 请求代码不就报错了吗?
result:typing.Optional[requests.Response]=None 就行了。 |
6
Vegetable 2019-09-27 16:30:24 +08:00
@Vegetable 哎我没用 pycharm,可能还不行。因为这样的话 return 的类型又错了,还是
else: return super().request(*args,**kwargs)这样吧。下边就应该就没问题了 |
7
ipwx 2019-09-27 16:36:27 +08:00
首先,我想问的是,你确定这里 method 只有 GET 和 POST 么。。。
|
9
z888888cn OP |
10
z888888cn OP 咦,好奇怪。这个论坛回复,无法重新编辑。回复也无法使用 markdown 语法?
|
12
z888888cn OP @Vegetable 这个论坛挺好的,https://learnku.com/python/t/34547,
注册流程 和 提问要发帖的时候特别有意思,要花费 10-20 分钟时间,回答提问的智慧。 缺点就是人气太差,没 V2EX 好。 |
13
sazima 2019-09-27 21:34:29 +08:00
if method == ToolRequest.GET:
result = self.session.get(url) elif method == ToolRequest.POST: result = self.session.post(url, data=data) else: raise MethodNotAllowed() |
14
locoz 2019-09-28 10:37:49 +08:00
强迫症慎用类型注解
|