V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
aladdinding
V2EX  ›  Python

为啥好多面试 Python 的连魔法函数都不知道?

  •  
  •   aladdinding · 2021-11-19 10:38:08 +08:00 · 18030 次点击
    这是一个创建于 1118 天前的主题,其中的信息可能已经有所发展或是发生改变。

    Python 开发应届生岗位

    有的甚至还写的精通 Python

    话说 Python 的精髓就是鸭子类型吧,有的直接说没听过

    估计都是把 Python 当作面向过程来写了,怪不得觉得语法简单

    我感觉 Python 并不简单。。

    第 1 条附言  ·  2021-11-19 14:04:03 +08:00
    看了下方的留言,有些戾气较重,说楼主故意整八股文,

    应届生不问计算机网络、数据库、算法等基础,那问什么呢?高并发出来经验吗?



    很多说既然都是 Python 了就不需要八股文了,问点实际问题不好吗?

    我想说的说如果你只会写写脚本,if else ,你当然接触不到 Python 的鸭子类型。

    只会脚本的人,随便找个人学一天都能写出来了吧。



    标题中的“魔法方法” 我也是直接采用《流畅的 Python 》中的直译,可能有些人不了解,

    但是在实际面试中我是通过实际场景来询问面试者,并没有直接问名词解释

    例如:

    1.如何定义一个上下文管理器

    2.如何自定义对象能像函数一样调用等等



    有人说所谓的“魔法函数”花里胡哨没有作用,

    如果你做过 Python web ,了解 web 框架

    Django ,DRF 中大量有“魔法函数”的影子,

    举例:Django 如果你想自已定义 redis 的分页器 paginator ,你就需要按照 paginator 的协议来写

    包括我们公司内部很多脚手架包含了“魔法函数”,如果面试者从来没听过,了解过的话,写出的代码肯定是和我们公司的代码风格不匹配的



    最后我想说的是:我们需要的是认同 Python 的设计哲学,热爱 Python 的人。

    而不是觉得 Python 简单,学点基础语法就能快速上岗的人
    1  2  
    Chase2E
        1
    Chase2E  
       2021-11-19 10:42:38 +08:00   ❤️ 52
    好的代码, 是刚入职的新人也能看懂,
    牛逼的代码, 是学完 CS101 的大一新生也能看懂.

    你想问他懂不懂"魔法函数"的特性, 直接问他 "__init()__"为什么前后都要下划线不就行了...

    这些语言的高级 feature, 你写在工作代码中, 不是让大家为难吗?...
    rationa1cuzz
        2
    rationa1cuzz  
       2021-11-19 10:44:05 +08:00
    魔法方法太多了,而且大部分都用的少。
    aladdinding
        3
    aladdinding  
    OP
       2021-11-19 10:44:12 +08:00
    @Chase2E 问了啊 就是问了为什么有的函数是双下划线
    leetom
        4
    leetom  
       2021-11-19 10:47:20 +08:00   ❤️ 8
    这种语法细节没啥意义啊
    要不你回答一下,为啥 init 前面和后面都有双下划线?为啥不是单下划线?为啥不是只有前边有?
    cyrivlclth
        5
    cyrivlclth  
       2021-11-19 10:47:24 +08:00
    = =不如问一下 list 的扩容机制吧。。。
    ipwx
        6
    ipwx  
       2021-11-19 10:48:52 +08:00   ❤️ 3
    @Chase2E 我寻思 Python 类写多点自然就用到 magic function 了。

    别的不说,__lt__, __eq__, __hash__ 这三个凡是要用上自定义类型,大概率都要用到。不然你怎么自定义放进 map 当 key 或者 sort

    __deepcopy__, __getstate__, __setstate__ 这三个对需要序列化的自定义类型也是必须认识的。

    __enter__, __exit__ 是为了自定义类型要 with

    这些都不会,那就真的只会写函数了。可是复杂逻辑不用类,很难写啊。。。除非是 脚本小子
    huruwo
        7
    huruwo  
       2021-11-19 10:49:33 +08:00
    因为工作用不上 或者是用了也不知道是什么
    aladdinding
        8
    aladdinding  
    OP
       2021-11-19 10:50:44 +08:00
    @ipwx 赞同
    ampedee
        9
    ampedee  
       2021-11-19 10:50:49 +08:00   ❤️ 26
    自己用魔术方法实现了一个特性:真爽!我真牛逼
    看别人的代码用魔术方法实现了一个特性:傻逼!垃圾代码
    ipwx
        10
    ipwx  
       2021-11-19 10:50:59 +08:00
    @leetom
    @Chase2E “精通 Python”但是不会我上面说的这几个功能,也太离谱了。
    ipwx
        11
    ipwx  
       2021-11-19 10:51:31 +08:00   ❤️ 1
    @ampedee 你对“魔法方法”的理解有些怪异。

    比如我提到的这几个都是标准途径。。。
    ospider
        12
    ospider  
       2021-11-19 10:51:32 +08:00
    @leetom duck typing 不能算语法细节吧,不然用毛线 Python 。不过应届生不知道这个也合理吧
    macha
        13
    macha  
       2021-11-19 10:51:59 +08:00
    最后一句我很赞同,不知道为什么那么多人说 Python 简单。
    shyling
        14
    shyling  
       2021-11-19 10:52:06 +08:00
    要不你问怎么让 len(自定义 class()) 返回结果吧。。

    或者怎么 for in 自定义 class()
    ipwx
        15
    ipwx  
       2021-11-19 10:52:17 +08:00
    哦最基础的还有 __repr__。

    这个都不会还怎么调试的时候 print ?
    xxoOOovv
        16
    xxoOOovv  
       2021-11-19 10:52:49 +08:00
    如果毕业就写 py 的(而且 c/cpp 基础不扎实的),我感觉多数后面都会变成“能用就行”的原则,多数都不去了解源码和底层原理。如果是从 c/cpp 或 go 转来写 py ,情况就不一样了
    dejavuwind
        17
    dejavuwind  
       2021-11-19 10:52:57 +08:00
    @Chase2E @aladdinding 所以为什么要前后双下划线?为什么不是单下划线或者双连接符?

    难道不应该问这类函数有什么特点或者作用吗?而不是问为什么要前后双下划线?
    aladdinding
        18
    aladdinding  
    OP
       2021-11-19 10:54:28 +08:00
    @dejavuwind 目的就是问有什么作用 说双下划线只是给点提示
    fgwmlhdkkkw
        19
    fgwmlhdkkkw  
       2021-11-19 10:57:05 +08:00
    meta class
    await/yield
    ytmsdy
        20
    ytmsdy  
       2021-11-19 10:57:09 +08:00
    其实我觉得 Python 最大的问题不是速度慢,或者不支持并发。
    而是花式语法太多,每个人的编程风格都不一样,写出来的代码千奇百怪。
    相对于 C++或者 Java 这种工程化标准的语言,就没有这一类的问题!
    uni
        21
    uni  
       2021-11-19 10:57:30 +08:00
    很讨厌面试问名词的,我觉得更好的问法是给一个具体的场景然后问他怎么实现
    fgwmlhdkkkw
        22
    fgwmlhdkkkw  
       2021-11-19 10:59:48 +08:00   ❤️ 7
    但是我看你打的这段文字,我想给你一拳,栽种。
    没有对人的基本尊重,“估计”……,闻道有先后而已,别看不起人。
    ohwind
        23
    ohwind  
       2021-11-19 11:00:13 +08:00
    @ytmsdy C++ 这类问题反而更多......
    bytesfold
        24
    bytesfold  
       2021-11-19 11:03:04 +08:00
    不如说些问题看看有没有解决方案,非要把 Python 搞成像 Java 那样卷?
    efaun
        25
    efaun  
       2021-11-19 11:03:27 +08:00
    @ytmsdy #20 更大的问题是代码提示太差, 用 . 经常联想不出来, 或者联想错
    wangxin13g
        26
    wangxin13g  
       2021-11-19 11:05:00 +08:00
    我一直没理解 duck typing 的意义在哪
    为了彻底消灭继承么
    duck typing 的工程化项目写的不多 理解错了见谅
    learningman
        27
    learningman  
       2021-11-19 11:10:37 +08:00
    原来__init__就算吗,我还以为说的是__code__
    dangyuluo
        28
    dangyuluo  
       2021-11-19 11:11:19 +08:00   ❤️ 8
    不能怪应届生,因为 Python 这些魔法函数本来就是为了省事才存在的,而在大学里最不缺的就是时间。举个例子`__next__ `是为了能让 Class 支持迭代器,但是有很多其他代码长一点的办法来实现,所以大学生可能没有过接触。

    我觉得面试,尤其是应届生面试的时候还是要考察对基础知识掌握是否牢固,而不是这种语法糖。
    dangyuluo
        29
    dangyuluo  
       2021-11-19 11:12:42 +08:00
    @ohwind 因为学 C++的人没两步就能遇到 overload operator 了😅不需要等到工作后才知道
    aloxaf
        30
    aloxaf  
       2021-11-19 11:22:38 +08:00
    有句话怎么说的来着,人的知识就像一个圆,知道的越多,圈就越大,就越能意识到自己不知道的有多少。

    大部分应届生的圈都很小,所以会产生「我已经精通了 Python 」的幻觉也无可厚非。
    Osk
        31
    Osk  
       2021-11-19 11:22:48 +08:00   ❤️ 1
    忘名了, 尴尬, 看标题也有点懵, 看下面的回复才明白...

    __repr__ __str__ __eq__ __len__ 等运算和比较的用得多一点, 因为确实好用, 但已经忘了他们叫魔法方法了😭
    skinny
        32
    skinny  
       2021-11-19 11:22:56 +08:00   ❤️ 1
    乍看之下我还寻思难道又有我不懂的 Python 特性和语法,看下来我就无语了,你特么就不能说人话,你这就跟在 C++、C#、Java 面试里问别人知不知道魔法函数一样,构造函数就构造函数,操作符函数或方法就操作符函数或方法,你就不能说个实际需求,比如序列化、支持某些操作符、元编程具体场景?还让别人猜你这词什么意思,暗示来暗示去,我一旁观者看着都累。
    sagaxu
        33
    sagaxu  
       2021-11-19 11:28:04 +08:00 via Android
    @ipwx key 一律用作为 id 的 int 或者 string ,sort 每次自定义比较 lambda ,也不是不 work 。

    序列号有 json ,一般不处理 state 也问题不大。

    with 就更少用了,finally 中清理也不差,而且 with 跟 pypy 不兼容。

    decorater 和 descriptor 就更加用不上了,学生大都从 C 语言入门,很多时候只是把 python 之类当做不用管内存而且内置数据结构更丰富的语言在用。
    youngce
        34
    youngce  
       2021-11-19 11:31:39 +08:00   ❤️ 1
    面试的时候尽量减少出现一些官方文档上提及比较少的名词,比如所谓的魔法函数,换一种问法:python 类的内置函数和方法你知道哪些?

    再比如想考察一下面向对象的思想,让候选人讲讲常见的设计模式如何实践、SOLID 设计原则也是不错的选择

    当然如果只是想找到能和自己对上暗号的候选人当我没说
    locoz
        35
    locoz  
       2021-11-19 11:34:11 +08:00 via Android
    还是得看具体领域和做的事情吧,如果没有什么深入定制化的需求,其实真用不上这些高级玩法,不会用很正常。

    以爬虫领域为例,自己写框架的肯定会用上很多高级玩法来让使用起来更方便,但是单纯用框架去采集数据的就压根不需要用,那后者当然也就大概率不会去了解这些。
    masterclock
        36
    masterclock  
       2021-11-19 11:40:58 +08:00
    原来 __init__ 这样的东西叫魔法函数啊
    查了一下 python glossary
    magic method
    An informal synonym for special method.
    windfarer
        37
    windfarer  
       2021-11-19 11:41:59 +08:00
    面试问语言细节没太大意思,还不如问问,假如你发现有个接口特别慢,怎么排查
    ysc3839
        38
    ysc3839  
       2021-11-19 11:48:10 +08:00
    @masterclock +1
    原来 __init__ 这样的东西叫魔法函数啊,我都是叫 operator 的……
    Juszoe
        39
    Juszoe  
       2021-11-19 11:52:02 +08:00
    对应届生问这种工程细节其实没啥意思,基础好的稍微自学都能懂了,如何把“基础好”的应届生筛选出来或许才是更重要的
    learnshare
        40
    learnshare  
       2021-11-19 11:57:07 +08:00
    针对程序员的面试,应该问问他的项目经验,然后考察问题的分析和解决能力
    不要背书式的考察,不熟悉的东西他也讲不明白,临时准备的东西也背不出来
    zmxnv123
        41
    zmxnv123  
       2021-11-19 11:57:21 +08:00
    我觉得楼主说的没问题,为什么应届生 Java 就要懂 Object ,但 Python 就不需要懂 Magic Method 呢?

    如果是因为觉得 Python 比 Java 简单才选择 Python ,那确实...
    aladdinding
        42
    aladdinding  
    OP
       2021-11-19 11:57:39 +08:00   ❤️ 3
    @fgwmlhdkkkw 愤青?
    jguo
        43
    jguo  
       2021-11-19 12:01:12 +08:00   ❤️ 2
    啥都不懂啥都不学,别人提出来就是为难他,然后十年后抱怨为什么过了 35 岁没人要
    niubee1
        44
    niubee1  
       2021-11-19 12:21:53 +08:00
    其实所谓的魔术方法就是 Java 啊 C# 啊里的基类中定义了给大家自行实现的一些虚函数,等同于一种约定。比如定义__str__等同于 overide toString ,定义 __lt__ 等于 override 了操作付 <。没有什么神奇的,不知道魔术方法等于学 Java 不会运算符重载,这不是扯么
    shm7
        45
    shm7  
       2021-11-19 12:32:19 +08:00 via iPhone   ❤️ 1
    @ipwx 完蛋 我做 nlp 还没用到过
    msg7086
        46
    msg7086  
       2021-11-19 12:32:26 +08:00
    @ytmsdy 语法越死板,就越能接受菜鸟的代码,但也越繁琐无趣。
    越灵活,门槛就越高,每个几年的经验别说写了,看都看不懂,但是写起来也最爽滑。
    我觉得 Python 已经很死板了,我一个 Ruby 用户平时都不想碰 Python ,就感觉写起来太无趣了。
    Java 更死板,写个复杂点的 stream 怕不是就要被当成异教徒了。
    pengtdyd
        47
    pengtdyd  
       2021-11-19 12:41:52 +08:00
    我认为中小型公司招聘应该着重考察项目能力和是否有真实的工作经验,至于八股文这些问题问了也没用,对招聘帮助不大。
    conhost
        48
    conhost  
       2021-11-19 12:43:10 +08:00
    @shm7 nlp 也要用到啊,最起码的__init__肯定要用到吧,不过就像 44 楼说的一样,我都是把他们当成虚函数,用到的时候直接重写就完了,还真忘了这玩意叫魔术方法
    makelove
        49
    makelove  
       2021-11-19 12:45:59 +08:00
    这种魔法函数基本概念,平时你可以不用,但完全不知道有这个就说不过去了,只说说明他对编程没兴趣,连完整浏览一遍概念的功夫都不想出
    mon6912640
        50
    mon6912640  
       2021-11-19 12:50:17 +08:00   ❤️ 2
    那你告诉我,别的语言的内置方法或者是析构函数解构函数不叫魔法函数,为什么只有 python 的叫做魔法吗?别的语言不配称为魔法吗?为啥不叫牛逼函数?
    vance123
        51
    vance123  
       2021-11-19 12:54:21 +08:00 via Android
    一直在用,但第一次知道叫魔法函数。不过应该翻译成魔法方法,类中的函数一般叫做方法(method)
    mutalisk
        52
    mutalisk  
       2021-11-19 12:56:49 +08:00
    写个 python 都要搞成这种八股文就很搞笑了
    vvhhaaattt
        53
    vvhhaaattt  
       2021-11-19 12:58:01 +08:00 via Android
    python 日常使用到(写业务)的语言特性我感觉不到 1/3
    再加上上学时养成的根深蒂固的面向过程思维(需要改,也在改)
    面试 python 碰到这种让猜要用某个特性又没有比较好的引导,电波没对上,那就挂了😂😅
    jones2000
        54
    jones2000  
       2021-11-19 12:59:39 +08:00
    能写出解决问题的代码不就可以了。要什么魔法函数。完全就是纸上谈兵。
    likeccpo
        55
    likeccpo  
       2021-11-19 12:59:55 +08:00
    - -工作三年用这玩意屈指可数 还是框架好啊 (go yyds)
    mon6912640
        56
    mon6912640  
       2021-11-19 13:03:44 +08:00
    接#50 续,我的意思是,python 并不是很多人接触的第一门语言,很多都是从 java 、C++或者其他语言摸过来的,魔法函数这个名称实在太不直观了,说白了就是可以重载的内置接口,从别的语言过来的话,看到这个大概第一时间都是理解成构造、析构之类的概念带过,用到的时候会想到,但可能名词定义就记不清了
    binux
        57
    binux  
       2021-11-19 13:10:04 +08:00 via Android   ❤️ 2
    不不不,就算候选人不知道魔法函数这个说法,这是在面试唉,难道就不会问清楚吗?
    难道以后开会的时候有人用了一个冷门的说法或者发音,也会去搞清楚吗?
    比起知识点,这反而是更严重的扣分项吧。
    est
        58
    est  
       2021-11-19 13:15:09 +08:00   ❤️ 7
    第一,这个叫 magic method ,而不是 魔法「函数」

    第二,我十分讨厌滥用 magic method 的人。感觉就像给一个人插上一跟脑管一样。不自在。对象跟对象交流我觉得应该通过非魔法的常规方法和属性而不是自己实现一套双下划线魔法。。。。
    est
        59
    est  
       2021-11-19 13:16:07 +08:00
    比如现在 cpython 搞出来的什么 __aiter__ __anext__ 我觉得就是脑残。
    tinkerer
        60
    tinkerer  
       2021-11-19 13:16:09 +08:00
    经常用你们口中的魔法方法,但我现在才知道叫魔法方法,然后什么鸭子类型猴子补丁,不推荐直接让面试者解释概念,还是把重点放在解决问题的能力考察上,各种名词害人,你见到的翻译后的概念名词,其实有各种翻译版本
    JeffGe
        61
    JeffGe  
       2021-11-19 13:40:50 +08:00 via Android
    我记得这叫 dunder methods ,取名非常直观:d(ouble)-under(score)

    查了一下,这些方法也叫 magic methods 或者 special methods

    这个名字已经在 Python 领域被广泛接受了,再说就算不清楚这个名字,面试的时候可以交流可以问,我认为楼主使用这个名字没有任何问题。值得探讨的无非就是 dunder methods 该不该作为考察的点,我认为自称“精通”Python 的人是可以考的。
    newmlp
        62
    newmlp  
       2021-11-19 13:42:00 +08:00
    @ytmsdy 不不不,cpp 花里胡哨的东西更多
    ipwx
        63
    ipwx  
       2021-11-19 13:49:29 +08:00
    @est 恕我直言,Python 不用这些机制就失去了 Python 的优势,和用 Java 怼代码也没有区别了。
    Zy143L
        64
    Zy143L  
       2021-11-19 13:51:11 +08:00 via Android
    我一般叫魔术方法...
    看到魔法函数 我愣了几秒😂
    ila
        65
    ila  
       2021-11-19 13:53:10 +08:00 via Android
    比较少用。
    用的常规方法。
    yEhwG10ZJa83067x
        66
    yEhwG10ZJa83067x  
       2021-11-19 13:57:05 +08:00
    就说 PHP 好了,比如他的协变和逆变我就理解好了很久。我感觉都不简单。
    unnamedhao
        67
    unnamedhao  
       2021-11-19 13:57:45 +08:00
    我觉得面试的好问题应该是,
    如何实现某个需求,
    在实现这个需求的时候用 magic method 会有什么优势
    marcong95
        68
    marcong95  
       2021-11-19 13:59:56 +08:00   ❤️ 1
    @skinny #32 magic method 是写在 Python 官方文档 Glossary 里面的一个术语,虽然是 an informal synonym of special method ,也不至于算不上人话。

    个人而言不太爽部分人看到个自己没见过的词汇就说别人「不说人话」,在指责别人不说人话之前,能不能先自己 Google 一番。如果只是从非专业人士不好从字面上理解的角度出发,窃以为「元编程」也不太算人话。
    ipwx
        69
    ipwx  
       2021-11-19 14:00:17 +08:00
    @justrand ???(刚刚速查了一下)这不就是改个函数签名吗。。。。

    php runtime 帮你做了类型检查了,都不用你处理“不能编译”这件事。动态语言就是爽啊,在 C++ 里面这种代码根本写不出来,想要逆变只能 dynamic_cast<...>
    JudyHal
        70
    JudyHal  
       2021-11-19 14:01:39 +08:00   ❤️ 1
    现在的政治正确就是,你越无知你就越有理,这么简单的东西都不会还好意思去应聘?现在 V2 也是宣扬知识无用论的大本营
    yEhwG10ZJa83067x
        71
    yEhwG10ZJa83067x  
       2021-11-19 14:12:44 +08:00
    @ipwx 好吧是我太弱了
    ipwx
        72
    ipwx  
       2021-11-19 14:33:16 +08:00   ❤️ 1
    支持楼主的附言 1 。

    楼上有些人确实没怎么用过 Python ,然后上来大言不惭说,“我从来不用”,只用普通成员函数。

    但凡用过大一点的库就知道 Python 都靠下划线 magic method 实现各种 protocol 然后把对象丢进去做 middleware 。这是 Pythonic 。结果还被人喷。。。
    OnlyO
        73
    OnlyO  
       2021-11-19 14:40:50 +08:00
    魔法方法是 Python 的黑科技啊,深入必须得会啊.
    fregie
        74
    fregie  
       2021-11-19 14:42:58 +08:00
    "不简单"对于编程语言来说从来不是一个值得骄傲的点,相反,这可能是一个致命伤(比如 C++)
    "学点基础语法就能快速上岗"也从来不是缺点,这不该是一门编程语言的终极追求吗?(仅限语言方面,其他方面的基础也很重要)
    MonoBiao
        75
    MonoBiao  
       2021-11-19 14:44:58 +08:00
    metaclass 真好玩(
    shyling
        76
    shyling  
       2021-11-19 14:53:43 +08:00
    真心觉得这个是基础。。

    你在 java 里不能对一个实例四则运算,在 python 里确可以,在 c 艹里甚至还可以左移一个字符串到输出流里。

    难道就不好奇为什么吗? 教什么就只会什么,背书是吧
    RedisMasterNode
        77
    RedisMasterNode  
       2021-11-19 15:01:25 +08:00
    这些在 Python 开发里面是真的用得到的...如果你只是把 Python 当做一个很简单的脚本工具,没有任何公共组件、(项目内)中间件开发经历的话,那完全不了解这些东西怎么样用好一门语言呢。总不能一直抱怨工作平淡,又一点追求或者收获都没有吧。

    安利写 Python 的工程师找工作前都可以看看《流畅的 Python 》
    johnsonqrr
        78
    johnsonqrr  
       2021-11-19 15:04:24 +08:00
    额,不懂也无可厚非吧,有啥好喷的。
    工程上的细节知识点太好学了,面试不是都以算法和数据结构为主吗。
    ybnsjl
        79
    ybnsjl  
       2021-11-19 15:04:51 +08:00
    @Chase2E #1 前两句是赞同的,后两句有些偏失。比如:
    定义__len__、__iter__方法,那么在你的业务代码中可以少写很多 if 、for 之类的;
    定义__getitem__、__missing__可以少写很多 try...except KeyError 之类的。每个魔法函数都有它存在的意义。

    完成功能是一方面,可维护性、健壮性、扩展性又是另外一方面。基础函数库越扎实,上层的业务代码就越少,秃头的可能性就越低。
    ffxrqyzby
        80
    ffxrqyzby  
       2021-11-19 15:11:21 +08:00
    Python 确实不简单, lz 说的这些但凡看过一本深入 Python 的书都会了解的
    不过面试吗, 考察语言只是一个点, 楼下的也不要太偏激了
    coodyz
        81
    coodyz  
       2021-11-19 15:36:32 +08:00
    为啥都在怼楼主,我觉得没啥问题吧。但凡看过一本入门 python 书,或者网上的入门教程,也不至于不知道 magic method 吧
    coodyz
        82
    coodyz  
       2021-11-19 15:38:59 +08:00
    python 简单更多的说的是基础语法结构简单,随便啃个有点名气的 py 开源项目,头发都能掉好多
    fgwmlhdkkkw
        83
    fgwmlhdkkkw  
       2021-11-19 15:39:50 +08:00
    但是你面的是什么,是应届生啊。你连这点宽容都没有吗?那你找什么应届生啊。是,他是写了“精通 Python”,但他还可以写他是你爸爸,你信吗?你会喊吗?
    你就是想要厉害的应届生,这也是可以理解的,完全合理的。但是你不能用这种高高在上的态度来嘲讽应届生。
    按你的逻辑,你如果出现在 Guido 面前,你是不是要跪下去舔他的鞋?
    fgwmlhdkkkw
        84
    fgwmlhdkkkw  
       2021-11-19 15:43:49 +08:00   ❤️ 3
    你能回想起那个刚毕业的自己吗?尊重人好吗?
    我不是愤青,我只是讨厌你而已。
    aladdinding
        85
    aladdinding  
    OP
       2021-11-19 15:44:54 +08:00
    @fgwmlhdkkkw 只是描述这个现象而已,全文并没有嘲讽,高高在上的字眼。应该是你从骨子里对面试官有偏见吧
    wpyfawkes
        86
    wpyfawkes  
       2021-11-19 15:52:32 +08:00
    你都知道是魔法函数了.麻瓜自然不会去用的啦.
    robinlovemaggie
        87
    robinlovemaggie  
       2021-11-19 15:52:43 +08:00
    如何评价 Guido 放弃 python 跑去微软抱大腿?所以还是不要谈什么热爱一门语言的屁话了,大家都只是单纯的爱钱而已。
    robinlovemaggie
        88
    robinlovemaggie  
       2021-11-19 15:53:47 +08:00
    @fgwmlhdkkkw #32 老哥明白人~
    adoal
        89
    adoal  
       2021-11-19 15:59:43 +08:00
    因为低水平(并且敢在简历里吹高水平)的人是大多数。
    结贴,散分。
    BBCCBB
        90
    BBCCBB  
       2021-11-19 16:01:13 +08:00   ❤️ 1
    @robinlovemaggie 你在说啥? guido 去微软不是去改进 python 性能去了吗.

    微软花钱, 出人出力来改进 python 性能, 不香吗
    preach
        91
    preach  
       2021-11-19 16:03:01 +08:00
    类似 Javaer 的重载,确实是基础,不过楼主想想,大多数人的水平应该是什么样子的?
    just1
        92
    just1  
       2021-11-19 16:08:59 +08:00
    不用为什么,只是他们 Python 用得少而已,说难听点叫菜(不跟从业者比,在同龄人当中也是)。大学里面很多学 Python 都是在课上学的,写个爬虫或者机器学一而已。
    pepesii
        93
    pepesii  
       2021-11-19 16:11:55 +08:00
    就是因为菜而已
    ila
        94
    ila  
       2021-11-19 16:14:59 +08:00 via Android
    @coodyz 但用的少吧。
    rpman
        95
    rpman  
       2021-11-19 16:18:21 +08:00
    钢针, 写业务没必要搞那么多花花肠子..
    当然, 写库写框架搓火箭什么的, 熟练运用这些特性非常重要
    robinlovemaggie
        96
    robinlovemaggie  
       2021-11-19 16:23:55 +08:00
    @BBCCBB #90 那你说 Linus 为啥不去呢?
    O5oz6z3
        97
    O5oz6z3  
       2021-11-19 16:27:01 +08:00   ❤️ 5
    我想请教楼主:
    1 、“魔法函数”的正式定义和名称是什么?
    2 、“魔法函数”和“鸭子类型”“协议”有什么关系?
    3 、“魔法”在哪里?
    4 、拿这种需要时翻翻书一秒上手的知识点筛选人是否有点苛刻?
    5 、__dir__ __getattr__ 对应什么鸭子类型?
    aieike
        98
    aieike  
       2021-11-19 16:32:51 +08:00
    Python, 花里胡哨, 是优点也是缺点
    当时我是冲着, Python 无所不能学的, 现在用了两三年后, 就不太想要那些花的东西了
    johnsona
        99
    johnsona  
       2021-11-19 16:42:29 +08:00 via iPhone
    你要看情况 有的搞 ai 短平快框架训模型 直接 override 父类方法 自己写个函数 没工夫给你折腾语言 毕竟效果不好有的头疼了

    我感觉运维工作可能也是写函数调 system api 多
    BBCCBB
        100
    BBCCBB  
       2021-11-19 16:49:18 +08:00   ❤️ 1
    @robinlovemaggie 人家想去不想去是他们自己的事, 去微软就是为了钱了? 没道理嘛
    1  2  
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   860 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 34ms · UTC 21:10 · PVG 05:10 · LAX 13:10 · JFK 16:10
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.