在python中为打印设置命令别名?

Posted

技术标签:

【中文标题】在python中为打印设置命令别名?【英文标题】:Set command alias for print in python? 【发布时间】:2012-08-24 20:28:50 【问题描述】:

在 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您猜对了,它不是特定于打印的。我要开始工作的是:

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

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

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

【问题讨论】:

【参考方案1】:

您的问题是针对print 的吗?

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

在 Python 3.0 中,没有关键字print;有一个 print 函数代替 (documentation)。

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

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

【讨论】:

@gnibbler - 感谢您的更正。我“知道”它出现在 2.7 中,所以我什至错过了我链接到的文档中的相反信息:)【参考方案2】:

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

如果您想“重命名”(例如)len,它会工作得很好。

【讨论】:

【参考方案3】:

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

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 的返回值。

【讨论】:

谢谢,这就是我要找的。​​span> 【参考方案4】:

这种行为正是 Python 3 出现的原因。在 PY3 中,print 是一个函数,而不是关键字,是的,你可以在那里实现。

【讨论】:

我认为这不是 Py3 发生的原因,但其余的都是正确的 :-) 确实 :-) 这也是原因之一。

以上是关于在python中为打印设置命令别名?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Vim 中为命令创建别名?

Linux基础命令

定义命令别名

你可以在 package.json 中为 npm 脚本设置别名吗?

Linux之别名设置

linux每天一小步---alias命令详解