推荐学习书目
› 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
laoyuan
V2EX  ›  Python

Python 里 try... except 要是能写成一行流就好了

  •  
  •   laoyuan ·
    laoyuan · Jul 1, 2015 · 7187 views
    This topic created in 4144 days ago, the information mentioned may be changed or developed.
    像这样,多安逸
    url_no_scheme = try url.split('://', 1)[1] except ''

    现在只能写成:
    url_no_scheme = url.split('://', 1)[1] if '://' in url else ''

    常用的还有re.match、re.search,不确定能不能匹配的话,一行流都得写两遍,或者赋值到变量再if 判断,麻烦。
    23 replies  •  2015-07-06 14:06:10 +08:00
    cc7756789
    cc7756789
    Jul 1, 2015
    1
    url_no_scheme = url.split('://', 1)[1] if url.split('://', 1)[1] else ''
    这样也行啊!
    czheo
    czheo
    Jul 1, 2015
    2
    知道ruby的rescue的好了吧
    laoyuan
    laoyuan
    OP
    Jul 1, 2015❤️1
    3
    @cc7756789 啊?会报错吧
    laoyuan
    laoyuan
    OP
    Jul 1, 2015
    4
    @czheo 所以我在学Ruby 哈哈,我感觉Ruby 兼有PHP 的动态灵活性和 Python 比较完全的面对对象
    jackyspy
    jackyspy
    Jul 2, 2015❤️1
    6
    这样异常真的好吗?
    (url.split('://', 1)+['',''])[1]
    (lambda x: x[1] if len(x)==3 else '')(url.split('://', 1))
    laoyuan
    laoyuan
    OP
    Jul 2, 2015
    7
    @saber000 不好意思我只学了个基础还看不懂,等我深入学学之后再研究研究吧
    laoyuan
    laoyuan
    OP
    Jul 2, 2015
    8
    @jackyspy 啊哈哈哈第一条太好了之前看过类似的例子,PHP处理$_GET,但在这里就怎么想都没想出来
    laoyuan
    laoyuan
    OP
    Jul 2, 2015
    9
    @jackyspy 如果我想要的是 url.split('://', 1)[0] 呢,好像没办法了吧,脑洞开启ing
    laoyuan
    laoyuan
    OP
    Jul 2, 2015
    10
    哈哈,我想出来了 ([''] + url.split('://', 1))[-2]
    laoyuan
    laoyuan
    OP
    Jul 2, 2015
    11
    @jackyspy 有什么办法能让re.match、re.search 写成比较美观的一行流呢?
    url_no_scheme = re.search(r'://(.+)', url).group(1) if re.search(r'://(.+)', url) else ''
    fburst
    fburst
    Jul 2, 2015
    12
    不喜欢一行的风格,难读。
    picasso250
    picasso250
    Jul 2, 2015
    13
    @laoyuan 比较好奇,PHP哪里面向对象不完全了。。。你举个例子?
    laoyuan
    laoyuan
    OP
    Jul 2, 2015
    14
    @picasso250 我就随口那么一说,你就随便那么一听好了~
    laoyuan
    laoyuan
    OP
    Jul 2, 2015
    15
    我感觉Ruby 兼有PHP 的动态灵活性和 PHP、Python 比较完全的面对对象
    CodeDrift
    CodeDrift
    Jul 2, 2015
    16
    我感觉这样写就失去python的特点了啊。。不太容易维护
    thinker3
    thinker3
    Jul 2, 2015
    17
    不易读
    laoyuan
    laoyuan
    OP
    Jul 2, 2015
    18
    @Anybfans 没关系啦,反正都是自己维护。。。
    laoyuan
    laoyuan
    OP
    Jul 2, 2015
    19
    @thinker3 今天还学了个一行流,感觉挺好
    a = [each_num for each_num in [1, 6, 3, 7] if each_num > 5]
    WKPlus
    WKPlus
    Jul 6, 2015
    20
    就你这个问题而言,url.split("://", 1)[-1] 就好了
    laoyuan
    laoyuan
    OP
    Jul 6, 2015
    21
    @WKPlus 绝对不行,至于为什么我明天再告诉你
    laoyuan
    laoyuan
    OP
    Jul 6, 2015
    22
    @WKPlus 不对,是我想错了。你说的是对了,我这就去改了
    kaneg
    kaneg
    Jul 6, 2015
    23
    关键不是能不能写在一行,而是你不应该用抛异常的方式来控制业务逻辑
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   1438 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 45ms · UTC 22:59 · PVG 06:59 · LAX 14:59 · JFK 17:59
    ♥ Do have faith in what you're doing.