重新命名 Python 函式指標
-
使用 Python 中的
getattr()函式使用指標重新命名函式 -
使用 Python 中的
import語句使用指標重新命名函式 -
使用 Python 中的
package.function語句使用指標重新命名函式 - 在 Python 中使用指標和引用字典重新命名函式
本教程將討論在 Python 中使用指標重新命名函式的不同方法。
使用 Python 中的 getattr() 函式使用指標重新命名函式
我們有一個名為 functions.py 的檔案,其中我們定義了兩個名為 square 和 cube 的函式。
我們可以使用幾種方法以其他名稱訪問這些函式。有一個眾所周知的概念,即 Python 中的一切都是物件。
眾所周知,物件是通過引用呼叫的。即使 Python 不支援使用者定義的指標,我們仍然可以使用以下方法解決這個問題。
我們的第一個方法涉及在 Python 中使用 getattr() 函式。getattr() 是一個內建函式,它返回一個物件的命名屬性的值。
它可以與 __import__() 函式 一起使用。__import__() 是另一個內建函式,用於在 Python 程式碼中匯入包、庫和模組。
匯入後,我們可以通過將 getattr() 函式的返回值分配給新變數來為原始函式分配一個新名稱。程式碼片段演示了這種現象在 Python 中的作用。
pkg = __import__("functions")
func = getattr(pkg, "cube")
print(func(3))
輸出:
27
我們使用 __import__() 函式匯入檔案 functions.py 並將其值分配給 pkg 物件。
然後我們在 pkg 物件中獲取原始 cube() 函式並將其值分配給 func 變數。我們現在可以只使用 func() 函式呼叫 functions.cube 函式。
最後,我們用 func(3) 列印了 3 的立方。
使用 Python 中的 import 語句使用指標重新命名函式
此方法涉及使用 import 語句重新命名函式。
import 語句用於在我們的程式碼中匯入包、庫或模組。我們可以使用 as 語句和 import 語句來重新命名我們的包、庫或模組。
使用 import 和 as 語句重新命名我們的包的程式碼片段如下。
from functions import square as sq
print(sq(2))
輸出:
4
我們在 functions.py 檔案中將 square() 函式匯入為 sq。
現在,我們可以通過編寫 sq() 在當前檔案中使用 square() 函式。這種方法非常方便且易於理解。
但是,如果我們想為一個函式使用多個名稱,則此方法會失敗。下一節中提到的方法解決了這個問題,並提供了一種解決方案,它還可以為一個函式處理多個名稱。
使用 Python 中的 package.function 語句使用指標重新命名函式
我們的 square() 函式在 functions.py 檔案中,我們可以通過首先在當前程式碼中匯入 funcitons.py 檔案並編寫 function.square() 來引用此函式。
這用作對原始函式的引用。我們可以將其值分配給程式碼中的任何變數,並使用該變數來呼叫函式。
下面提供的程式碼片段使我們能夠了解此方法的工作原理。
import functions
sq = functions.square
print(sq(3))
輸出:
9
通過將 functions.square 的引用分配給 sq,我們將 functions.square() 函式重新命名為 sq()。
然後我們使用重新命名的 sq() 函式來計算並列印 3 的平方。在為同一個函式分配多個名稱時,此方法非常有用。
為此,我們必須將 functions.square 的值分配給多個變數。下面的程式碼示例向我們展示瞭如何實現這一點。
import functions
sq = functions.square
sq1 = functions.square
sq2 = functions.square
print(sq(3))
print(sq1(3))
print(sq2(3))
輸出:
9
9
9
我們在同一個程式碼檔案中用三個不同的名字呼叫了同一個 functions.square() 函式。此方法適用於函式的多個名稱。
它也可以用於多種功能。這種方法唯一的問題是它有點程式碼密集,感覺非常冗餘。
下一節討論的方法解決了這個問題。
在 Python 中使用指標和引用字典重新命名函式
我們可以使用原始函式的引用字典來為多個原始函式分配多個名稱。
這種方法實現起來很簡單。我們必須為原始參考分配一個鍵。
然後,我們可以通過使用帶有分配鍵的字典名稱來訪問對原始函式的引用。以下程式碼片段顯示了此方法的工作實現。
import functions
functionsdict = {"square": functions.square, "cube": functions.cube}
c = functionsdict["cube"]
print(c(3))
輸出:
27
我們建立了一個字典,為原始函式的所有引用分配一個鍵。然後我們使用 functionsdict 字典和相應的鍵 cube 將 functions.cube 重新命名為 c。
最後,我們使用 c() 函式來列印 3 的立方。
Maisam is a highly skilled and motivated Data Scientist. He has over 4 years of experience with Python programming language. He loves solving complex problems and sharing his results on the internet.
LinkedIn