![](/img/trans.png)
[英]Is it possible to write multiple statements in one line that includes a for loop and if-else statements
[英]In python def statement, Is it possible to write the for loop and return statements in one line?
# code 1
def x():
for i in range(3):
print(i)
return None
# code 2
def x():
for i in range(3): print(i); return None
# code 3
def x():
for i in range(3):
print(i)
return None
# code 4
def x():
for i in range(3): print(i)
return None
你好。 我正在测试 Python 中的一行语句。 PEP 8 不建议这样做,但我想知道这是否可能。
我最初尝试将代码 1 像代码 2 一样写在一行中。但是,我发现 function 在第一个循环中结束,并意识到代码 2 与代码 3 相同。我已经到达了代码 4。
但是,我想知道是否可以将代码 4 缩写并写在一行中。
谢谢你的回答。 这是正确的。 return None
实际上是没有意义的,因为它可以被省略。 我需要更仔细地写问题。 但是,如果您想返回None
以外的处理值,如下所示怎么办? 我将代码 1 缩写为代码 2。
# code 1
def x():
processed_values = []
for i in range(3):
processed_values.append(i*2)
return processed_values
print(x())
# code 2
def y():
processed_values = []
for i in range(3): processed_values.append(i*2)
return processed_values
print(y())
首先,您不需要专门调用return None
因为这是自动完成的。 这默认为我们节省了一行。 其次,您可以创建 lambda 函数,它们是单行函数。
x = lambda num: [print(i) for i in range(num)]
# then calling your new function as normal
x(3)
这在功能上等同于:
def x(num):
[print(i) for i in range(num)]
您可以使用列表推导来做到这一点。
def code5():
[print(i) for i in range(3)]; return None
这里的 return 语句没有做太多的事情。 所以你完全可以避免它。
但最重要的是,不要在任何生产应用程序中编写这样的代码。 这种编码只会使事情变得复杂和难以理解。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.