Python导入和函数

2024-05-19 20:27:11 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个包含多个函数的python文件。在另一个文件中,我有一个包含函数名的数组。*如何实现函数格式的数组值*

例如: 1文件包含

def add(a,b)   
   c = a+b
      return c

第二个文件包含

functin_arry = ["add"]

那么如何将第一个文件函数调用为数组的第二个文件格式呢


Tags: 文件函数addreturndef格式数组函数调用
2条回答

您可以将第一个文件定义为包含所有函数,例如:

file_1.py

import numpy as np

def func_a(a,b):
    res = a + b
    print("func_a, result : ", res)
    return res

def func_b(a,b):
    res = np.sum(np.array((a,b)))
    print("func_b, result : ", res)
    return res

要从另一个文件导入它们,可以使用exec(open("file_1.py").read())(请参见this answer),第二个文件的内容如下:

file_2.py

exec(open("file_1.py").read())

a = 1
b = 1 

arr = [func_a,func_b]

for i in arr:
    i(a,b)

然后您可以通过以下方式在shell中运行file_2.py

(ipy3) sajid@DESKTOP-NDBN82B:/mnt/c/Users/sajid/Documents/misc/temp$ python file_2.py
func_a, result :  2
func_b, result :  2   
(ipy3) sajid@DESKTOP-NDBN82B:/mnt/c/Users/sajid/Documents/misc/temp$

您可以使用built-in functioneval或仅引用function来完成任务。你知道吗

  1. 使用eval

    只需定义函数并提供函数名作为参数。你知道吗

    def add(x,y):
        return(x+y)
    
    eval("add")(2,3)
    

    确保eval函数的参数是字符串。ie,提供你的 函数名eval为“字符串”,后跟参数。你知道吗

    输出为:5

  2. 使用函数引用。你知道吗

    定义函数,将对函数的引用添加到字典中,并使用函数的键从via dict调用函数。你知道吗

    def add(x,y):
        return(x+y)
    
    dynFuncCalls={"add":add}
    
    #Reference your function to a dictionary.
    
    dynFunc["add"](2,3)
    
    #Call it.
    #Here also, the output would be: 5
    

注意:避免使用eval,因为它是一个“dangerous function”。它允许用户执行任意代码&这可能会危害整个系统。 所以,不要用它。这是个坏习惯。你知道吗

使用函数引用,我在方法2中提到过。它非常简单和安全。(确保处理KeyError异常)。你知道吗

相关问题 更多 >