2013-03-29 45 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 

感謝 本

相關問題