在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>
但除此之外,我有这个问题,至少现在我知道你不能给出语句别名。
答案 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
是一个函数,而不是关键字,是的,你可以在那里完成。