Python:从文档中找出+和扩展之间的差异

时间:2019-04-07 09:24:19

标签: python python-3.x

我读了这篇文章: What's the difference between [a] + [b] and [a].extend([b])?

它说,在列表之间,列表之间的“ +”会创建一个新列表并扩展对要操作的列表的更改。

[1,2,3] + [4]

vs

[1,2,3].extend([4])

是否有任何方法可以获取这些信息而无需深入文档,而仅使用解释器,例如使用help()或dir()?

3 个答案:

答案 0 :(得分:2)

仅限于解释器,一种实现方法是通过实例方法的docstring。您可以通过help(list.extend)__doc__属性访问它。例如:

>>> list.extend.__doc__
'Extend list by appending elements from the iterable.'

对于+合并两个列表的运算符,这只能归功于list类的运算符重载。在幕后,它是通过称为__add__的特殊方法实现的。使用与上述相同的方法:

>>> list.__add__.__doc__
'Return self+value.'

话虽如此,但是在线文档无疑是访问此信息的一种较简单的方法。

答案 1 :(得分:1)

这可能不是您想要的,但是您可以从解释器轻松地检查验证此行为。

[{"status":2,"statusStr":"Trouble","entity":"IF_UTIL_40000010357","severity":"<img src='/images/devices/status2.gif'>&nbsp;Trouble","who":"UnAssigned","message":"Interface 'XGigabitEthernet1/0/46-XGigabitEthernet1/0/46'  util threshold violated.Current IN traffic is 3.7 Gbps(37.01%) and OUT traffic is 25.439 Kbps(0%), whereas configured threshold is 30% .","modTime":"7 Apr 2019 02:20:49 PM IRDT","category":"Switch","numericSeverity":2,"deviceName":"10.10.40.4","severityString":"Trouble","displayName":"LSW25_26","modTimeLong":1554630649593}]

答案 2 :(得分:1)

A。如果一个函数(方法)修改了数据但未返回结果,则必须将muted对象作为函数输入传递给它。这就是就地修改。

此类函数通常故意不返回任何内容(无)。在list.sort中很好地描述了该约定:

  

此方法修改到位的顺序.....   提醒用户它可以并行运行   效果,它不返回排序顺序

请注意,存在一种基于方法链的“ Fluent接口”技术,需要相反的方法。


B。您可以随时使用id()检查是否创建了新对象

>>> l1 = [1,2,3,4]
>>> l2 = ['A','B','C']
>>> id(l1), id(l2), id(l1+l2)
(139855120180552, 139855123390792, 139855123880392)