我不喜欢采用两个或更多迭代的Python函数.这是个好主意吗?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了我不喜欢采用两个或更多迭代的Python函数.这是个好主意吗?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1329字,纯文字阅读大概需要2分钟。
内容图文
![我不喜欢采用两个或更多迭代的Python函数.这是个好主意吗?](/upload/InfoBanner/zyjiaocheng/747/ef10b6c1a1d74c13bf02cbba29c5868e.jpg)
这个问题来自于this question:
def fringe8((px, py), (x1, y1, x2, y2)):
就个人而言,看到一个带有固定数量迭代(如元组)或两个或更多字典的两个参数的函数(如Shotgun API中)是我的烦恼之一.它很难使用,因为所有的冗长和双括号外壳.
这不会更好:
>>> class Point(object):
... def __init__(self, x, y):
... self.x = x
... self.y = y
...
>>> class Rect(object):
... def __init__(self, x1, y1, x2, y2):
... self.x1 = x1
... self.y1 = y1
... self.x2 = x2
... self.y2 = y2
...
>>> def fringe8(point, rect):
... # ...
...
>>>
>>> point = Point(2, 2)
>>> rect = Rect(1, 1, 3, 3)
>>>
>>> fringe8(point, rect)
是否存在采用两个或更多可迭代参数的情况?显然,标准的itertools Python库需要它,但我看不出它在可维护,灵活的代码设计中非常漂亮.
解决方法:
带解压缩的def语法,如
def fringe8((px, py), (x1, y1, x2, y2)):
在Python 3中消失了 – 这意味着Guido认为这是一个设计错误,或者至少是一个无根据的复杂问题.为了您建议的澄清目的,命名元组可能甚至比专用类更好.
但是,拥有带有多个可迭代参数的函数非常合适 – 当然,itertools显然不能封装应用程序可能需要的每个多次迭代操作!将迭代视为“流”(可能是无限制的),有很多种方法可以将多个流“合并”为一个,例如(例如,考虑已知要排序的流和你可能想要建立交集,或者联合,有或没有删除重复等等).
为什么人们应该歪曲一个人的API的设计,以遵守关于每个函数签名不超过一次迭代的完全任意禁令?!
内容总结
以上是互联网集市为您收集整理的我不喜欢采用两个或更多迭代的Python函数.这是个好主意吗?全部内容,希望文章能够帮你解决我不喜欢采用两个或更多迭代的Python函数.这是个好主意吗?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。