【问题标题】:Function calling from another file in python从python中的另一个文件调用函数
【发布时间】:2019-11-28 04:03:32
【问题描述】:

我有一个名为 function_bucket.py 的 python 文件,我需要将 import modalprem() 函数转换为另一个名为 Array1.py 的文件。下面我提到了这两个函数的代码,但是在调用函数“No module named modalprem()”时,我看到了错误!。请帮我解决这个错误。

function_bucket.py 的代码

def main():
    def modalprem():
        return 1
if __name__ == "__main__":
    main()

Array1.py 的代码

import numpy as np
from Function_Bucket import modalprem()
modalprem()
def main():
    EA=50
    PT = 15
    PPT = 5
    AP = 50000
    Mode = 12
    PM = np.arange(12*PT+1)
    PY = np.arange(12*PT+1)
    AGE = np.arange(12*PT+1)
    PREM = np.arange(12*PT+1)
    i=1
    Modal_Premium = modalprem()
    print(Modal_Premium)
    if (Mode == 1):
        Modal_Premium = AP
    elif (Mode==2):
        Modal_Premium = AP *0.5131
    elif (Mode==4):
        Modal_Premium = AP *0.2605
    elif (Mode==12):
        Modal_Premium = AP *0.0886
        
    while(i <180):
        PM[i] = i
        PY[i] = int( (i+11)/12)
        AGE[i] = EA + PY[i] -1
        if (PM[i]<=PPT*12 and ((PM[i]-1)%(12/Mode) == 0)):
            PREM[i] = Modal_Premium
        else:
            PREM[i] = 0
        i = i+1
    print(PM)
    print(PY)
    print(AGE)
    print(PREM)
if __name__ == "__main__":
    main()

谢谢

我们将不胜感激!

【问题讨论】:

  • 你在function_bucket中定义的函数是main,而不是modal_prem。您需要在main 之外定义它。还有,导入的时候不要调用,在导入语句中省略()
  • 感谢您的回复。在 function_bucket 文件中,我需要定义多个 no。我将相应调用的函数。在那种情况下结果是否相同。 @njk2
  • @lonerunner 如果我理解你的问题,答案是肯定的,你可以定义多个函数。
  • 您不必在“function_bucket.py”文件的主函数中定义“modal_prem”。只需在顶层定义它,然后将其导入另一个文件。

标签: python python-3.x function function-call


【解决方案1】:

您还在导入函数中添加括号 我认为这就是您收到此错误的原因

在你的 Array1.py

中试试这个
import function_bucket

function_bucket.modalprem()

您在function_bucket 中定义的函数是main,而不是modal_prem。您需要在 main 之外定义它

function_bucket.main()

您还在导入函数中添加括号

如果它不起作用,则意味着您没有共享正确的 Python 文件名

【讨论】:

  • No module named "Function_Bucket" 抛出错误
  • @lonerunner 确保您的第二个 Python 文件在同一目录中,例如,如果您在桌面上的 Array1.py 比您需要在桌面上粘贴 function_bucket
  • @lonerunner 为什么你不调用主函数?
  • @lonerunner 尝试执行主要功能,希望它能完全正常工作!
  • @lonerunner 如果我的回答对您有帮助,请点击检查标志接受我的回答!谢谢!
【解决方案2】:

function_bucket.py 的代码

def main():
    def modalprem():
        return 1
    return modalprem

Array1.py 的代码

import numpy as np
from function_bucket import main
modalprem=main()
def main():
    EA=50
    PT = 15
    PPT = 5
    AP = 50000
    Mode = 12
    PM = np.arange(12*PT+1)
    PY = np.arange(12*PT+1)
    AGE = np.arange(12*PT+1)
    PREM = np.arange(12*PT+1)
    i=1
    Modal_Premium = modalprem()
    print(Modal_Premium)
    if (Mode == 1):
        Modal_Premium = AP
    elif (Mode==2):
        Modal_Premium = AP *0.5131
    elif (Mode==4):
        Modal_Premium = AP *0.2605
    elif (Mode==12):
        Modal_Premium = AP *0.0886

    while(i <180):
        PM[i] = i
        PY[i] = int( (i+11)/12)
        AGE[i] = EA + PY[i] -1
        if (PM[i]<=PPT*12 and ((PM[i]-1)%(12/Mode) == 0)):
            PREM[i] = Modal_Premium
        else:
            PREM[i] = 0
        i = i+1
    print(PM)
    print(PY)
    print(AGE)
    print(PREM)
if __name__ == "__main__":
    main()

希望这会按预期工作!

【讨论】:

  • ModuleNotFoundError: No module named 'function_bucket'
  • @lonerunner 将 function_bucket 名称保留为文件名,无论是小写还是大写都区分大小写
  • 大写和小写已经处理过,但还是报错
  • 模块“Function_Bucket”没有属性“modalprem”
  • @lonerunner 更新 Array1.py 类,因为我已经更新它 import main 然后将 main() 分配给 Array1.py 文件中的 modalprem 对象
猜你喜欢
  • 2021-08-30
  • 2013-06-16
  • 1970-01-01
  • 2017-11-04
  • 1970-01-01
  • 1970-01-01
  • 2013-12-17
  • 1970-01-01
相关资源
最近更新 更多