python import

python IMPORT

对于 python

1
import xxx # 这里的 xxx 叫做 module

对于 python 一个文件夹就可以当作一个 module ,通常会有一个 __init__.py 这个函数作用就是简化 import 的代码长度,而且是在

1
import package 

的时候是自动被调用,和 class 类似

可以看如下例子
假设有如下文件结构

1
2
3
4
main.py
package(directory)
|__ __init__.py
|__ many_fun.py

其中

1
2
3
4
5
# many_fun.py
def fun1():
print("hello,swangeese!")
def fun2():
print("hello,acsa!")

如果想在 main.py 中调用函数 fun1()

  • 方式1(最直接方法)
    1
    2
    from package.many_fun import fun1
    fun1()
  • 方式2(经过__init__.py 处理)
    1
    2
    # __init__.py
    from package.many_fun import fun1
    另外,我还看到过这种写法(在 megatron 的源码里)
    1
    from .many_fun import fun1
    1
    2
    3
    # main.py
    from package import fun1
    fun1()

可以看出经过 __init__.py 处理之后就会发现 import 简化了一些

另外通过 __all__ 可以指定外界可以访问的函数,比如

1
2
3
# __init__.py
__all__ = ['fun1'] # 这里指定了可以被调用的函数只有 fun1
from package.many_fun import * # 指导入 many_fun.py 中所有的函数

除此之外,注意 import 进入的函数是遵循覆盖原则的,前面导入的class,function 如果后面有重名的就会被覆盖.
[1] https://www.zhihu.com/question/27011996/answer/2371282699


python import
http://home.ustc.edu.cn/~ustcxwy0271/2022/04/27/python-import/
作者
Xu Weiye
发布于
2022年4月27日
许可协议