2013-03-29 93 views
1

例如,我有一个功能,比如说alert()。如果有人拨打alert_user(),我希望该功能也可以工作,两者具有相同的功能。我想象它是这样的:如何让一个函数被两个名字调用?

@synonym alert_user 
def alert(): 
    print('hi!') 

而且它的工作是这样的:

>>> alert() 
hi! 
>>> alert_user() 
hi! 

是否有这样的事情吗?

+3

我认为这违背了Python的哲学“应该有one--和最好只有一个--obvious办法做到这一点。” –

+1

@WaleedKhan:确实如此,但这样做可能有合理的理由(值得注意的是,如果您对API进行了更改,但需要保留旧名称以便在过渡期间向后兼容,然后才能删除旧名称)。 – BrenBarn

+1

这样定义'alert_user':'def alert_user():alert()'。 –

回答

9

装饰器(如你的例子)不能访问封闭的命名空间,所以它不能为它装饰的东西创建一个新的名字。然而,可以很容易地添加一个别名为你的函数:

def alert(): 
    print('hi!') 
alert_user = alert 
+0

'raw_input = input'将在Python 3中使'raw_input()'可用。 –

+0

如果出于某种原因需要这样做,这将是执行此操作的最佳方式 – jamylak

3

这会给你想要的东西

def alert(): 
    print('hi!') 

alert_user = alert 

>>> alert() 
hi! 
>>> alert_user() 
hi! 
2

功能是在Python的第一级公民。 只需添加alert_user = alert即可。

0

正如上面的同伴帮助者所述,您可以将alert定义为一个函数,然后给出一个变量表示的提示。

alert_user = alert 

感谢 本

相关问题