
出现这个错误,大家是如何解决的? 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 年 9 月 27 日 via Android 在 if 前定义 result=None |
2 kaid97 2019 年 9 月 27 日 第一个是因为可能存在在使用前没有对 result 进行赋值,第二个是你声明 result 为 Response 类型,又先初始化为 None,要么第一个加个 else: result = None,让 result 必定会被初始化,要么就第二个不声明不就行。。 |
3 bantao 2019 年 9 月 27 日 via Android elif 后面再加个 else 就可以了 |
4 lspvic 2019 年 9 月 27 日 via Android 加个 else raise 吧,result=None 了下面还是有可能报错 |
5 Vegetable 2019 年 9 月 27 日 你别写这种编辑器都能看出来有问题的代码就行了,这 put 请求代码不就报错了吗? result:typing.Optional[requests.Response]=None 就行了。 |
6 Vegetable 2019 年 9 月 27 日 @Vegetable 哎我没用 pycharm,可能还不行。因为这样的话 return 的类型又错了,还是 else: return super().request(*args,**kwargs)这样吧。下边就应该就没问题了 |
7 ipwx 2019 年 9 月 27 日 首先,我想问的是,你确定这里 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 年 9 月 27 日 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 年 9 月 28 日 强迫症慎用类型注解 |