例如: print('V2EX'.len()) 和 print(len('V2EX')) 的值都是 4 这两个语句有什么区别呢?
1
ysc3839 2019-09-30 17:11:56 +08:00
>>> print('V2EX'.len())
Traceback (most recent call last): File "<stdin>", line 1, in <module> AttributeError: 'str' object has no attribute 'len' |
3
RickyHao 2019-09-30 17:17:58 +08:00 via Android
Google: Python Magic Method
请( |
4
BingoXuan 2019-09-30 17:18:51 +08:00
应该是__len__()吧,len 只是调用入参的__len__()而已,一个语法糖函数
Object.method()和 function(Object)根本就是两个不同的调用,一个是调用对象绑定的方法,另一个是对象作为入参调用函数。虽然可以做到一样的功能,但范式是不一样的。 |
6
Dvel 2019-09-30 17:36:25 +08:00 1
|
7
love 2019-09-30 20:44:53 +08:00
@Dvel 前提是那为何 python 要把 len 整成一个函数调用?象 js 就直接 str.length 或 array.length 直接调属性了
|
8
renmu 2019-09-30 21:38:10 +08:00 via Android
别问,问就是优雅,Python 特性(笑,你可以去 Google 一下,作者有解释过
|
9
Xs0ul 2019-09-30 22:22:58 +08:00
在 pandas/numpy 里有 a.size 表示元素个数, a.shape 表示各维尺寸(类似 [3, 4])
而在 pytorch 里 a.shape 和 a.size()同义, 表示张量的各维大小,类似 [3, 4]. 而用 a.nelement()表示元素个数. 混着用的时候真的很坑 |
10
ochatokori 2019-09-30 22:42:16 +08:00 via Android
主题的下划线被当成 markdown 的语法渲染了,
评论区没有 markdown 就没有这个问题 |
11
msg7086 2019-10-01 04:10:59 +08:00
Python 里搞了特殊化而已。
|
12
hxse 2019-10-01 13:16:46 +08:00
主题区的 markdown 会渲染,但评论区不会???
|