据我所知,python是专门设计用来强制人们使用缩进但是有可能违反这个规则。举个例子:
y=[1,2,3]
print('ListY:')
for x in y:
print(x)
现在,我可以压缩最后两行:
for x in y:print(x)
但我不能这样做:
print('ListY');for x in y:print(x)
但是你有办法吗?
答案 0 :(得分:3)
首先,我应该说我同意这些技巧可能会有所帮助。但不是经常。一个很好的例子是doctests中的代码。它通常很清晰,即使在压缩时也是可读的,并且使其紧凑通常比使其“尽可能可读”的问题少。但是,对于常规代码连接线通常不是一个好习惯。当您无法在if
或for
语句中创建断点时,它通常比额外的行更大的问题。如果你不练习这些技巧,覆盖工具也会提供更多信息。
然而,回答你的问题,似乎没有办法做你想要的。使用;
有许多限制。 Compound statements不能与;
一起使用。通常这些限制是合理的,但有时我也很遗憾他们是如此严格。
UPD:但是如果你非常专注于让它成为一个单行,那就有很多技巧。例如,生成器和列表推导(而不是for
),reduce()
等等,以及Python 3甚至print()
都可以在其中使用。
答案 1 :(得分:2)
我没有参加为什么你会想要在Python上这样做,但不,你不能这样做。
Python中有两种类型的语句:simple statements跨越一行,compund statements跨越多行。你可以将几个简单的语句放在一行中,用分号分隔它们,但你不能在一个简单的语句之后放一个复合语句。
即(直接来自Python Language Reference):
statement ::= stmt_list NEWLINE | compound_stmt
stmt_list ::= simple_stmt (";" simple_stmt)* [";"]
答案 2 :(得分:1)
def f(g,xs):
for x in xs:
g(x)
print('ListY');f(print,[1,2,3])
正如其他答案所说......
你可以(如果你真的想要的话)做这样的事情,尽管你不会。
通常采用“功能”方法可以缩短代码(或至少允许更清晰地重复使用代码)在functools library
中查看pythons'partial'函数和其他函数