英文:
Alternative to using "pass" in a single-line "if/else" statement?
问题
be_nice = True
print("Hello")
print("Good to see you!") if be_nice else None
# Alternative 1:
print("Good to see you!") if be_nice else 1
# Alternative 2:
if be_nice: print("Good to see you!")
英文:
I would like to conditionally print
a statement as such:
be_nice = True
print("Hello")
print("Good to see you!") if be_nice else pass
However, it seems that using pass
here isn't allowed.
I found two ways to work around this, I can either do:
print("Good to see you!") if be_nice else 1
which seems to work since the 1
here simply does nothing, but is ugly. Or I can:
if be_nice: print("Good to see you!")
but this defeats the purpose of having the print
's align with each other.
Is there a way to use a single line solution which has the print
called at the start of the line?
答案1
得分: 0
如果你真的想这样做,我建议编写自己的打印函数。以下是一些"不太糟糕"的选项:
import functools as ft
be_nice = True
def print_if(cond, *args, **kwargs):
if cond:
print(*args, **kwargs)
print_if(be_nice, "Hello World")
print_if_be_nice = ft.partial(print_if, be_nice)
print_if_be_nice("Hello World")
def cond_print(*args, cond=False, **kwargs):
if cond:
print(*args, **kwargs)
cond_print("Hello World", cond=be_nice)
英文:
If you really want to do this, I suggest writing your own print function. Here are some "not terrible" options:
import functools as ft
be_nice = True
def print_if(cond, *args, **kwargs):
if cond:
print(*args, **kwargs)
print_if(be_nice, "Hello World")
print_if_be_nice = ft.partial(print_if, be_nice)
print_if_be_nice("Hello World")
def cond_print(*args, cond=False, **kwargs):
if cond:
print(*args, **kwargs)
cond_print("Hello World", cond=be_nice)
答案2
得分: 0
根据我在Python文档中查找到的信息,看起来你使用的是唯一的方法。
文档说:
> 表达式 x if C else y
首先评估条件 C,而不是 x。如果 C 为真,则评估 x 并返回其值;否则,评估 y 并返回其值。
你不能将 pass
用作 y
的值,因为:
> pass
是一种空操作 - 当执行时,什么都不会发生。
> <br>Python pass 文档
pass
是一个运算符,因此如果 C
等于 false
,则不会返回任何值来评估 x
。
如果你愿意,可以使用省略号对象 (...
) 作为 y
的值:
be_nice = True
print("Hello") print("Good to see you!") if be_nice else ...
事实上,省略号是一个对象,因此具有值。
这里有关于省略号对象的更多信息。
希望对你有帮助。
英文:
It look like, according what I was able to find in to the python documentation, that you use the only way to do it.
The documentation say :
> The expression x if C else y
first evaluates the condition, C rather
> than x. If C is true, x is evaluated and its value is returned;
> otherwise, y is evaluated and its value is returned.
You can't use pass
as y
value because :
> pass is a null operation — when it is executed, nothing happens.
> <br>Python pass documentation
pass
is an operator so no value is return to evaluate x
if C
is equals to false
.
If you want you can possibly use the Ellipsis object (...
) as y
value :
be_nice = True
print("Hello") print("Good to see you!") if be_nice else ...
Effectively the Ellipsis is an object so a value.
Here more information about the Ellipsis object.
Hope it helps you.
答案3
得分: 0
print("如果友善就打印“好见到你!”\n" if be_nice else "", end="")
英文:
You could also use:
print("Good to see you!\n" if be_nice else "", end="")
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论