Python前缀后缀中缀,无括号

2024-05-16 14:00:01 发布

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

从一条Python变成了数学家。像Python中的Mathematica一样,是否存在没有括号的前缀、后缀和中缀运算符?在

例如在Mathematica

Print@@string
string~Join~string
data//Sum

我发现我经常使用print来测试函数,而且不得不用括号来包装整个东西似乎很麻烦,清理也很慢。有没有办法让Python3中的[i for i in data]//Print?在


Tags: datastring运算符后缀测试函数python3括号sum
1条回答
网友
1楼 · 发布于 2024-05-16 14:00:01

Python没有任何后缀运算符,但是如果您非常努力,可以使用magic r-dunder methods和中缀运算符来模拟它们。在

例如, 在

class PrintType:
    def __rfloordiv__(self, other):
        print(other)

Print = PrintType()

[1, 2, 3]//Print

不过,您可能仍然需要括号来获得优先权。在

Python在文档中确实有一个operator precedence table。因此,优先级较高的操作将首先应用,并且不需要显式括号,例如,10 + 2 * 3与Python中的10 + (2 * 3)相同。在

你甚至可以把它推广到任意的单参数函数

^{pr2}$

如果您习惯于Mathematica,我建议您在Python实验中使用Jupyter笔记本,因为您将熟悉cell的范例。在

Jupyter的Python内核IPython,确实有%魔力,在一定程度上扩展了原生Python语法。IPython包含一个%autocall选项来调用不带括号的函数。在某些情况下,这可能导致歧义,因此在默认情况下被禁用。在

您也可以用/for a similar effect开始一行(它只在IPython中有效,请参见,和{}中的auto call with auto quotes)。在

与ipythonrepl一样,Jupyter单元中最后一条语句的值将自动显示为输出,您不必对其调用print。对于某些数据类型,比如Pandas数据帧,最好不要这样做,也可以将其配置为显示来自同一单元格的多个语句的输出。在

您应该尝试在Jupyter中执行的第一个单元是

?

只是个问号。这将显示解释IPython特性的在线帮助。在

相关问题 更多 >