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

2021-11-19 10:38:08 +08:00
 aladdinding

Python 开发应届生岗位

有的甚至还写的精通 Python

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

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

我感觉 Python 并不简单。。

18059 次点击
所在节点    Python
197 条回复
zmxnv123
2021-11-19 11:57:21 +08:00
我觉得楼主说的没问题,为什么应届生 Java 就要懂 Object ,但 Python 就不需要懂 Magic Method 呢?

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

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

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/816468

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX