重命名 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