V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
laskuma
V2EX  ›  Python

为什么推荐python?

  •  
  •   laskuma · 2012-11-22 15:17:24 +08:00 · 7640 次点击
    这是一个创建于 4385 天前的主题,其中的信息可能已经有所发展或是发生改变。
    无意冒犯各位大大…也不想引起争吵。不把ruby拿来做比较,真心的问一句,为什么都推荐学python? 本人只会java和c,对python了解甚少,希望能多学到点关于python的知识。
    第 1 条附言  ·  2012-11-23 17:36:33 +08:00
    大家这么吵下去我也很难办。。。能具体讲一下python的文件操作吗?
    先给每个人都来个感谢,请查收
    43 条回复    1970-01-01 08:00:00 +08:00
    ch_linghu
        1
    ch_linghu  
       2012-11-22 15:35:45 +08:00   ❤️ 1
    普通的推荐理由:简单,好用,轮子多。
    最重要的推荐理由:我自己比较熟。
    fastzhong
        2
    fastzhong  
       2012-11-22 16:07:51 +08:00   ❤️ 1
    python & ruby 都不错,就像少林和武当,没有最高,只有更高,学习这玩意我觉得和练武一样,就像每一门武功,不是每个人都适合练,但不等于说这门功夫就不行,或者人有问题。初尝则止,python和ruby没有什么太大的区别,学好则要有缘分。
    zealot
        3
    zealot  
       2012-11-22 20:17:26 +08:00   ❤️ 1
    我推荐学门脚本语言,不一定是Python,ruby、perl都可以。
    程序员会门脚本语言的好处就不解释了
    lightening
        4
    lightening  
       2012-11-22 20:35:58 +08:00   ❤️ 1
    花两个小时看一下最简单的《简明Python教程》,就能略知一二了。
    blacktulip
        5
    blacktulip  
       2012-11-22 21:08:40 +08:00   ❤️ 2
    楼主还是学js吧,js已经一桶浆糊了
    alsotang
        6
    alsotang  
       2012-11-22 21:35:58 +08:00   ❤️ 4
    Python 没有 Ruby 和 JS 好用,Ruby 没有 JS 好用。但越好用的越灵活越不容易掌握。JS 的话,从CoffeeScript学起,然后等待 ECMAScript 6 吧。

    就速度来说,JS > Ruby > Python;不过就资料的可理解性以及入门的简易度来说,Python > Ruby > JS,Python 的官方文档十分优秀。就包管理来说,npm > gem > pip(or easy_install)。

    如果说要推荐一门脚本语言的话,我也会推荐学 Python,推荐 2.7 或 2.6 版本。无理由噢亲..

    个人喜欢用 Ruby,因为标准库功能强大。不过我在尽量向 V8 based 的语言靠。
    leohxj
        7
    leohxj  
       2012-11-22 21:37:22 +08:00   ❤️ 1
    推荐js,未来会是html和js的世界。
    ltzliwe
        8
    ltzliwe  
       2012-11-22 22:05:17 +08:00   ❤️ 1
    @alsotang 速度 Ruby > Python ?怎么来的。。 把JS拿来和Ruby、Python比有点不靠谱吧 。。
    sophy
        9
    sophy  
       2012-11-22 22:15:17 +08:00   ❤️ 2
    reus
        10
    reus  
       2012-11-22 22:18:37 +08:00   ❤️ 1
    又不是只能使用一门语言,全都学了就是了。马上学,不要再问这类问题了
    dreamer
        11
    dreamer  
       2012-11-23 00:06:22 +08:00   ❤️ 1
    我觉得喜欢什么编程语言可以稍微反映出一点个人性格,如果你喜欢 _why 和 DHH 那样的家伙,肯定也会喜欢用 Ruby.

    个人推荐 Ruby. 如果做 Web 开发的话就更推荐了,不仅因为有 Rails ,更因为 Rails 社区的人一般会把「做得好看」当作份内的事情,这点还是挺重要的。
    Ricepig
        12
    Ricepig  
       2012-11-23 00:13:47 +08:00   ❤️ 1
    其实很重要的一个因素是livid用python开发的本站吧
    PrideChung
        13
    PrideChung  
       2012-11-23 00:29:38 +08:00   ❤️ 1
    求你们了,讨论脚本语言的时候能不能带上PHP这个倒霉孩纸……
    air00dd
        14
    air00dd  
       2012-11-23 08:40:46 +08:00   ❤️ 1
    @leohxj 心动了!~
    laskuma
        15
    laskuma  
    OP
       2012-11-23 09:25:44 +08:00
    @ch_linghu 轮子是指?
    @zealot @fastzhong 觉得各种语言除了语法,是否有底层操作之外就没有差别了…

    @blacktulip @alsotang @leohxj JS不是刚被某大神喷掉吗
    leohxj
        16
    leohxj  
       2012-11-23 10:08:30 +08:00   ❤️ 1
    @laskuma 某大神是某人?
    Hysteria
        17
    Hysteria  
       2012-11-23 11:05:07 +08:00   ❤️ 1
    @laskuma 轮子应该就是库、框架等等神马的了。
    judezhan
        18
    judezhan  
       2012-11-23 11:25:09 +08:00   ❤️ 1
    程序员学一门新语言竟然需要理由?
    alsotang
        19
    alsotang  
       2012-11-23 11:34:13 +08:00   ❤️ 1
    @ltzliwe Ruby 1.9 已经是 JIT 虚拟机的了阿。
    holmesabc
        20
    holmesabc  
       2012-11-23 11:40:14 +08:00   ❤️ 1
    @alsotang 感觉python的doc文字条理很有问题,跟java doc没的比, 虽然默认的java doc很丑。

    两点很不爽的
    一,不能简单明确的反应类的继承关系。
    二,不能简单明确的知道函数返回值的类型。

    了解一个类,还是直接用help看,比看官方doc来的直接的多。
    meta
        21
    meta  
       2012-11-23 12:35:03 +08:00   ❤️ 1
    主要python还是简单吧,像perl我都用了十几年了,还是有好多东西不明白,看别人的源代码都像是天书。
    heroicYang
        22
    heroicYang  
       2012-11-23 12:39:35 +08:00   ❤️ 1
    @blacktulip 哈哈,5楼这个比喻,一桶浆糊。。。不过我感觉现在全身心做js的感觉真不错!为前后端大统一努力!
    laskuma
        23
    laskuma  
    OP
       2012-11-23 12:53:17 +08:00
    @leohxj Bret Victor
    binux
        24
    binux  
       2012-11-23 13:15:14 +08:00   ❤️ 1
    @holmesabc 那是因为

    一,python的类和继承一般并不重要。一般并不关心一个类的怎么继承的,只关心它的接口是怎么样的。“如果它看起来像鸭子,叫起来像鸭子,走路像鸭子,那么它就是鸭子”
    二,python是弱类型的,一般使用不关心类型,只要返回值看起来像“鸭子”就可以了。一个函数返回,要么抛异常,要么能bool,要么是内置类型,要么能遍历,然后就够了。如果不是,文档一定会写的。
    fwee
        25
    fwee  
       2012-11-23 13:24:09 +08:00   ❤️ 1
    @alsotang 不是..
    holmesabc
        26
    holmesabc  
       2012-11-23 13:54:28 +08:00   ❤️ 1
    @binux 当我写这些的时候,就想到有人要这么回答

    一、什么叫不关心继承。
    我连一个接口有什么方法有什么方法都还不知道,你就说他是这个接口的实现。有个蛋用。
    鸭子,前提你要知道鸭子是看起来像什么,怎么叫的,怎么走路的。
    你都没有这个前提,我捣蛋指个鸡,说鸭子是这个样子,是这么叫的,是这么走路的。
    你就是说这是鸭子了。

    二、我管你是不是弱类型。
    这个问题不是说是不是弱类型,而是有没有类型的问题。
    不是说鸭子就有鸡的方法,你不告诉我你返的鸭子还是鸡,不然怎么知道他是应该像鸭子还是鸡。
    binux
        27
    binux  
       2012-11-23 14:13:12 +08:00   ❤️ 1
    @holmesabc

    一、
    它有什么接口和它是从什么继承的多大关系,或者说身份就那么重要?文档里面一定写了这个类都有哪些API,但是你非得知道哪些是从父类继承的吗?何况大部分python类都是从object继承的,只是长得像鸭子罢了。

    二、
    类型有那么重要吗?告诉你返回值是一个长得像dict的东西,那它就肯定可以[key],但是非得继承自dict吗?告诉你返回值是可以遍历的东西,那它就非得像list能[index]吗?包括参数也是,接受list的函数大部分都可以接受可遍历对象,具体类型没有那么重要。至于返回的是鸡还是鸭,大部分时候,只要它长了两条腿,能下单那就够了,至于会不会游泳,要用到的时候再说。
    reus
        28
    reus  
       2012-11-23 14:19:50 +08:00   ❤️ 1
    @holmesabc 用dir()就可以看到全部方法了。而且如果你像写java一样写个几层的继承结构,那是你自寻烦恼。复用代码请多用组合少用继承
    查看返回值的类型,用print type(exp)就可以,也不需要查文档
    holmesabc
        29
    holmesabc  
       2012-11-23 15:04:02 +08:00   ❤️ 1
    @binux 好吧,我承认我说的接口是带点java的意思,但我这里的意思是按python里面来的,不是说实现一个接口,就继承一个类,最终的效果,只要有这个方法就行了,我不管你继不继承类。

    别老拿list说。哪有那么多东西反回的都是list。返回一个对像,你都不知道他有什么方法,难道只靠猜。返回了一个动物,我觉得他是鸭,因为他可以游泳,我就认为他真是鸭,可以跑了,结果最后发现TM的只是个鱼,一跑就挂掉了。


    @reus 我不是在说java和python语言的问题,只是在说文档的问题。别跑偏,免得搞的别人以为我像是在批评python这个语言。还有我刚上面就说了的,看文档,还不如help,当然dir也算。


    我说文档烂,也不是乱说的,当然英文烂也有一方像。
    昨天看xml.dom这个,随便小看一下,里面的结构了解了一下。什么xml.dom里的Document对像什么Node对像。之后又看了xml.dom.minidom,因为就在xml.dom的下一个嘛,肯定要看。
    结果里面有例子,好吧,跟着写一下呗。
    里面有这个方法 xml.dom.minidom.parse(),下面的解释是Return a Document from the given。。。
    Ok,你返回一个Document是吧,xml.dom里面也有Document,潜意识的就认为这是同一个。
    之后我要输出xml,然后在xml.dom里面看各个对象的方法,一时没看见输出的方法。
    好像google,有的例子是dom.writexml(...),
    我去啊,还有这方法,又去xml.dom里面找,fuck,还是没有。。。。
    让人蛋疼啦,最后还是help看了一下,里面有明确的结构,这才发现Document居然是xml.dom.mimidom里面的Document。然后再去看文档,果然有。
    你说你要是xml.dom.minidom.parse()里面说明是返回的xml.dom.minidom.里面的Document,哪还有这么多屁事,要不你给个链接也行。

    要是在java doc里面,返回的东西,肯定有链接指向这个类,我点过去,我就知道自己的理解是不是错了。



    最后再说一下,我是在说文档,不是在说语言。
    如果您想继续喷,别跑偏了。
    reus
        30
    reus  
       2012-11-23 15:35:03 +08:00   ❤️ 1
    @holmesabc 我没有在说语言问题。如果你在使用xml.dom.minidom.parse()后用dir看一下,那你根本不需要google就会知道怎么输出xml,因为很容易就能看到toxml和writexml这些方法

    你认为要知道一个对象支持什么方法,需要先知道它的类型,然后根据这个类型去查文档。所以你关心继承树和变量的类型。但其实你不需要,因为直接就可以知道一个对象的方法,所以说类型就不重要了

    遇到不熟悉的类请这样:
    xml.dom.minidom.parseString('<p />').__class__
    dir(xml.dom.minidom.parseString('<p />').__class__)
    binux
        31
    binux  
       2012-11-23 15:45:32 +08:00   ❤️ 1
    @holmesabc python有的库确实很烂,一点也不pythonic
    holmesabc
        32
    holmesabc  
       2012-11-23 15:46:00 +08:00   ❤️ 1
    @reus 好吧,你都说了
    遇到不熟悉的类请这样:
    xml.dom.minidom.parseString('<p />').__class__
    dir(xml.dom.minidom.parseString('<p />').__class__)

    这不是说dir和help好用么, 还不是间接说明我想表达的问题,python的文档太烂。

    我不是说什么学习方法,因为毕竟没有系统去学过python,只是用它偶尔写写脚本,你也知道用java写日常用的是有多蛋疼。
    你们的学习方法,先学习了。

    我现在只想表示一个观点就是python的doc太烂,更java doc没的比。
    chloerei
        33
    chloerei  
       2012-11-23 15:47:47 +08:00   ❤️ 2
    楼主再也不敢发语言贴了~
    reus
        34
    reus  
       2012-11-23 16:04:54 +08:00   ❤️ 1
    @holmesabc 你认为python的文档烂,只是因为它不符合你的使用习惯,改变下使用习惯就不会这样认为的了。何况,python是动态语言,返回值的类型是不确定的,毕竟不能像java一样直接从源码里就能解析出来,所以这类信息没有也不奇怪
    yetone
        35
    yetone  
       2012-11-23 16:07:43 +08:00   ❤️ 1
    哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈,我可以说 javascript 丑的一逼吗?我可以说 Ruby 美得不像话吗?想要速度就别用脚本语言了。好吧,我还是乖乖地去学 LISP 吧(幸亏我不是程序员,为了求生不得不学那些丑爆了的语言)
    holmesabc
        36
    holmesabc  
       2012-11-23 16:14:50 +08:00   ❤️ 1
    @reus 你认为python的文档烂,只是因为它不符合你的使用习惯,改变下使用习惯就不会这样认为的了。 不知道可不可以这么理解,如果没看过比它好的文档,就接受了烂文档。

    一个您都不愿意去看的文档,难道是好文档。

    唉, 返回值类型和动态语言有毛系。
    难道您见过一个方法有时返回int有时候返回str有时候Document。
    laskuma
        38
    laskuma  
    OP
       2012-11-23 17:39:18 +08:00
    @livid 不知道是不是有bug 每次感谢完一个回复者后必须刷新才能感谢下一个 不然即使显示了感谢已发送还是无效的。。
    或者说这是为了防止散钱。。? 还是我这里网络问题。?
    blacktulip
        39
    blacktulip  
       2012-11-23 18:08:36 +08:00
    不是跟楼主开玩笑啦,真的去学JS吧,反正都动态语言,先学JS有以下好处:

    1. 前面说过 JS 一桶浆糊了,学会了前后端通杀;
    2. JS 的语法最别扭,所以呢楼主要是先啃会了 JS ,以后无论学 Python 还是 Ruby 都小菜一碟,而且学的时候还会经常出现「哇居然能这样写好爽啊」之类的感觉,学习顺序要是反过来的话不免会觉得「靠怎么要这样写太别扭了」;
    3. 会了 JS 才能去学 CoffeeScript .
    reus
        40
    reus  
       2012-11-23 18:33:00 +08:00
    @holmesabc 我可没有表达过不愿意看文档这个意思。我知道什么样的信息,应该用什么工具得到。比如类型信息,python是在运行时才能得到的,所以我会用运行时的工具。文档也有文档所擅长提供的信息。比如example和其他细节

    python确实没有限定返回值只能是同一个类型,比如这个:
    http://gist.github.com/4134931
    foo的返回值的类型就是不确定的,只能在运行时得到
    python允许这样,所以一个方法会返回不同类型的值也是常见的
    当然对python代码进行静态类型分析也是可以的,但没有必要这样做,如果需要静态类型安全,可以用其他语言或者python的变种(cython, rpython之类
    binux
        41
    binux  
       2012-11-23 18:50:02 +08:00
    @timonwong 动态类型?或者随便怎么叫了
    reus
        42
    reus  
       2012-11-23 19:55:44 +08:00
    @binux 类型系统的动态/静态,和强类型/弱类型,是两个概念。参考:http://www.artima.com/weblogs/viewpost.jsp?thread=7590
    alsotang
        43
    alsotang  
       2012-11-23 22:24:03 +08:00
    @fwee 不好意思,是我搞错了..
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5559 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 06:01 · PVG 14:01 · LAX 22:01 · JFK 01:01
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.