假设我有一个Python函数,它在一个元组中返回多个值:
def func():
return 1, 2
有没有一种好的方法可以忽略其中一个结果,而不是只给一个临时变量赋值?假设我只对第一个值感兴趣,有没有比这更好的方法:
x, temp = func()
发布于 2018-02-23 00:34:18
最好的解决方案可能是命名对象,而不是返回无意义的元组(除非返回项的顺序背后有某种逻辑)。例如,您可以使用字典:
def func():
return {'lat': 1, 'lng': 2}
latitude = func()['lat']
如果您想要添加有关所返回内容的额外信息,甚至可以使用namedtuple (它不仅仅是一个字典,它是一对坐标):
from collections import namedtuple
Coordinates = namedtuple('Coordinates', ['lat', 'lng'])
def func():
return Coordinates(lat=1, lng=2)
latitude = func().lat
如果您的字典/元组中的对象紧密绑定在一起,那么甚至为其定义一个类可能是一个好主意。这样,您还可以定义更复杂的操作。接下来的一个自然问题是:When should I be using classes in Python?
大多数最新版本的python (≥3.7)都有dataclasses,您可以使用它来定义只需很少代码行的类:
from dataclasses import dataclass
@dataclass
class Coordinates:
lat: float = 0
lng: float = 0
def func():
return Coordinates(lat=1, lng=2)
latitude = func().lat
与命名元组相比,数据类的主要优势是它更容易扩展,但也有other differences。请注意,默认情况下,数据类是可变的,但您可以使用@dataclass(frozen=True)
而不是@dataclass
来强制它们不可变。
Here is a video,它可能会帮助您为您的用例选择正确的数据类。
https://stackoverflow.com/questions/431866
复制相似问题