python--import导入模块

import 导入模块

import搜索路径

import sys
print(sys.path)

路径搜索

  • 从sys.path所列的目录里依次查找需要导入的模块文件
  • ”表示当前路径
  • 列表中的路径的先后顺序代表了python解释器在搜索模块时的先后顺序

程序执行时添加新的模块路径

sys.path.append('...')  # 后面添加

sys.path.insert(0,'...')  # 前面添加,可以确保先搜索这个路径

重新导入模块

模块被导入后,字节码文件已生成,修改被导入模块不会影响现在执行的代码,如果需要重新加载被导入模块,使用import module是不能实现的,需要使用reload

from imp import reload
reload(被导入模块名)

特别注意:import…和from…import…的区别

from xx import xx :这个可以理解成深拷贝,会重新从字节码加载并创建一个内存对象,其他模块修改了被导入模块的的数据,只要字节码不变,那么在这个模块中还是原来的数据

# gril模块
hava_girl_friend = False
# find模块
from girl import *

def find():
    print('找到女友了')
    have_girl = True  # 这个尝试修改模块girl中的成员
# show模块
from girl import have_girl_friend

def show():
    if have_girl_friend:
        print('秀恩爱')
    else:
        print('苦X正在寻找中...')
# main模块
import find
import show

def main():
    find.find()  # 先尝试修改girl模块中的成员
    show.show()  # 判断from导入之后的girl模块中的成员值

if __name__ == '__main__':
    main()
# 答案
找到女友了
苦X正在寻找中...

说明:

  • from … import …导入方式每次导入相互独立,不会受前面某个关联模块导入相同模块的影响
  • 理解:每次from导入都从字节码中重新读取

import … 在关联进程中,一次导入后,后面直接拿来用,不会再次重新导入

# gril模块
hava_girl_friend = False
# find模块
import girl

def find():
    print('找到女友了')
    have_girl = True  # 这个尝试修改模块girl中的成员
# show模块
import girl

def show():
    if have_girl_friend:
        print('秀恩爱')
    else:
        print('苦X正在寻找中...')
# main模块
import find
import show

def main():
    find.find()  # 先尝试修改girl模块中的成员
    show.show()  # 判断from导入之后的girl模块中的成员值

if __name__ == '__main__':
    main()
# 答案
找到女友了
秀恩爱

说明

  • import导入方式在关联的进程中只加载一次字节码
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值