我读了这篇文章: What's the difference between [a] + [b] and [a].extend([b])?
它说,在列表之间,列表之间的“ +”会创建一个新列表并扩展对要操作的列表的更改。
[1,2,3] + [4]
vs
[1,2,3].extend([4])
是否有任何方法可以获取这些信息而无需深入文档,而仅使用解释器,例如使用help()或dir()?
答案 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'> 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)