gpt4 book ai didi

python - 导入模块/函数的方式有哪些?

转载 作者:太空宇宙 更新时间:2023-11-03 14:40:33 24 4
gpt4 key购买 nike

这是一个非常基本的问题,但到目前为止我还没有看到涵盖所有可能情况的任何解释。

假设m1、m2、m3是模块层级,fun()是层级内部的一个函数。

我见过这样的命令

Version 1

from m1.m2.m3 import fun
fun() #To access the function

Version 2

import m1
m1.m2.m3.fun()

它们是否完全等同于

Version 3

import m1.m2
m1.m2.m3.fun()

Version 4

from m1.m2 import m3
m3.fun()

或者两者之间的任何其他组合?有什么相对优势或劣势吗?显然,我宁愿在每次调用函数时编写 fun() 而不是编写 m1.m2.m3.fun() 但权衡是什么?
据我了解,版本 2 将执行 m1 的整个脚本。但是其他人在执行时是否更具选择性(因此可能更快地到达 __main__?)

最佳答案

Version 1

from m1.m2.m3 import fun
fun() #To access the function

版本 1 是与 if fun 一起使用的版本是您想要从 m1 您可以保证脚本中的任何其他函数都不会被称为 fun。如果以上任何一项都不满足不做,但如果满足,做。


Version 2

import m1
m1.m2.m3.fun()

如果您希望能够访问m1 中的所有内容,则版本 2 是适用的。它确实会导致更冗长的代码,因为你必须一直随身携带 m1 但它比等效的(不应该鼓励)from m1 import * 。请注意,将执行 m1 代码。


Version 3

import m1.m2
m1.m2.m3.fun()

第 3 版是如果您希望能够访问 m2 内的一切但不能访问更高版本(不能做 m1.more_fun())。请注意,将执行 m2 代码。


Version 4

from m1.m2 import m3
m3.fun()

版本 4 是如果您希望能够访问 m3 内的所有内容但不能访问更高版本(不能做 m1.m2.more_fun())。请注意,将执行 m3 代码。

关于python - 导入模块/函数的方式有哪些?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53739261/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com