既然"Lift is short, you need Python" ,那么新手是该 print 'XX' ,还是 print('XX') - V2EX
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
Tiande
V2EX    Python

既然"Lift is short, you need Python" ,那么新手是该 print 'XX' ,还是 print('XX')

  •  
  •   Tiande
    PRO
    2015-05-06 14:58:09 +08:00 5807 次点击
    这是一个创建于 3812 天前的主题,其中的信息可能已经有所发展或是发生改变。

    RT

    装的 python 3,print '' 的时候被一片红吓到了...

    不知道和 2 还有多少区别,未来一两年行业趋势又是什么?

    暂无该方向就业意向,入门是否有必要从某一版本起步?

    想听听从业人员的建议 ;)

    PS:在 Python 节点发的,其他语言你们奏开。(对,说的就是你,PHP( з))

    58 条回复    2015-05-07 12:10:18 +08:00
    lizheming
        1
    lizheming  
       2015-05-06 15:02:01 +08:00   1
    话说不应该是“人生苦短,说 Go 就 Go”么(逃。。。
    做成函数是有好处的,最明显的是你可以给其它参数啊...而且事实证明还是挺有用的...
    cfan8
        2
    cfan8  
       2015-05-06 15:05:01 +08:00   3
    大家都在要3不要2,可惜实际生产环境里跑的全还是2
    vivianalive
        3
    vivianalive  
       2015-05-06 15:05:48 +08:00   1
    学 2 的话,迟早要学 3,甚至 4;
    学 3 的话,还是要学 2,不然谁来补 2 的坑;
    总结:休想一种语言,甚至一种语言的一个版本吃到老。
    Tiande
        4
    Tiande  
    OP
    PRO
       2015-05-06 15:09:13 +08:00
    @lizheming 用 linux 的加参数形式也是可以接受的嘛。
    明明是一种语言,感觉好像分了相反派别,学艺之前还要站队,心塞。
    neoblackcap
        5
    neoblackcap  
       2015-05-06 15:09:34 +08:00   1
    不管是2还是3,反正你用print()就肯定是通过的,不管你有没有from __future__ import print_function,
    所以我强烈建议使用print()
    ivenvd
        6
    ivenvd  
       2015-05-06 15:09:51 +08:00   4
    Lift is short,电梯很短?
    Tiande
        7
    Tiande  
    OP
    PRO
       2015-05-06 15:10:30 +08:00
    @vivianalive @cfan8 我想也是,就用3的解释器来学2好了 ;)
    自成一派-。-
    Tiande
        8
    Tiande  
    OP
    PRO
       2015-05-06 15:11:01 +08:00
    @ivenvd 真的笑,笑出声
    Tiande
        9
    Tiande  
    OP
    PRO
       2015-05-06 15:12:51 +08:00
    @neoblackcap 又装了个2 ,print()还真是通用的!
    这属于向上兼容吗?
    koykoi
        10
    koykoi  
       2015-05-06 15:13:21 +08:00   1
    又黑the zen of Python
    clino
        11
    clino  
       2015-05-06 15:14:17 +08:00
    @vivianalive 我用了很多年2还没开始学3,怀疑退休前自己有木有学3的需求
    lizheming
        12
    lizheming  
       2015-05-06 15:16:59 +08:00
    @dtdnqsb Linux 参数形式.... 想想在 Python 里面这么写还真是接受无力....
    Tiande
        13
    Tiande  
    OP
    PRO
       2015-05-06 15:17:12 +08:00
    @koykoi import this
    _(:3」∠)_ 好逗
    Tiande
        14
    Tiande  
    OP
    PRO
       2015-05-06 15:20:15 +08:00
    @lizheming 我好像是在描述 shell script (_)
    Bluecoda
        15
    Bluecoda  
       2015-05-06 15:29:00 +08:00   1
    lz的原题为:
    论电梯和python的关系
    kongkongyzt
        16
    kongkongyzt  
       2015-05-06 15:36:35 +08:00   2
    如果你不想把你的生命浪费在处理编码上,请火速使用3
    neoblackcap
        17
    neoblackcap  
       2015-05-06 15:38:23 +08:00   2
    @dtdnqsb 这不是向上兼容,理论是要完美兼容你必须from __future__ import print_function.

    但是为什么可以呢?原因是()是一个优先运算括号里面的内容,然后再print而已,相当于
    ```
    a = 'b'
    print a

    print('b')

    两者是等价的
    ```
    Tiande
        18
    Tiande  
    OP
    PRO
       2015-05-06 15:42:05 +08:00
    @neoblackcap ( ω )y 了解了
    sneezry
        19
    sneezry  
       2015-05-06 15:42:46 +08:00 via iPhone   1
    Python2和Python3不是两种语言吗
    yopming
        20
    yopming  
       2015-05-06 15:48:06 +08:00   3
    『如果你不想把你的生命浪费在处理编码上,请火速使用3』+1
    Septembers
        21
    Septembers  
       2015-05-06 15:53:42 +08:00 via Android   1
    @yopming 深有体会
    zeroten
        22
    zeroten  
       2015-05-06 15:56:34 +08:00   1
    大量的生命已经浪费在编码上
    Delbert
        23
    Delbert  
       2015-05-06 15:57:05 +08:00   1
    @dtdnqsb 2.7是过渡版本,兼容2和3,所以我选择()
    Tiande
        24
    Tiande  
    OP
    PRO
       2015-05-06 15:59:03 +08:00
    @Delbert 了解!
    lingo233
        25
    lingo233  
       2015-05-06 15:59:11 +08:00   1
    用2的话我一般会import __future__反正我自己搞的东西要不是限定我才懒得用
    wind3110991
        26
    wind3110991  
       2015-05-06 16:03:43 +08:00   1
    2.7欢迎你啊!
    vuser
        27
    vuser  
       2015-05-06 16:05:43 +08:00   1
    @Delbert 2.7正解
    Tiande
        28
    Tiande  
    OP
    PRO
       2015-05-06 16:06:37 +08:00
    @wind3110991 那我能有女朋友了吗!
    wind3110991
        29
    wind3110991  
       2015-05-06 16:08:39 +08:00   1
    @dtdnqsb 不行 + 。+ 因为我已经有了
    PS:话说国内大公司好多都在用python做运维。。。反正网易和腾讯是这么干的。。
    zeroten
        30
    zeroten  
       2015-05-06 16:09:14 +08:00   1
    但是大量的公司用的2.x,不知道猴年马月会迁到3.x

    要么很多第三方库放弃支持2,要么3有什么杀手级应用,要么2出现严重的官方不修复,也没第三方来修复的严重bug
    Tiande
        31
    Tiande  
    OP
    PRO
       2015-05-06 16:12:13 +08:00
    @wind3110991 python 和 shell script 互补吧,python 对 C 也是很友好的吧。
    @zeroten 额,这个天平低向哪个版本都不行。
    Tiande
        32
    Tiande  
    OP
    PRO
       2015-05-06 16:13:11 +08:00
    @wind3110991 你的女朋友也可以做我的女朋友啊。
    bingu
        33
    bingu  
       2015-05-06 16:36:22 +08:00   2
    @dtdnqsb 两个人用很容易漏气的!
    Tiande
        34
    Tiande  
    OP
    PRO
       2015-05-06 16:38:07 +08:00
    @bingu ((( ;Д))) 紧插叔叔,就是这个人,把@wind3110991 的女盆友弄漏气了!
    neutrino
        35
    neutrino  
       2015-05-06 16:41:46 +08:00   1
    难道不是用echo "2"; 吗。。
    wind3110991
        36
    wind3110991  
       2015-05-06 16:43:55 +08:00   1
    @dtdnqsb 胶水语言伤不起,不过做机器语言科学运算那些还是挺不错,还有快速开发网站后台之类
    = =
    bingu
        37
    bingu  
       2015-05-06 16:45:26 +08:00   1
    @dtdnqsb 你这是报假案啊,会被抓起来的
    Tiande
        38
    Tiande  
    OP
    PRO
       2015-05-06 16:52:48 +08:00
    @neutrino 你是跑到BASH里了吗((( ;Д)))
    Tiande
        39
    Tiande  
    OP
    PRO
       2015-05-06 16:53:50 +08:00
    @bingu ( з) 并不是报假案,因为根本没有 紧插叔叔 这个人。
    bingu
        40
    bingu  
       2015-05-06 17:03:40 +08:00 via iPad   1
    @dtdnqsb 世间无奇不有,等下紧插叔叔真就出来。。。嗯,我还是先走开了,你小心菊花。
    neutrino
        41
    neutrino  
       2015-05-06 17:05:46 +08:00   1
    @dtdnqsb 啊漏写了!<?php echo "2"; ?> //闪了
    sorcerer
        42
    sorcerer  
       2015-05-06 17:07:19 +08:00 via iPhone   1
    @bingu lol已经不能表达我的笑意了
    chengzhoukun
        43
    chengzhoukun  
       2015-05-06 17:15:35 +08:00 via Android   1
    坚定3,兼顾2
    Kilerd
        44
    Kilerd  
       2015-05-06 20:09:17 +08:00   1
    Python 2.7
    不过写多了c,php

    在写if的时候,就自觉地写成了 if(XXX):
    print 时 就 自觉地写成了 print()
    fburst
        45
    fburst  
       2015-05-06 20:29:15 +08:00   1
    仁者见仁智者见智。python最后会发展成怎么样谁都不知道。
    laotaitai
        46
    laotaitai  
       2015-05-06 21:01:25 +08:00   1
    既然没有从业意向, 那就相当于想用啥就用啥了. 根本不用管市场如何.
    cvmax
        47
    cvmax  
       2015-05-06 21:02:53 +08:00   1
    为什么要黑世界最好的语言 PHP (逃
    timothyye
        48
    timothyye  
       2015-05-06 21:04:34 +08:00 via Android   1
    骚年,来学Go吧
    jianghu52
        49
    jianghu52  
       2015-05-06 22:18:00 +08:00   1
    说下个人感受。我原来也是想着先学3.然后等着2慢慢死掉。
    可是。我玩新浪的sae,就是2的。我查好多爬虫,都是引用的urllib2,最麻烦的是,我们的生产环境的centos的。里面就是2.x,你要升到3,一半儿以上的py脚本都不能用了。
    所以慢慢的就开始转回2了。
    tangooricha
        50
    tangooricha  
       2015-05-06 23:02:55 +08:00   1
    @dtdnqsb 如果单从print语句的角度来说,我推荐用print()。理由很简单,就是这样写在2和3上面都可以运行。
    Daniel65536
        51
    Daniel65536  
       2015-05-06 23:47:13 +08:00   2
    @jianghu52 爬虫用urllib2简直是浪费生命。
    requests大法好。
    kiritoalex
        52
    kiritoalex  
       2015-05-07 00:04:08 +08:00 via Android   1
    没有Qpython2.7简直不能愉快的玩耍
    msg7086
        53
    msg7086  
       2015-05-07 08:27:03 +08:00   1
    默默围观你们的讨论,我用 Ruby。
    abscon
        54
    abscon  
       2015-05-07 09:04:11 +08:00   1
    蟒蛇你这个骗纸,说好的“做一件事情只有一种方法”呢
    dslwind
        55
    dslwind  
       2015-05-07 11:27:05 +08:00 via Android   1
    @dtdnqsb 我就是紧插叔叔,嘿嘿嘿嘿嘿
    qToTp
        56
    qToTp  
       2015-05-07 11:58:19 +08:00   1
    Life is short, choose a version.
    zztt168
        57
    zztt168  
       2015-05-07 12:04:10 +08:00 via iPhone   1
    @Daniel65536 感谢推荐,刚刚开始做爬虫,回去学习下。request有啥优势?
    Daniel65536
        58
    Daniel65536  
       2015-05-07 12:10:18 +08:00
    @zztt168 requests是给人类用的,urllib2不是给人类用的。
    import urllib2

    gh_url = 'https://api.github.com'

    req = urllib2.Request(gh_url)

    password_manager = urllib2.HTTPPasswordMgrWithDefaultRealm()
    password_manager.add_password(None, gh_url, 'user', 'pass')

    auth_manager = urllib2.HTTPBasicAuthHandler(password_manager)
    opener = urllib2.build_opener(auth_manager)

    urllib2.install_opener(opener)

    handler = urllib2.urlopen(req)

    print handler.getcode()
    print handler.headers.getheader('content-type')


    对比


    import requests

    r = requests.get('https://api.github.com', auth=('user', 'pass'))

    print r.status_code
    print r.headers['content-type']
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2481 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 33ms UTC 15:29 PVG 23:29 LAX 08:29 JFK 11:29
    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