在python中设置print命令别名?

Dan*_*lTA 4 python aliases

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

alias e=echoset 
alias e="echo blah"
Run Code Online (Sandbox Code Playgroud)

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

>>> p = print
  File "<stdin>", line 1
    p = print
            ^
SyntaxError: invalid syntax
Run Code Online (Sandbox Code Playgroud)

我可以做这个:

p = "print"
exec(p)
Run Code Online (Sandbox Code Playgroud)

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

更新: @atzz你猜错了,它不是特定的打印.我想要开始工作的是:

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

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

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

atz*_*tzz 7

你的问题是否具体print

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

在Python 3.0中,没有关键字print; print而是一个功能(文档).

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

from __future__ import print_function
a = print
a("Hello!")
Run Code Online (Sandbox Code Playgroud)


jam*_*rty 6

它只是你会遇到这个问题的print语句,因为它是一个声明(比如while/if/etc.)而不是一个函数.

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


jam*_*rty 3

要回答您的新问题,如果您想执行此操作并稍后执行蜂鸣声:

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

将其更改为:

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

或者只是一个函数:-)

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

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