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
cbsw
V2EX  ›  Python

才加插值语法糖, Python 现在又要加问号语法糖了

  •  
  •   cbsw ·
    dengshuan · 2015-09-20 13:54:30 +08:00 · 5950 次点击
    这是一个创建于 3385 天前的主题,其中的信息可能已经有所发展或是发生改变。

    PEP0505

    >>> title = 'My Title'
    >>> title ?? 'Default Title'
    'My Title'
    >>> title = None
    >>> title ?? 'Default Title'
    'Default Title'
    

    另外这是之前关于插值糖的讨论 http://v2ex.com/t/211863

    33 条回复    2015-09-21 16:05:54 +08:00
    zhicheng
        1
    zhicheng  
       2015-09-20 14:01:58 +08:00
    已经不看好 Python 3 的发展了。
    Septembers
        2
    Septembers  
       2015-09-20 14:02:08 +08:00 via Android
    其实"??"换成"or"也是可以的
    dingyaguang117
        3
    dingyaguang117  
       2015-09-20 14:07:52 +08:00 via iPhone
    一直用 or
    xierch
        4
    xierch  
       2015-09-20 14:12:33 +08:00
    和 or 不一样, or 只要是 false 的行,?? 要求 None
    aec4d
        5
    aec4d  
       2015-09-20 14:18:58 +08:00
    看原文和 or 不一样 只针对 None 值 黑魔法的是可以针对成员访问和索引访问加?不存在就返回 None
    黑魔法越来越多
    我等着用 python4
    Hyperion
        6
    Hyperion  
       2015-09-20 14:22:11 +08:00 via Android
    py3lint 指日可待
    introom
        7
    introom  
       2015-09-20 14:31:38 +08:00
    这种??太丑,必须被 reject
    otakustay
        8
    otakustay  
       2015-09-20 14:55:24 +08:00
    这不是 C#的某语法吗, C#程序员表示用得很爽啊
    codeforlife
        9
    codeforlife  
       2015-09-20 15:06:12 +08:00
    没觉得有什么问题啊
    phx13ye
        10
    phx13ye  
       2015-09-20 15:14:03 +08:00
    防火防盗防 NONE ,弱弱的问一下: None 这个东西既然大家都在防一开始为什么要造出来啊
    fengdra
        11
    fengdra  
       2015-09-20 15:33:52 +08:00
    not defined 行不行
    Sin
        12
    Sin  
       2015-09-20 16:21:33 +08:00
    我大 C#威武
    ethego
        13
    ethego  
       2015-09-20 16:28:38 +08:00
    @zhicheng py3 所有的特性都是在进步,解决了非常多 py2 的遗留问题,为什么不看好?
    firemiles
        14
    firemiles  
       2015-09-20 16:37:44 +08:00
    我还以为是要加 ruby 里最爽的的 has? replace! 这样的语法糖,这两个语法糖真的很方便, python ??的语法糖用一个函数代替好了,有必要用语法糖吗?@ethego
    fy
        15
    fy  
       2015-09-20 16:41:37 +08:00
    太丑,我觉得?=都比??好
    gaitana
        16
    gaitana  
       2015-09-20 16:42:36 +08:00
    @fy 很多乱码就是 ??
    liuxu
        17
    liuxu  
       2015-09-20 16:43:33 +08:00
    看着逻辑像 linux 脚本。。
    ethego
        18
    ethego  
       2015-09-20 16:46:16 +08:00
    @firemiles 语法糖这种东西本来就是不想用就不用好了,非逼着用语法糖啊? py3 里解决了一些细小的遗留问题,比方说 None 改成关键字, print 改成函数,默认 utf8 编码,这些边边角角的细节修改都是会经常用到的好特性。再就是 map/reduce/filter 这些函数都只接受生成器返回生成器了,非常棒地解决了递归的问题。这些特性让我不能不爱上 py3
    akagi
        19
    akagi  
       2015-09-20 17:07:11 +08:00
    纠结语法糖不如用 Perl, 想怎么写,就能怎么写,别人还不敢说你的不是 :)
    est
        20
    est  
       2015-09-20 17:16:48 +08:00
    为毛不学习 ruby 的 ||= 。还可以一句话写 cache 。
    firemiles
        21
    firemiles  
       2015-09-20 18:19:41 +08:00
    @ethego 首先我也很喜欢 python3 ,因为不用纠结编码问题。但是这个语法糖加多了虽然自己不用,可是别人会用啊,看代码会比较麻烦。还有 python3 把 print 变成函数就是减轻语法负担,统一代码书写形式,但却又加上这种并不重要的语法糖,增加语法复杂度,把这个做成函数放库里不好吗。还有 ruby 的 replace! 之类的 api 真的很好,什么时候 python 能加上啊。
    aisk
        22
    aisk  
       2015-09-20 18:23:13 +08:00
    @introom 觉得太丑一般都是因为自己那点狭隘的审美观。
    zonghua
        23
    zonghua  
       2015-09-20 18:26:09 +08:00
    语法糖堪比 matlab
    wizardforcel
        24
    wizardforcel  
       2015-09-20 19:05:31 +08:00
    明显是跟 c#学的。

    话说怎么不把 ruby 的<=>也学来
    otakustay
        25
    otakustay  
       2015-09-20 19:48:36 +08:00
    C#好像快要出一个叫“不能为 null 的类型”的类型了,其它没这特性的语言也可以参考
    introom
        26
    introom  
       2015-09-20 20:39:10 +08:00
    @aisk 这都不丑,这是有多包容和博爱,,,
    linchunai1212
        27
    linchunai1212  
       2015-09-20 22:54:00 +08:00
    3.5 还加入 @ 感觉丑
    latyas
        28
    latyas  
       2015-09-20 22:59:59 +08:00
    不就是 or 么
    poke707
        29
    poke707  
       2015-09-20 23:45:17 +08:00 via Android
    这个语法糖是不错,但"??"这个写法真的觉得风格不一致
    minsheng
        30
    minsheng  
       2015-09-21 06:53:54 +08:00
    这么麻烦真是无聊,学习 Swift 来个 sum type 什么都好了。

    (我知道 Swift 抄 Rust 抄 Haskell 抄 ML )
    ophunter
        31
    ophunter  
       2015-09-21 10:17:20 +08:00
    C# 威武,从小弟变成了领导者
    julyclyde
        32
    julyclyde  
       2015-09-21 11:19:41 +08:00
    @phx13ye 值 None 总比变量名字不存在要强点儿
    glasslion
        33
    glasslion  
       2015-09-21 16:05:54 +08:00
    ??这个操作符有点鸡肋, 但这个 PEP 还打算引入涉及成员访问的操作符, Coffee script 里用起来会很爽啊

    Null-Aware Member Access Operator

    >>> title?.upper ()
    None

    Null-Aware Index Access Operator
    >>> person?['name']
    None
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1121 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 18:50 · PVG 02:50 · LAX 10:50 · JFK 13:50
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.