在python中设置print命令别名?

时间:2012-08-30 06:47:53

标签: python aliases

在bash中,您可以为命令指定一个别名:

alias e=echoset 
alias e="echo blah"

我想知道如何在Python中做同样的事情。我知道你可以给类别名,但是当我尝试给命令(例如print语句)一个别名时,我收到一个错误:

>>> p = print
  File "<stdin>", line 1
    p = print
            ^
SyntaxError: invalid syntax

我可以这样做:

p = "print"
exec(p)

但这与别名并不是一回事,我不能给命令提供任何输入。

更新 @atzz你猜错了,它并不是专门打印的。我想要上班的是:

这应该设置命令,但是当我输入它时它只是发出嘟嘟声:
    >>> beep = Popen(['play', '-q', '/home/Username/Mich/Sound Effects/Beeps/beep-17-short.ogg'])

然后当我在提示符中输入嘟嘟声时,它显示:     >>> beep <subprocess.Popen object at 0x9967b8c>

但除此之外,我有这个问题,至少现在我知道你不能给出语句别名。

4 个答案:

答案 0 :(得分:7)

您的问题是否针对print

在3.0之前的Python中,print是语言语法中的关键字。由于它不是一流的语言对象,因此无法将其分配给变量。

在Python 3.0中,没有关键字print;而是print函数(documentation)。

使用适当的future语句,您可以在Python 2.6 +中使用print函数:

from __future__ import print_function
a = print
a("Hello!")

答案 1 :(得分:6)

只有print语句才会出现这个问题,因为它是一个声明(比如while / if / etc。)而不是函数。

如果你想'重命名'(例如)len,那就可以了。

答案 2 :(得分:2)

要回答您的新问题,如果您想这样做并稍后发出哔声:

beep = Popen(['play', '-q', '/home/Username/Mich/Sound Effects/Beeps/beep-17-short.ogg'])

将其更改为:

beep = lambda: Popen(['play', '-q', '/home/Username/Mich/Sound Effects/Beeps/beep-17-short.ogg'])

或只是一个功能: - )

def beep(): Popen(['play', '-q', '/home/Username/Mich/Sound Effects/Beeps/beep-17-short.ogg'])

否则'beep'将保持Popen的返回值。

答案 3 :(得分:1)

这种行为正是Python 3发生的原因。在PY3 print是一个函数,而不是关键字,是的,你可以在那里完成。