起因
之前用惯了Matlab觉得~忽略返回值的设计不错,想看看Python有没有类似的方法。
思路
想要忽略返回值,容易想到指定返回下标切片
>>> def fcn():
return 1,2,3
>>> a=fcn()[0]
>>> a
1
有网友指出可以用_来忽略不需要的返回值
>>> _,a,_=fcn()
>>> a
2
若返回值较多,考虑使用*_生成list
>>> *_,a=fcn()
>>> a
3
深究
被_忽略的返回值哪去了??
我决定查一下locals()
>>> a,*_=fcn()
>>> locals()
{'fcn': <function fcn at 0x00000210F25BC1E0>,'a': 1, '_': [2, 3]}
>>> _
[2, 3]
至此真相大白……
Python变量是允许以_开头的,那些被忽略的值实际被赋给了一个叫做_的变量,进而被“忽略”掉了。