s y s . p a t h 问 题 sys.path问题 sys.path问题


什么是sys.path

指定模块的搜索路径的字符串列表。


什么是模块?模块就是一个py文件

什么是包?包就是问价夹加一个__init__.py文件


一 广 义 模 块 分 类 一 广义模块分类 一广义模块分类

sys.path问题_字符串

二 模 块 的 导 入 二 模块的导入 二模块的导入

2.1、导入整个模块——import 模块名

  • 调用方式:模块名.函数名或类名
import time

start = time.time()      # 调用time模块中的time()
time.sleep(5)            # 调用time模块中的sleep()  休息3秒钟
end = time.time()       
print("程序运行用时:{:.2f}秒".format(end-start))

sys.path问题_搜索_02

2.2、从模块中导入类或函数——from 模块 import 类名或函数名

  • 调用方式:函数名或类名
from itertools import product   

ls = list(product("AB", "123"))
print(ls)

sys.path问题_程序运行_03

一次导入多个

from function import fun1, fun2

fun1.f1()
fun2.f2()

sys.path问题_字符串_04
2.3、导入模块中所有的类和函数——from 模块 import *

from random import * 

print(randint(1,100))       # 产生一个[1,100]之间的随机整数
print(random())             # 产生一个[0,1)之间的随机小数

sys.path问题_搜索_05

三 模 块 的 查 找 路 径 三 模块的查找路径 三模块的查找路径

模块搜索查找顺序:

1、内存中已经加载的模块
2、内置模块
3、sys.path路径中包含的模块
  • 1、内存中已经加载的模块
import fun1

fun1.f1()

sys.path问题_搜索_06

# 删除硬盘上的fun1 文件
import fun1

fun1.f1()

sys.path问题_字符串_07

# 修改硬盘上的fun1 文件
import fun1

fun1.f1()
# 居然没变,说明是优先从内存中读取的

sys.path问题_搜索_08

  • 2、内置模块
# 2、内置模块
# Python 启动时,解释器会默认加载一些 modules 存放在sys.modules中
# sys.modules 变量包含一个由当前载入(完整且成功导入)到解释器的模块组成的字典, 模块名作为键, 它们的位置作为值
import sys
print("*****************")
print(len(sys.modules))
print("*****************")
print("math" in sys.modules)
print("*****************")
print("numpy" in sys.modules)
print("*****************")
for k,v in list(sys.modules.items())[:3]:
    print(k, ":", v)
print("*****************")

sys.path问题_字符串_09

  • 3、sys.path路径中包含的模块
import sys
for i in sys.path:
    print(i)

sys.path问题_字符串_10

* sys.path的第一个路径是当前执行文件所在的文件夹
* 若需将不在该文件夹内的模块导入,需要将模块的路径添加到sys.path
import sys
sys.path.append("C:\\Users\\ibm\\Desktop")    # 注意是双斜杠
import fun3
fun3.f3()

sys.path问题_类名_11
sys.path问题_搜索_12