如何从 main.py 调用 calc() 函数



我创建计算函数,如下所示

def calc():
#Body of calculation 
NOW = datetime.now() #shows undefined
...
DR = os.getcwd() #shows undefined
..
for j in ROW: #shows undefined
#Assume Adding two variables like (a+b)
#Body of calculation ENDS

我不知道如何在 main.py 中调用该函数。我需要在 main.py 中执行的操作是调用函数并清除Add_Func.py中的未定义对象

import os 
from Add_Func import calc #Import the Add_Func.py file
from datetime import datetime
import DB_Connectivity as DB #Import the .py file
CONN = DB.connect()
CUR = CONN.cursor()
TB = input('Enter the table name:')
SQL = """select * from %s""" %(TB)
CUR.execute(SQL)
ROW = CUR.fetchall()

请建议一些代码来解决脚本。

你快到了。你想告诉你的主脚本通过将其添加到sys.path来查看Add_Func.py文件的位置,这基本上是Python查找模块的列表。

import sys
sys.path.append("path/of/your/add_func.py/file/goes/here")
from Add_Func import calc

假设您有以下文件

calc.py

#calc.py
def add(x, y):
return x + y

有两种方案可以将该文件导入模块

简单的文件夹结构

假设您有该文件夹结构

文件夹结构

src
|--main.py
|--calc.py

为了在calc中调用函数,您只需使用import导入到main中

即可main.py

#main.py
from calc import add
add(1, 1)

嵌套文件夹结构

在这种情况下,您必须告诉解释器在搜索自定义模块时查看该文件夹的内部。所以假设文件结构

文件夹结构

src
|--main.py
|--lib
|--calc.py

你的主干应该是这样的:

main.py

import os, sys
sys.path.append(os.path.join(os.path.dirname(__file__), "lib"))
from lib import calc
calc.add(2, 3)

最佳实践

更好的方法是像这样组织文件夹结构

文件夹结构

src
|--__init__.py
|--main.py
|--lib
|--calc.py
|--__init__.py

然后做你所有的路径追加在src/__init__.py.使用lib/__init__.py来控制要在模块外部公开哪些功能。

例:

SRC/__init__.py

import os,sys
sys.path.append(os.path.join(os.path.dirname(__file__), "lib"))

库/__init__.py

from .calc import add

库/计算.py

def add(x, y):
return x + y
def myCustomPrivateFunc(x):
pass

SRC/主.py

from lib import add
add(1, 2)

考虑到所有三个文件(main.py、Add_Func.py 和 DB_Connectivity.py)都在同一个目录中,它应该可以from Add_Func import calcimport DB_Connectivity as DB而无需任何更改。不过,您应该导入datetimeos要使用它们的位置:

main.py

from Add_Func import calc #Import the Add_Func.py file
import DB_Connectivity as DB #Import the .py file
CONN = DB.connect()
CUR = CONN.cursor()
TB = input('Enter the table name:')
SQL = """select * from %s""" %(TB)
CUR.execute(SQL)
ROW = CUR.fetchall()

Add_Func.py

from datetime import datetime
import os
def calc(ROW):
#Body of calculation 
NOW = datetime.now() #shows undefined
DR = os.getcwd() #shows undefined
for j in ROW: #shows undefined
pass
#Assume Adding two variables like (a+b)
#Body of calculation ENDS

最新更新