例如,我有一个功能,比如说alert()
。如果有人拨打alert_user()
,我希望该功能也可以工作,两者具有相同的功能。我想象它是这样的:如何让一个函数被两个名字调用?
@synonym alert_user
def alert():
print('hi!')
而且它的工作是这样的:
>>> alert()
hi!
>>> alert_user()
hi!
是否有这样的事情吗?
例如,我有一个功能,比如说alert()
。如果有人拨打alert_user()
,我希望该功能也可以工作,两者具有相同的功能。我想象它是这样的:如何让一个函数被两个名字调用?
@synonym alert_user
def alert():
print('hi!')
而且它的工作是这样的:
>>> alert()
hi!
>>> alert_user()
hi!
是否有这样的事情吗?
装饰器(如你的例子)不能访问封闭的命名空间,所以它不能为它装饰的东西创建一个新的名字。然而,可以很容易地添加一个别名为你的函数:
def alert():
print('hi!')
alert_user = alert
'raw_input = input'将在Python 3中使'raw_input()'可用。 –
如果出于某种原因需要这样做,这将是执行此操作的最佳方式 – jamylak
这会给你想要的东西
def alert():
print('hi!')
alert_user = alert
>>> alert()
hi!
>>> alert_user()
hi!
功能是在Python的第一级公民。 只需添加alert_user = alert
即可。
正如上面的同伴帮助者所述,您可以将alert定义为一个函数,然后给出一个变量表示的提示。
alert_user = alert
感谢 本
我认为这违背了Python的哲学“应该有one--和最好只有一个--obvious办法做到这一点。” –
@WaleedKhan:确实如此,但这样做可能有合理的理由(值得注意的是,如果您对API进行了更改,但需要保留旧名称以便在过渡期间向后兼容,然后才能删除旧名称)。 – BrenBarn
这样定义'alert_user':'def alert_user():alert()'。 –