Python教程 - import导包
在Python中,“模块”是一个存在于任何代码文件中的文件,任何Python代码也可以作为模块使用。通过使用import
语句,可以引用其他模块的代码,进而使用其他模块的程序和变量,这使得程序更加简洁且易于维护。
import 语句
import
语句最简单的用法就是“import 模块名称
”。例如,下面的代码导入了datetime
模块,就可以使用其中的datetime
和date
方法,显示当前的时间和日期。
import datetime
print(datetime.datetime.now()) # 2024-05-07 22:39:14.709575
print(datetime.date.today()) # 2024-05-07
此外,也可以使用“from 模块名称 import 方法
”,只导入模块中的某一部分代码。例如,下面的代码只导入了date
方法。
from datetime import date
print(date.today()) # 2024-05-07
使用as
为模块设置别名
如果导入的模块名称和原始代码中使用的名称相同,就必须修改其中一个的名称(修改模块或自己的代码)。这时可以使用“别名”的方式导入模块,这样就不需要更改自己的代码。使用的方法为“import 模块 as 别名
”。例如,下面的代码将导入的datetime
模块赋予了一个别名dd
,使用时只需调用dd
,就等同于调用datetime
。
import datetime as dd
print(dd.datetime.now()) # 2024-05-07 22:40:13.222077
print(dd.date.today()) # 2024-05-07
创建自己的模块
每一个Python程序都可以作为模块,可以将共用的代码打包成模块,然后通过其他程序引用。例如,下面有两个Python程序,通过main.py
导入ok.py
,执行ok.py
中的talk
函数。
-
ok.py
def talk(msg): print(msg)
-
main.py
import ok ok.talk('hi') # hi
如果自己的程序中有多个函数或变量,也可以通过“from 模块名称 import 方法
”单独导入。例如,下面的代码只导入了count
函数和name
变量。
-
ok.py
def talk(msg): print(msg) def count(x, y): print(int(x)+int(y)) name = 'bug' age = 18
-
main.py
from ok import count from ok import name count(1,2) # 3 print(name) # bug
模块的路径
Python导入模块的路径支持“绝对路径”和“相对路径”两种,主要的写法如下:
-
绝对路径:以“当前文件所在的文件夹”为根目录
import a from a import b
例如,将
ok.py
放在与main.py
同层的module
的test
文件夹里,导入时就必须加上路径module.test
。from module.test import ok ok.count(1,2) # 3 print(ok.name) # bug
-
相对路径:相对于“当前文件所在的文件夹”的路径,使用“.”作为分隔。
from . import a # 同一目录层 from .. import a # 上一层目录 from ... import a # 上上层目录 from .a import b
使用相对路径比较容易出现问题,常见的就是“尝试使用没有已知父包的相对导入”,原因在于执行时将执行的
.py
当作最底层,因此就发生了找不到父元素(parent package)的情况。解决方式是使用python -m 目录.文件名
执行,就可以正常运行。
转载自:https://juejin.cn/post/7367009718835478563