我正在学习Python,同时实现构建脚本等.目前一切都运行良好,因为脚本做了他们需要做的事情.但我一直觉得我错过了一些东西,比如"The Python Way".我知道构建脚本和胶水脚本并不是最令人兴奋的开发工作,可能很难成为揭示Python真正力量的候选者,但我仍然希望有机会让我的思绪受到重创.我主要用C#开发,我发现我的Python代码在结构和样式上看起来与我的很多C#代码非常相似.换句话说,我觉得我在用C#思考,但用Python编写.
我真的错过了什么吗?
(注意:我意识到这不是一个编程问题而且它是相当广泛的,并且可能没有明确的答案,所以如果必须的话,请将其归结为遗忘.)
我建议你读了发电机,迭代器,itertools
以及上述所有列表综合.
这些是Pythonic的支柱.而对于其他一切,还有PEP-8.
阅读这些概念并尝试在适当的地方使用它们.祝一切顺利!
PS:别忘了import this
;)
附录:我也会在这个帖子中汇总其他人给出的一些很好的建议:
阅读代码像Pythonista:惯用Python(来自David Grant)
解决Project Euler的问题是一个好主意(来自Nick Fortescue)
David Beazley(来自André)对发生器和迭代器的精彩演示
了解使用SCons(从久负盛名的美国洛特)
不 - 对于那些从其他类C语言迁移到Python的人来说,这是很常见的.我相信你所寻找的是使你的代码更"Pythonic"的方法.好消息是你编写的Python越多,你的代码就会变得越Pythonic.这是"我怎样才能更简单地"这种态度的自然溢出.
另一个值得关注的好地方是The Zen of Python.这些对Python开发的态度也会对您有所帮助.
到目前为止,你已经得到了很好的建议.我只会将Dive添加到Python中.
编辑:截至2011年10月4日,这项工作可以在这里找到. 在这里深入Python 3. "为什么"这是:看到这里,这里和这里.
当你开始用python进行系统编程时,你一定要看一下这个话题:http://www.dabeaz.com/generators/
最近我通过解决python中的Project Euler问题来学习/改进我的python.这对我来说非常有效,因为:
它既有趣又有竞争力,所以我有动力继续前进
它迫使我以一种非常自然的方式使用python数据结构来获得我需要的性能,所以它教会了我很多关于列表,集合,字符串,迭代等的知识.
大多数问题只需要一页代码就可以解决,所以你有更多时间以更优雅的方式考虑抛光或重写
Python非常容易处理大整数,所以它就像使用正确的语言一样
我完全推荐这个.
你在读Python还没写吗?
这是Python 2.6.1发行版中删除.pyc和.pyo文件的脚本.
#!/usr/local/bin/python """Recursively zap all .pyc and .pyo files""" import os import sys # set doit true to actually delete files # set doit false to just print what would be deleted doit = 1 def main(): if not sys.argv[1:]: if os.name == 'mac': import EasyDialogs dir = EasyDialogs.AskFolder(message='Directory to zap pyc files in') if not dir: sys.exit(0) zappyc(dir) else: print 'Usage: zappyc dir ...' sys.exit(1) for dir in sys.argv[1:]: zappyc(dir) def zappyc(dir): os.path.walk(dir, walker, None) def walker(dummy, top, names): for name in names: if name[-4:] in ('.pyc', '.pyo'): path = os.path.join(top, name) print 'Zapping', path if doit: os.unlink(path) if __name__ == '__main__': main()
你能找到多少Python成语?