如何从另一个. py 文件调用函数?

file.py包含一个名为 function的函数。如何导入它?

from file.py import function(a,b)

以上提供了一个错误:

Import Error: 没有名为‘ file.py’的模块; file 不是一个包

1711690 次浏览

首先,从file.py导入function

from file import function

稍后,使用以下命令调用该函数:

function(a, b)

请注意,file是Python的核心模块之一,因此我建议您将file.py的文件名更改为其他名称。

请注意,如果您尝试将函数从a.py导入到名为b.py的文件,则需要确保a.pyb.py位于同一目录中。

导入时不要写.py

file_a.py包含一些函数:

def f():
return 1


def g():
return 2

要将这些函数导入file_z.py,请执行以下操作:

from file_a import f, g

首先将文件保存为. py格式(例如,my_example.py)。 如果该文件有函数,

def xyz():


--------


--------


def abc():


--------


--------

在调用函数中,您只需键入以下行。

file_name:my_example2.py

============================

import my_example.py




a = my_example.xyz()


b = my_example.abc()

============================

您应该将文件放在与您尝试导入的Python文件相同的位置。“从文件导入函数”也足够了。

您不必添加file.py

只需将文件与要导入它的文件保持在相同的位置。然后只需导入您的函数:

from file import a, b

方法1。从file.py导入您想要的特定函数:

from file import function

方法2。导入整个文件:

import file as fl

然后,要调用file.py中的任何函数,请使用:

fl.function(a, b)

假设你要调用的文件是anotherfile.py,你要调用的方法是方法1,那么首先导入文件,然后导入方法

from anotherfile import method1

如果方法1是类的一部分,则类是类1,然后

from anotherfile import class1

然后创建一个类1的对象,假设对象名称为ob1,那么

ob1 = class1()
ob1.method1()

您也可以从不同的目录调用该函数,以防您不能或不想在您正在工作的同一目录中拥有该函数。您可以通过两种方式做到这一点(也许有更多的替代方案,但这些是对我有用的方法)。

备选案文1 暂时更改您的工作目录

import os


os.chdir("**Put here the directory where you have the file with your function**")


from file import function


os.chdir("**Put here the directory where you were working**")

备选案文2 将函数所在的目录添加到sys.path

import sys


sys.path.append("**Put here the directory where you have the file with your function**")


from file import function

数学方法. Py

def Add(a,b):
return a+b


def subtract(a,b):
return a-b

在缅因派内部

import MathMethod as MM
print(MM.Add(200,1000))

输出:1200

来修复

ModuleNotFoundError:没有命名的模块

尝试在文件名前使用点(.)进行相对导入:

from .file import function

将模块重命名为“file”以外的名称。

然后还要确保在调用函数时:

1)如果要导入整个模块,则在调用它时重申模块名称:

import module
module.function_name()

import pizza
pizza.pizza_function()

2)或者如果您要导入特定函数、带别名的函数或所有使用*的函数,则无需重申模块名称:

from pizza import pizza_function
pizza_function()

from pizza import pizza_function as pf
pf()

from pizza import *
pizza_function()

在我的情况下,我将我的文件命名为helper.scrap.py,直到我更改为helper.py才能使其工作

如果您的文件位于不同的包结构中,并且您想从不同的包调用它,那么您可以以这种方式调用它:

假设您在Python项目中有以下包结构:

Python包和文件结构

在-com.my.func.DifferentFunction python文件中,您有一些功能,例如:

def add(arg1, arg2):
return arg1 + arg2


def sub(arg1, arg2) :
return arg1 - arg2


def mul(arg1, arg2) :
return arg1 * arg2

你想从Example3.py调用不同的函数,然后按照以下方式执行:

Example3.py中定义导入语句-导入所有函数的文件

from com.my.func.DifferentFunction import *

或定义要导入的每个函数名称

from com.my.func.DifferentFunction import add, sub, mul

然后在Example3.py中,您可以调用函数来执行:

num1 = 20
num2 = 10


print("\n add : ", add(num1,num2))
print("\n sub : ", sub(num1,num2))
print("\n mul : ", mul(num1,num2))

输出:

 add :  30


sub :  10


mul :  200

如果您想导入此文件,请在文件名前附加一个点.,该文件位于您运行代码的同一目录中。

例如,我正在运行一个名为a.py的文件,我想导入一个名为addFun的方法,该方法是用b.py编写的,b.py位于同一目录中

from .b import addFun

. py文件中的函数(当然可以(当然)在不同的目录中)可以通过先写入目录,然后写入不带. py扩展名的文件名来简单地导入:

from directory_name.file_name import function_name

以后使用:function_name()

以上任何解决方案都不适合我。我得到了ModuleNotFoundError: No module named whtever错误。 所以我的解决方案是导入如下

from . import filename # without .py

在我的第一个文件中,我定义了如下函数乐趣

# file name is firstFile.py
def fun():
print('this is fun')

在第二个文件中,让我们说我想调用函数乐趣

from . import firstFile


def secondFunc():
firstFile.fun() # calling `fun` from the first file


secondFunc() # calling the function `secondFunc`

在我的主脚本detectiveROB.py文件中,我需要调用passGen函数来生成密码哈希,该函数位于modules\passwordGen.py

对我来说最快最简单的解决办法是

下面是我的目录结构

输入图片描述

所以在detectiveROB.py中,我使用以下语法导入了我的函数

from modules.passwordGen import passGen

输入图片描述

一个小建议, 那些相信通过按alt+自动导入的人进入PyCharm并且无法获得帮助。

只需通过以下方式更改要导入的文件名: 右键单击文件并单击refactor->rename。 您的自动导入选项将开始出现

解决方案1:在一个文件myfun.py中定义任何函数。

# functions
def Print_Text():
print( 'Thank You')


def Add(a,b):
c=a+b
return c

在另一个文件中:

#Import defined functions
from myfun import *


#Call functions
Print_Text()
c=Add(1,2)

解决方案2:如果上述解决方案对Colab不起作用

  1. 创建一个文件夹myfun
  2. 在此文件夹中创建一个文件__init__.py
  3. __init__.py中编写所有函数
  4. 从Colab笔记本导入您的函数from myfun import *