likes
comments
collection
share

Python教程 - import导包

作者站长头像
站长
· 阅读数 56

在Python中,“模块”是一个存在于任何代码文件中的文件,任何Python代码也可以作为模块使用。通过使用import语句,可以引用其他模块的代码,进而使用其他模块的程序和变量,这使得程序更加简洁且易于维护。

import 语句

import语句最简单的用法就是“import 模块名称”。例如,下面的代码导入了datetime模块,就可以使用其中的datetimedate方法,显示当前的时间和日期。

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同层的moduletest文件夹里,导入时就必须加上路径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
评论
请登录