在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您猜对了,它不是特定于打印的。我要开始工作的是:
这应该是设置命令,但是当我输入这个命令时它只会发出哔哔声:>>> 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中为打印设置命令别名?的主要内容,如果未能解决你的问题,请参考以下文章