当前位置: 首页 > 面试题库 >

在Python中,当您导入函数内部时会发生什么?

公羊绪
2023-03-14
问题内容

就速度和内存效率而言,在函数内部导入Python模块和/或函数有什么优缺点?

它是否在每次运行该功能时重新导入,或者是否仅在运行一开始就重新导入一次?


问题答案:

每次运行该功能时都会重新导入吗?

没有;
确切地说,Python模块在每次导入时都会被缓存,因此导入第二(或第三或第四…)次实际上并不会迫使它们再次经历整个导入过程。1个

是否在开始时导入一次功能是否运行?

不可以,只有在执行函数时才导入。2,3

至于好处:我想这取决于。如果您可能很少运行某个函数并且不需要将模块导入其他地方,那么仅将其导入该函数 可能会
有所帮助。或者,如果存在名称冲突或其他原因,您不希望该模块或该模块中的符号在 任何地方都 可用,那么您可能只想将其导入特定功能中。(当然,from my_module import my_function as f这些情况总是存在的。)

在一般实践中,它可能没有那么有益。实际上,大多数Python样式指南都鼓励程序员将所有导入内容放在模块文件的开头。



 类似资料:
  • 在C语言中,alloca()函数在alloca()调用方的stackframe上分配内存。 当您试图分配大量它无法分配的字节时,会发生什么? null 有人有更多关于这方面的信息吗?

  • 问题内容: 我最近在摆弄东西,意识到(c?)Python所做的事情非常明智:它确保小整数始终具有相同的。 但是后来我想知道数学运算的结果是否同样如此。原来是: 似乎它开始在n = 257处失败… 但是有时即使更大的数量它仍然可以工作: 这里发生了什么?python如何做到这一点? 问题答案: Python会以一定数量保留对象池。当您在该范围内创建一个时,您实际上会获得对已有对象的引用。我怀疑这是出

  • 如果在java中执行关闭挂钩期间引发了未捕获的异常,jvm是否会立即退出,而不运行其余已注册的关闭挂钩(如果有)?从javadocs: 未捕获的异常通过调用线程ThreadGroup对象的uncaughtException方法在关闭钩子中处理,就像在任何其他线程中一样。此方法的默认实现将异常的堆栈跟踪打印到System.err并终止线程;它不会导致虚拟机退出或停止。 似乎其他关机挂钩应该运行...

  • 问题内容: 该功能运行什么?它只会运行吗? 问题答案: setState()将按以下顺序运行函数: 如果您的组件正在接收道具,它将使用上述功能运行该功能。

  • 我想了解更多关于std::thread的信息,特别是如果我有一个线程向量,并且其中一个线程完成了执行,将会发生什么。 想象一下这个例子: 创建一个线程向量,所有线程都执行以下函数: “char*flag”指向一个标志,表示函数停止执行。 例如,向量包含10个线程,它们都在执行。然后将线程号3的标志设置为零。(向量中的第4个线程,因为向量从零开始。) 好的做法是然后加入线程。 向量现在将包含多少st

  • 问题内容: 采访中有人问我这个问题。他们想知道的是,当用户调用malloc(4)分配4个字节的内存时,操作系统(Linux)如何响应?哪个子系统响应此系统调用? 我告诉他,内存管理子系统将为malloc()提供服务。malloc()实现将遍历空闲内存(物理内存)列表,我们将其称为空闲列表,并找到一个大于或等于4字节的适当块。一旦找到这样的块,它将被从空闲列表中删除并添加到已用列表中。然后,该物理内