Python 使用函数构造器创建命名元组,创建命名元组实例有三种方法,具体选择取决于创建实例时有多少附加信息可用。
前面的例子展示了三种方法中的两种,接下来重点介绍设计时要考虑的因素,包括以下选项。
- 根据位置对参数赋值,当需要对一个或者多个表达式求值时,可用这种方法。例如下面的代码中将
haversine()
函数应用于start
和end
来创建Leg
对象:Leg(start, end, round(haversine(start, end),4))
-
使用星号参数,按照在元组中的位置给参数赋值。这种方法适用于从其他可迭代对象或者已有元组中获取参数值。通过
map()
函数把float()
函数应用于经纬度数据时,用到了该方法:Point(*map(float, pick_lat_lon(*row)))
-
使用显式参数名称赋值,前面的例子没有用过这种方法,优点是可以使参数赋值关系更加明确:
Point(longitude=float(row[0]), latitude=float(row[1]))
使用多种方式创建命名元组实例有助于灵活地转换数据。可以通过不同的方式强调那些有助于阅读和理解应用代码的数据结构特征,有时需要突出作为下标的0或者1,有时则需要强调起点、终点和距离的顺序。