Python:我错过了什么吗?

Jon*_*ney 15 python

我正在学习Python,同时实现构建脚本等.目前一切都运行良好,因为脚本做了他们需要做的事情.但我一直觉得我错过了一些东西,比如"The Python Way".我知道构建脚本和胶水脚本并不是最令人兴奋的开发工作,可能很难成为揭示Python真正力量的候选者,但我仍然希望有机会让我的思绪受到重创.我主要用C#开发,我发现我的Python代码在结构和样式上看起来与我的很多C#代码非常相似.换句话说,我觉得我在用C#思考,但用Python编写.

我真的错过了什么吗?

(注意:我意识到这不是一个编程问题而且它是相当广泛的,并且可能没有明确的答案,所以如果必须的话,请将其归结为遗忘.)

Bai*_*ose 36

我建议你读了发电机,迭代器,itertools以及上述所有列表综合.

这些是Pythonic的支柱.而对于其他一切,还有PEP-8.

阅读这些概念并尝试在适当的地方使用它们.祝一切顺利!

PS:别忘了import this;)

附录:我也会在这个帖子中汇总其他人给出的一些很好的建议:

  • 不要忘记,在生成器,迭代器,itertools,列表推导甚至PEPS存在之前,python已经是一种非常有用的语言! (3认同)

And*_*are 16

不 - 对于那些从其他类C语言迁移到Python的人来说,这是很常见的.我相信你所寻找的是使你的代码更"Pythonic"的方法.好消息是你编写的Python越多,你的代码就会变得越Pythonic.这是"我怎样才能更简单地"这种态度的自然溢出.

另一个值得关注的好地方是The Zen of Python.这些对Python开发的态度也会对您有所帮助.


小智 7

到目前为止,你已经得到了很好的建议.我只会将Dive添加到Python中.

编辑:截至2011年10月4日,这项工作可以在这里找到. 在这里深入Python 3. "为什么"这是:看到这里,这里这里.


And*_*dré 6

当你开始用python进行系统编程时,你一定要看一下这个话题:http://www.dabeaz.com/generators/


Nic*_*cue 5

最近我通过解决python中的Project Euler问题来学习/改进我的python.这对我来说非常有效,因为:

  1. 它既有趣又有竞争力,所以我有动力继续前进
  2. 它迫使我以一种非常自然的方式使用python数据结构来获得我需要的性能,所以它教会了我很多关于列表,集合,字符串,迭代等的知识.
  3. 大多数问题只需要一页代码就可以解决,所以你有更多时间以更优雅的方式考虑抛光或重写
  4. Python非常容易处理大整数,所以它就像使用正确的语言一样

我完全推荐这个.


Tho*_*day 5

你在读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()
Run Code Online (Sandbox Code Playgroud)

你能找到多少Python成语?