Sillove
V2EX  ›  问与答

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

  •  
  •   Sillove · Sep 30, 2019 · 3343 views
    This topic created in 2436 days ago, the information mentioned may be changed or developed.

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

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

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

    这段说的挺好的,《流畅的 Python 》。
    love
        7
    love  
       Sep 30, 2019
    @Dvel 前提是那为何 python 要把 len 整成一个函数调用?象 js 就直接 str.length 或 array.length 直接调属性了
    renmu
        8
    renmu  
       Sep 30, 2019 via Android
    别问,问就是优雅,Python 特性(笑,你可以去 Google 一下,作者有解释过
    Xs0ul
        9
    Xs0ul  
       Sep 30, 2019
    在 pandas/numpy 里有 a.size 表示元素个数, a.shape 表示各维尺寸(类似 [3, 4])

    而在 pytorch 里 a.shape 和 a.size()同义, 表示张量的各维大小,类似 [3, 4]. 而用 a.nelement()表示元素个数.

    混着用的时候真的很坑
    ochatokori
        10
    ochatokori  
       Sep 30, 2019 via Android
    主题的下划线被当成 markdown 的语法渲染了,
    评论区没有 markdown 就没有这个问题
    msg7086
        11
    msg7086  
       Oct 1, 2019
    Python 里搞了特殊化而已。
    hxse
        12
    hxse  
       Oct 1, 2019
    主题区的 markdown 会渲染,但评论区不会???
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   982 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 47ms · UTC 22:15 · PVG 06:15 · LAX 15:15 · JFK 18:15
    ♥ Do have faith in what you're doing.