最近开了类型检查,红了一片, 很多都是 None connot be assign
所以请问一下大家遇到返回是空的情况, 是统一的返回 list 还是 list | None 呢
![]() |
1
zeyexe 43 天前
如果返回值的 None 等效空 list ,建议只返回空 list
|
2
thinkershare 43 天前
看情况,因为有时候返回空 list 属于正常状况,返回 None 是异常了,当然更好的方式我还是异常时直接 raise,统一返回 list 消费放好处理一点。
|
3
Azure99 43 天前
你认为字符串""和 None 语义一样么?很显然是不一样的,""是一个空字符串,而 None 不表示任何数据。
所以 2 楼就是优解,如果它是空的,那么返回空 list ,如果有异常,直接抛出异常。不要返回 None 。 |
![]() |
4
Dyon 43 天前 ![]() 不考虑上下文一般选择[],保持类型稳定
|
5
zictos 43 天前
1 、看实际情况吧,有时候根据需求可以知道有异常也能返回空 list ,因为事先对于重要性是能有一个初步判断的,所以都返回 list 保持一致性也挺好的。不然有异常时也可以返回 None ,数据为空的时候正常返回空 list 。
3 、还要看实际对于函数的使用,比如你在调用函数后需要将返回值当做 list 进行操作(列表拼接、切片等),那都返回 list 比较好。 3 、如果对于函数的调用仅仅用于判断是否非空,那用 None 就行,实际使用时用类似 if func():这样的方式判断就行。一般函数执行结束后未执行 return 语句或者 return 后面没有任何值,都是默认返回 None 的,所以甚至都不需要专门显式返回 None 。 |
6
oyps 43 天前
我的话,函数返回 None 一般都是异常的结果,直接就 throw 错误,让调用者自己 try catch 去。
|
![]() |
7
lucasj 43 天前
问一下,怎么开类型检查啊?
|
![]() |
9
llsquaer 43 天前
我觉得函数目的是返回列表就返回列表,虽然 python 中 None 和空列表是同义,但是保不齐你以后还有需要操作列表的情况,比如往里面加数据之类的操作。
当然遇到错误数据该 raise 的还是 raise 。如果忽略错误想继续还是返回列表。 |
10
dearmymy 43 天前
python 思想就是 一路都是执行成功,有问题交给异常 。 再说空 list 跟 string 也可以用 if not 判断
|
![]() |
11
netabare 43 天前 via iPhone
能不返回 None 就不要返回 None
|
![]() |
12
Zy143L 43 天前 via Android
统一返回 list
调用这个函数返回值判断直接用 if 就行 他空[]就是 false |
13
ho121 43 天前 via Android
提示 None connot be assign 一般是因为没有处理异常,如果返回 None 代表异常的话。
例如元素未找到返回 None: if xxx is None: print("元素未找到“); return: 这样后面再以引用 xxx 就不会提升 None connot be assign 。 |
![]() |
14
Sawyerhou 43 天前 via Android
可以返回空 list 就返回空 list ,保持返回类型一致。
不能返回空 list 就用 None 。 |
![]() |
15
shinonome OP 感谢大家, 看来偷懒还是要还帐的
|
18
HashV2 42 天前
还是要看 none 和空 list 在实际业务中的所代表的含义有没有差异
|
19
julyclyde 40 天前
cannot be assign 不是左值错误吗??
|
20
zsh2517 40 天前
|
![]() |
21
jack2020 6 天前
返回 list ,return None 的地方一般是边界条件吧,可以使用 raise 异常
|