V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
Sillove
V2EX  ›  问与答

Python 中 a.f()和 f(a)的区别是什么?

  •  
  •   Sillove · 2019-09-30 16:57:36 +08:00 · 2822 次点击
    这是一个创建于 1887 天前的主题,其中的信息可能已经有所发展或是发生改变。

    例如: print('V2EX'.len()) 和 print(len('V2EX')) 的值都是 4 这两个语句有什么区别呢?

    12 条回复    2019-10-01 13:16:46 +08:00
    ysc3839
        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'
    Sillove
        2
    Sillove  
    OP
       2019-09-30 17:16:02 +08:00
    @ysc3839
    len 前后有双下划线,好像是自动隐藏了。__len__
    RickyHao
        3
    RickyHao  
       2019-09-30 17:17:58 +08:00 via Android
    Google: Python Magic Method
    请(
    BingoXuan
        4
    BingoXuan  
       2019-09-30 17:18:51 +08:00
    应该是__len__()吧,len 只是调用入参的__len__()而已,一个语法糖函数

    Object.method()和 function(Object)根本就是两个不同的调用,一个是调用对象绑定的方法,另一个是对象作为入参调用函数。虽然可以做到一样的功能,但范式是不一样的。
    Sillove
        5
    Sillove  
    OP
       2019-09-30 17:28:32 +08:00
    @BingoXuan 多谢解答
    Dvel
        6
    Dvel  
       2019-09-30 17:36:25 +08:00   ❤️ 1

    这段说的挺好的,《流畅的 Python 》。
    love
        7
    love  
       2019-09-30 20:44:53 +08:00
    @Dvel 前提是那为何 python 要把 len 整成一个函数调用?象 js 就直接 str.length 或 array.length 直接调属性了
    renmu
        8
    renmu  
       2019-09-30 21:38:10 +08:00 via Android
    别问,问就是优雅,Python 特性(笑,你可以去 Google 一下,作者有解释过
    Xs0ul
        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()表示元素个数.

    混着用的时候真的很坑
    ochatokori
        10
    ochatokori  
       2019-09-30 22:42:16 +08:00 via Android
    主题的下划线被当成 markdown 的语法渲染了,
    评论区没有 markdown 就没有这个问题
    msg7086
        11
    msg7086  
       2019-10-01 04:10:59 +08:00
    Python 里搞了特殊化而已。
    hxse
        12
    hxse  
       2019-10-01 13:16:46 +08:00
    主题区的 markdown 会渲染,但评论区不会???
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2635 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 78ms · UTC 01:51 · PVG 09:51 · LAX 17:51 · JFK 20:51
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.