如何将多个语句放在一行中?

我不确定要确切地考虑这个问题的标题,如果有点不确定,编码高尔夫似乎是合适的。


我对python有一点了解,但似乎很难“阅读”。我的理解方式可能与以下代码相同:


for i in range(10): if i == 9: print('i equals 9')

这段代码比当前的理解方法更容易阅读,但是我注意到您不能在一行中包含两个“:”……这也给我带来了……


我的问题:

有什么办法可以使下面的示例进入一行。


try:

    if sam[0] != 'harry':

        print('hello',  sam)

except:

    pass

像这样的东西会很棒:


try: if sam[0] != 'harry': print('hellp',  sam)

except:pass

但是我又遇到了冲突的':',我也很想知道是否有一种方法可以不加例外地进行尝试(或类似的尝试),我似乎完全没有意义,我只需要在其中放入else:pass即可。它是一条浪费的线路。


谢谢您的输入...这里有一个笑脸:D


手掌心
浏览 715回答 3
3回答

蝴蝶刀刀

不幸的是,Python无法实现您想要的(这使得Python对命令行一线程序几乎无效)。甚至显式使用括号也无法避免语法异常。您可以摆脱一系列用分号分隔的简单语句:for i in range(10): print "foo"; print "bar"但是,一旦添加了引入缩进的块的构造(如if),就需要换行。也,for i in range(10): print "i equals 9" if i==9 else None是合法的,可能与您想要的近似。至于try ... except事情:没有,那将完全没有用except。try说“我想运行此代码,但可能会引发异常”。如果您不在乎该异常,请不要使用try。但是,一旦输入,您就说“我想处理潜在的异常”。该pass那么说,你要没有特别处理。但这意味着您的代码将继续运行,否则就不会继续运行。

慕盖茨4494581

您可以使用内置的exec语句,例如:exec("try: \n \t if sam[0] != 'harry': \n \t\t print('hello',  sam) \nexcept: pass")哪里\n是换行符,\t用作缩进(选项卡)。另外,您应该计算使用的空间,以便缩进完全匹配。但是,正如所有其他答案已经说过的那样,这仅在您确实需要将其放在一行上时才使用。exec 这是一个非常危险的声明(尤其是在构建Web应用程序时),因为它允许执行任意Python代码。

收到一只叮咚

我建议不要这样做...您所描述的不是理解力。我强烈建议使用PEP 8 Python代码样式指南在复合语句上这样说:通常不建议使用复合语句(同一行上的多个语句)。是:      if foo == 'blah':          do_blah_thing()      do_one()      do_two()      do_three()而不是:      if foo == 'blah': do_blah_thing()      do_one(); do_two(); do_three()以下是进行区分的示例理解:>>> [i for i in xrange(10) if i == 9][9]
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python