Python 模块调用模块时出错

Python 模块调用模块时出错,python,Python,我有一个函数 def brent(n): 在模素数中。布伦特需要模块分数,随机 在我的主要模块中,我做: import prime # brent is found in here import fractions # required for brent import random # required for brent 当我给brent(n)打电话时,它会出错,说它找不到random。解决方法是放置 import random import fractions 在原始布伦特函数中 这

我有一个函数

def brent(n):
在模素数中。布伦特需要模块分数,随机

在我的主要模块中,我做:

import prime # brent is found in here
import fractions # required for brent
import random # required for brent
当我给brent(n)打电话时,它会出错,说它找不到random。解决方法是放置

import random
import fractions
在原始布伦特函数中

这是预期的行为吗?

您应该(通常)在自己的模块顶部导入模块,而不是在函数内部导入模块


模块导入将导入的名称绑定到本地作用域,这意味着如果在函数中导入内容,则名称将仅对该函数可用,而对模块中的其他内容无效。

我不确定您是否理解。我在主模块的顶部导入了模块。问题是布伦特在本地没有检测到这些模块scope@nebffa:您没有共享太多的代码,但您谈论“内部主功能”和“主模块”,就好像它们是一样的。您需要在编程的每个模块中导入从属模块。因此,如果在一个新模块(一个单独的
.py
文件)中定义了
brent
,您需要在那里导入您需要的模块。明白了。我不想显示代码,因为它会占据整个屏幕。不管怎样,你已经很好地回答了我的问题,即使我无意中用main function/module lol进行了混淆。我将在存储brent的模块中导入模块-谢谢。你的场景中是否有多个文件…@avasal yes-brent位于单独的模块primes中。