2024-05-16 14:00:01 发布
网友
从一条Python变成了数学家。像Python中的Mathematica一样,是否存在没有括号的前缀、后缀和中缀运算符?在
例如在Mathematica
Print@@string string~Join~string data//Sum
我发现我经常使用print来测试函数,而且不得不用括号来包装整个东西似乎很麻烦,清理也很慢。有没有办法让Python3中的[i for i in data]//Print?在
[i for i in data]//Print
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)相同。在
10 + 2 * 3
10 + (2 * 3)
你甚至可以把它推广到任意的单参数函数
如果您习惯于Mathematica,我建议您在Python实验中使用Jupyter笔记本,因为您将熟悉cell的范例。在
Jupyter的Python内核IPython,确实有%魔力,在一定程度上扩展了原生Python语法。IPython包含一个%autocall选项来调用不带括号的函数。在某些情况下,这可能导致歧义,因此在默认情况下被禁用。在
%
您也可以用/for a similar effect开始一行(它只在IPython中有效,请参见,和{}中的auto call with auto quotes)。在
/
,
与ipythonrepl一样,Jupyter单元中最后一条语句的值将自动显示为输出,您不必对其调用print。对于某些数据类型,比如Pandas数据帧,最好不要这样做,也可以将其配置为显示来自同一单元格的多个语句的输出。在
print
您应该尝试在Jupyter中执行的第一个单元是
?
只是个问号。这将显示解释IPython特性的在线帮助。在
Python没有任何后缀运算符,但是如果您非常努力,可以使用magic r-dunder methods和中缀运算符来模拟它们。在
例如, 在
不过,您可能仍然需要括号来获得优先权。在
Python在文档中确实有一个operator precedence table。因此,优先级较高的操作将首先应用,并且不需要显式括号,例如,
10 + 2 * 3
与Python中的10 + (2 * 3)
相同。在你甚至可以把它推广到任意的单参数函数
^{pr2}$如果您习惯于Mathematica,我建议您在Python实验中使用Jupyter笔记本,因为您将熟悉cell的范例。在
Jupyter的Python内核IPython,确实有
%
魔力,在一定程度上扩展了原生Python语法。IPython包含一个%autocall选项来调用不带括号的函数。在某些情况下,这可能导致歧义,因此在默认情况下被禁用。在您也可以用}中的auto call with auto quotes)。在
/
for a similar effect开始一行(它只在IPython中有效,请参见,
和{与ipythonrepl一样,Jupyter单元中最后一条语句的值将自动显示为输出,您不必对其调用
print
。对于某些数据类型,比如Pandas数据帧,最好不要这样做,也可以将其配置为显示来自同一单元格的多个语句的输出。在您应该尝试在Jupyter中执行的第一个单元是
只是个问号。这将显示解释IPython特性的在线帮助。在
相关问题 更多 >
编程相关推荐