V2EX piglei
 piglei 最近的时间轴更新
piglei

piglei

Yet Another Pythonista
  Tencent
V2EX 第 45802 号会员,加入于 2013-09-22 18:00:41 +08:00
Python 工匠:写好面向对象代码的原则(上)
  •  1   
    Python    piglei    2019-07-01 10:18:43 AM    最后回复来自 piglei
    6
    Python 工匠:高效操作文件的三个建议
  •  1   
    Python    piglei    2019-06-18 20:12:14 PM    最后回复来自 piglei
    18
    Python 工匠:做一个精通规则的玩家
  •  4   
    Python    piglei    2019-05-28 20:53:47 PM    最后回复来自 xuanwu
    9
    Python 工匠:编写地道循环的两个建议
    Python    piglei    2019-04-30 16:10:35 PM    最后回复来自 bwangel
    29
    [深圳] 腾讯游戏运营部 PaaS 平台招聘 Python 开发工程师
    酷工作    piglei    2024-07-04 11:43:16 AM    最后回复来自 zzping
    16
    [深圳] 腾讯游戏运营部 PaaS 平台招聘 Python 后台工程师
  •  1   
    酷工作    piglei    2016-10-13 15:56:09 PM    最后回复来自 ihacku
    12
    piglei 最近回复了
    > 但是在我看来, 你要传什么 output_writer 不还是要通过 if 来选择吗, 只是把一个地方的 if 换到了另外一个地方,

    你的理解已经很接近:“多态”确实无法完全消除“if”。这是因为,人们总是需要用代码来表达某种“如果/否则”的逻辑。但和普通的“if/else”比起来,面向对象设计的区别在于,它会努力将这些“如果/否则”逻辑封装在不同的实现(`XWriter`)中,让“if/else”代码只存活于代码的边缘区(工厂函数),从核心区中销声匿迹。

    什么是核心区?显而易见,是 FancyLogger 中实际完成日志打印的部分;什么是边缘区?在例子中,用 if/else 分支去创建对应的 Writer 实例的代码,前置于打印日志功能,可以被看作身处边缘区。对比例子中的两种方式:

    1. 无 Writer 抽象时:核心区需要理解**全部的“如果/否则”逻辑**,才能完成日志打印
    2. 有 Writer 抽象时:在边缘区创建 writer 实例,传递给核心区,后者**一视同仁**调用 writer 完成日志打印

    本书中的代码示例,因篇幅原因实现的功能比较简单,不同代码之间所产生的对比可能不够强烈。当业务逻辑变得更复杂后,利用多态特性来提炼并封装“如果/否则”的优势会变得更显著。在我心目中,那是在整个“面向对象”中,最富有魅力的地方之一。
    2022-08-12 19:25:09 +08:00
    回复了 ppj 创建的主题 Python Python 每日一练:等分字符串
    好答案前面有了,我再多贡献一条基于正则的花活。若干年前学自《精通正则表达式》,对于当时的我过于震撼,牢记至今:

    >>> s = 'F0B42998CE34'
    >>> import re
    >>> re.sub(r'(?<=.)(?=(..)+$)', '-', s)
    'F0-B4-29-98-CE-34'
    @QuinceyWu @weihuilee @dearmymy @charexcalibur 感谢你们的支持。
    @toan 问了出版方,还没有确定的答复 :(
    @psyer 不是一类风格,不太好对比,建议简单试读后自己判断是否适合。
    @root01 可以先看试读章节与开源文章,够你读一阵了。
    @lion9527 @ClericPy @tfull @dream4ever @ice2016 @Freya21 @Elaina @fx0719 @yaron @v2exblog 感谢对书的认可和支持。
    @devtiange
    @upojzsb 电子版昨天刚在图灵社区上架(仅 mobi 格式): https://www.ituring.com.cn/book/3007 ,欢迎了解。
    @LeeReamond 感谢建议,起标题时没多想,抱歉引起了您的误解。《流畅的 Python 》是一本非常棒的经典之作,内容既有深度,也十分全面,拙作在这些方面的确难以望其项背。但作为一本书,阅读价值是因人而异的。对于那些刚迈过新手阶段不久,苦恼于自身代码质量的程序员,我认为《 Python 工匠》里的经验之谈确实能为其提供一些帮助。感谢您的指点。
    @wklken 感谢。
    @chi1st 感谢支持。我字丑,你就当我用意念给你签过了吧,祝你读得开心。
    2022-06-09 08:50:24 +08:00
    回复了 acctv2 创建的主题 Python 有没有一些高质量的 Python 内容推荐?
    我写了本 Python 进阶相关的书:[《 Python 工匠:案例、技巧与工程实践》 ]( https://www.zlovezl.cn/book/index.html),今年三月份出版。内容主要是一些编写高质量代码的技巧及工程实践建议,感兴趣的话可以试读了解一下。

    - 试读样章: https://www.zlovezl.cn/book/index.html
    - 豆瓣书评: https://book.douban.com/subject/35723705/
    - 京东购买: https://item.jd.com/13068111.html

    ---

    《 Python 工匠》是一本以 Python 进阶编程为主题的技术图书。纸质书由人民邮电出版社于 2022 年出版,与其他同类图书相比,《 Python 工匠》有着以下突出特色:

    - 专注于基础编程素养与 Python 高级技巧的结合
    - 内容深入 Python 语言内核,不浮于表面
    - 知识点都由作者精心挑选过,而非罗列官方文档
    - 通过有趣的“案例故事”表达有用的编程理念
    支持(从没见过你描述里的那么详细的需求文档)
    2020-12-25 18:18:46 +08:00
    回复了 jimmyismagic 创建的主题 阅读 影响你最深的一本书是什么?
    《代码大全 第二版》
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2189 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 28ms UTC 00:37 PVG 08:37 LAX 17:37 JFK 20:37
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86