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 ·
    Tiande · 2015-05-06 14:58:09 +08:00 · 5413 次点击
    这是一个创建于 3494 天前的主题,其中的信息可能已经有所发展或是发生改变。

    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
       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
       2015-05-06 15:10:30 +08:00
    @vivianalive @cfan8 我想也是,就用3的解释器来学2好了 ;)
    自成一派-。-
    Tiande
        8
    Tiande  
    OP
       2015-05-06 15:11:01 +08:00
    @ivenvd 真的笑,笑出声
    Tiande
        9
    Tiande  
    OP
       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
       2015-05-06 15:17:12 +08:00
    @koykoi import this
    _(:3」∠)_ 好逗
    Tiande
        14
    Tiande  
    OP
       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
       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
       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
       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
       2015-05-06 16:12:13 +08:00
    @wind3110991 python 和 shell script 互补吧,python 对 C 也是很友好的吧。
    @zeroten 额,这个天平低向哪个版本都不行。
    Tiande
        32
    Tiande  
    OP
       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
       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
       2015-05-06 16:52:48 +08:00
    @neutrino 你是跑到BASH里了吗((( ;゚Д゚)))
    Tiande
        39
    Tiande  
    OP
       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   ·   实用小工具   ·   5161 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 31ms · UTC 09:42 · PVG 17:42 · LAX 01:42 · JFK 04:42
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.