在一个lin中分配、比较和使用值

2024-04-19 14:38:10 发布

您现在位置:Python中文网/ 问答频道 /正文

当前代码:

error = dict.get("error", None)
if error:
    print(error)

有没有办法把它放在一行上,例如:

print(error) if (error = dict.get("error", None))

在C中,您可以赋值,然后比较,然后打印在一行上:

if (a = 5) printf("%d",a);

Tags: 代码nonegetiferrordictprint赋值
3条回答

在答案here的基础上,可以使用分号填充多个表达式。像这样的

error = my_dict.get("error", None); print(error) if error is not None else None

应该可以,但我正在打电话,不能测试。你知道吗

在Python3.8中,您将能够编写

if error := dict.get("error", None):
    print(error)

Python没有Perl风格的语句修饰符,但是由于print是一个函数,因此可以编写如下表达式语句

print(error) if (error := dict.get("error", None)) else None

虽然我不推荐。(实际上,我不完全确定PEP-572定义的赋值表达式是否与条件表达式相互作用。我还没有使用任何引用实现来测试它,但我相信error将在整个表达式的范围内。)


不过,像这样一个简单的if语句,可以写在一行上(不过,我还是不建议这样做;PEP-8显然不赞成这样做)

if error := dict.get('error', None): print(error)

()

您可以将^{}^{}与三元告诉end=""end="\n"一起使用来避免/使用它后面的换行符,而不是使用三元print("" if not d.get("error") else d["error"])

d = {"error": "plenty"}  

print( d.get("error",""), end = "\n" if d.get("error","") else "")

如果密钥不存在,则不打印任何内容(甚至不打印由于end=""而产生的换行符)。你知道吗

Why dict.get(key) instead of dict[key]?

相关问题 更多 >