一篇文章搞定Python的import!

在学习Python的过程中,import是较早接触的一个关键字,Python有很多的内置库,使用import导入后即可使用,或者通过pip安装后import使用,import还为我们组织项目结构提供了可能,在开发大型系统时,整个项目有很多的文件夹和文件,都是通过import来进行连接的,所以搞清楚import的工作机制很有必要。

一、import的基本用法

1.导入包名

import os

2.从包中导入函数

from math import pow

3.导入包并赋予别名

import math as m

4.从包中导入常量并赋予别名

from math import pi as p

5.导入包中所有内容

from math import *

二、Python组织代码的方式

1.一个文件中的元素

如果整个程序只有一个文件,这个文件中就有变量、函数、类这些元素可供操作。

2.模块(module)

简单来说模块就是一个.py文件,例如:在同一个路径下有a.py和b.py两个文件,那么在a.py中就可以import b,然后通过b.xxx就可以使用b.py中的变量、函数、类。

3.包(package)

简单理解包就是包含一个__init__.py的文件夹,例如:在同一个路径下有一个a.py文件和一个b文件夹,在b文件夹中有一个__init__.py文件,在a中import b就是导入了b这个包,实际上就是__init__.py这个文件。

4.__all__

在包的__init__.py中定义的__all__变量,这样就可以通过导入包名来调用包内各文件中的元素,例如例如:在同一个路径下有一个a.py文件和一个b文件夹,在b文件夹中有__init__.py和c.py两个文件,

c.py中内容为:

__init__.py的内容为:

a.py的内容为:

运行结果:

程序运行后多了一个__pycache__文件夹,当一个模块第一次被导入时,它就被汇编为字节代码,并将字节码写入一个同名的.pyc文件。后来的导入操作会直接读取.pyc文件而不是.py文件。(除非.py文件的修改日期更新,这种情况会重新生成.pyc文件)

5.为什么用.c来引入?

前面的a.py可以使用import b来导入b.py中的元素,为什么b文件夹中的__init__.py中不能import c呢?因为__init__.py其实代表的是b这个文件夹,c并没有跟它在一级目录下,所以要使用.c来引入c.py中的元素。

6.多层目录怎么import?

看下面一张图就够了:

三、搜索路径

导入模块时,解释器会搜索sys.path列表,这个列表中保存着一系列目录。

不同的环境中sys.path是不一样的,Python会依次去查找列表的路径,找到后就会返回,所以先后顺序很重要,第一个''是指当前目录或指定的相对路径,例如你当前目录中有一个math.py文件,当你import math的时候相当于导入了这个math.py文件,而不是标准库math。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180904G1J5J400?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券