今天面试被问到 Python 的设计模式,直接给跪了

2015-05-08 21:22:57 +08:00
 tennix
自己真是孤陋寡闻了,用了快3年的 python 居然不知道还有设计模式一说
10016 次点击
所在节点    程序员
36 条回复
messense
2015-05-08 21:27:40 +08:00
设计模式当然应该是各种语言都有的吧,只是细节和实现略有不同。Python 倒是不那么强调设计模式吧。

https://github.com/faif/python-patterns
ibigbug
2015-05-08 21:29:53 +08:00
额,编程至少 3 年居然没听说过设计模式?
maemual
2015-05-08 21:30:58 +08:00
@ibigbug 楼主的意思应该是,知道设计模式,但是在用 Python 的过程中,没遇到过需要强调设计模式的地方。
halfcrazy
2015-05-08 21:32:36 +08:00
楼主面的哪家呢?
Septembers
2015-05-08 21:36:20 +08:00
@messense Python语法糖强大到很少需要设计模式支撑
ibigbug
2015-05-08 21:36:46 +08:00
@maemual 那就扯呗,面试又不怕扯得多
tcxurun
2015-05-08 21:39:34 +08:00
推荐楼主一本书,Python编程实战,运用设计模式、并发和程序库创建高质量程序,可惜我是搞java的,python新手,这书看到比较吃力
tennix
2015-05-08 21:50:01 +08:00
当听到说装饰器是设计模式时,我就彻底无语了,所以就跟他说装饰器就是一个高阶函数,在Haskell、Lisp等函数式编程语言中最自然不过的东西,然后又跟他扯了一堆函数式编程的东西,说得激动了,结果把他说得无语了,所以想想这次肯定跪了
lloovve
2015-05-08 21:52:14 +08:00
开机 写代码 关机 这个通用模式
ruoyu0088
2015-05-08 21:53:33 +08:00
<amp-youtube data-videoid="Er5K_nR5lDQ" layout="responsive" width="480" height="270"></amp-youtube>
Septembers
2015-05-08 21:55:48 +08:00
@tennix 在OOP里decorator pattern的确是个模式
Ryans
2015-05-08 21:57:25 +08:00
@tcxurun 看起来不错 thanks
RIcter
2015-05-08 21:58:42 +08:00
非CS專業半路出家設計模式寫得比較吃力,現在就瞭解幾個⋯
virusdefender
2015-05-08 22:00:28 +08:00
我知道的也就是装饰器,单例模式(创建各种数据库连接的时候常用),订阅模式(django的信号)
riaqn
2015-05-08 22:03:39 +08:00
设计模式是垃圾语言的标志。。越垃圾的语言设计模式越多。。比如说java。。。
//最近正在写java, 怨念比较大。
xuwenmang
2015-05-08 22:06:23 +08:00
@riaqn 设计模式跟语言没什么关系吧
phx13ye
2015-05-08 22:15:08 +08:00
越垃圾,设计模式越多+1

对于python,很多都内建支持
iterator build-in
builder 默认参数
command, strategy,visitor 什么的,fp表示你们一起上,我赶时间
messense
2015-05-08 22:16:21 +08:00
@Septembers 是很少需要设计模式支撑,但是懂点设计模式可以写出更加 graceful 的代码。(当然像小白用 Java 那样乱用滥用设计模式就是坑了,Java 一生黑.......)
Septembers
2015-05-08 22:18:48 +08:00
@messense 设计模式 是一种最佳实践的总结 但设计模式不是银弹
neoblackcap
2015-05-08 22:28:08 +08:00
设计模式是编程语言的补充,比如单例模式或者Python里面的一个变种Borg模式,这些Python自身的语法不提供,此时必然需要程序员自身去实现。

其实大概不是考Python的设计模式吧?其实就是想考楼主你的思考能力,到底遇到一个实际的问题能否将它映射到具体的模型里面

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

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

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

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

© 2021 V2EX