python的import功能,你需要了解的导入机制

news2024/9/26 1:23:20

1 基本概念

概念

解释

import

即导入,方式就是在import位置将代码文件拷贝过去。

模块(module)

python中一个.py文件定义为一个模块

常用的几种模块导入方式:

import module_name
import module_name.function_name
import module_name.class_name

from module_name import *

from module_name import func_name,class_name

from module_name import *

(package)

指软件包,包含__init__.py、modules、及子目录等

常用的几种导入方式:

import package_name

import package_name as p

import package.module

import package.module as pm

from package.module import *

from package import module1, module2, module3, ... ...

from package import *

包的导入和模块导入基本一致,只不过导入包时会执行包内的__init__.py。如果只是

导入一个包import package而不指定导入任何模块,且包中的__init__.py文件中没有

其他的初始化操作,那么包下面的模块是无法被自动导入的。

Import导入时搜索路径

装载module代码时python解释器需要先搜索到对应的.py文件,搜索顺序为:

  1. 搜索内存中sys.modules中已经加载好的模块
  2. 搜索python的内置模块
  3. 搜索sys.path路径中的python模块和包
  • sys.path:包含了当前脚本的路径和其他查找包(系统库、第三方库等)的路径,我们也可以在代码中通过sys.path.append()动态添加需要的搜索路径
  • PYTHONPATH查看默认路径,比如Linux下为/usr/local/lib/python/

2 举例介绍

为了形象地解释,我建立了一个test文件夹,其中一个文件夹A打算建立成一个软件包,然后尝试在B文件夹的的run.py文件下导入A包中的模块。

1 在A_B.py中定义__all__用来模糊导入from moduleA import *

python文件中设置了 __all__ 的值,那么则按照 __all__ 指定的子包或者模块进行加载。

举例:定义A_B.py文件,__all__中增加A_B 和C_D函数,不包含E_F函数

在A目录的__init__.py中通过from A_B import *时,E_F函数并不会被导入,上述执行后会报错

2 配置sys.path,在B文件夹的的run.py文件下导入A包中的模块。

在run.py中import A,并执行run.py,发现报错如下:

发现在上面的例子中__init__.py文件执行时并为报错,现在在B文件夹执行run.py就会报错找不到A_B模块,那是因为在执行python文件时在本目录下,或者在上面基本概念介绍时的搜索路径中并未找到A_B模块,所以报错。

当我们在run.py中将A目录增加到sys.path中时,执行正常

import sys
sys.path.append("/Volumes/UNTITLED/test/A")
import A

执行结果:

开始导入A_B模块
使用A_B函数
使用E_F函数

共勉: 东汉·班固《汉书·枚乘传》:“泰山之管穿石,单极之绠断干。水非石之钻,索非木之锯,渐靡使之然也。”

-----指水滴不断地滴,可以滴穿石头;

-----比喻坚持不懈,集细微的力量也能成就难能的功劳。

----感谢读者的阅读和学习,谢谢大家。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1334532.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

springboot+vue项目如何在linux上部署

在linux上部署项目,是我们实训项目作业的最后一步,此时我们的项目编码测试已经完成,接下来就需要在服务器上部署上线,那么如何部署上线,接下来我会在虚拟机上的CentOS7系统上实现部署, 一.下载JDK 因为我…

sqlilabs第三十二三十三关

Less-32(GET - Bypass custom filter adding slashes to dangerous chars) 手工注入 由 宽字符注入可知payload 成功触发报错 http://192.168.21.149/Less-32/ ?id1%df 要写字符串的话直接吧字符串变成ascii码 注意16进制的表示方式 自动注入 sqlmap -u http:…

python定义代码块的符号,python中代码块所属关系

大家好,小编来为大家解答以下问题,python中代码块所属关系的语法,python定义代码块的符号,今天让我们一起来看看吧! 本文章主要用于平时Python3学习和使用中积累的比较常用的代码块。代码都是经过验证可行的python简单…

电脑提示vcruntime140.dll找不到怎么办,解决vcruntime140.dll丢失的方法

当我们在使用Windows系统运行特定程序或软件的时候,有时会遇到"vcruntime140.dll丢失"的问题。这个动态链接库(DLL)文件在程序的正常运行中起着关键的作用,因此出现该错误往往会导致程序无法启动或运行异常。在本文中&a…

测试老鸟,对软件测试行业的看法,“我“测试人何去何从?

目录:导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜) 前言 首先一个软件做出…

css的定位

为什么需要定位? 场景: 某个元素可以自由的在一个盒子内移动位置,并且压住其他盒子当我们滚动窗口的时候,盒子是固定屏幕某个位置的。 这二个需求,使用标准流和浮动的方式是无法实现的或者是不容易实现,所以…

华为OD机试 - 学生方阵 - 矩阵(Java 2023 B卷 200分)

目录 专栏导读一、题目描述二、输入描述三、输出描述1、输入2、输出 四、解题思路1、题目解析2、解体思路 五、Java算法源码再重新读一遍题目,看看能否优化一下~ 六、效果展示1、输入2、输出3、说明 华为OD机试 2023B卷题库疯狂收录中,刷题点这里 专栏导…

【Midjourney】登录和使用:详细指南!

关于Midjourney 链接: Midjourney Midjourney 是一项使用人工智能自动生成图像的服务。你可以通过向人工智能发出称为“提示”的指令来生成你想要的图像。例如,可以生成风景、人物、建筑等各种图像,还可以调整图像风格(绘画、插画风格、摄影风…

Certum的EV增强型证书

EV增强型https证书是一种特别的数字证书,只有这一款域名数字证书可以直接在地址栏显示企业名称(支持中文名称)。因此,很多企业为了提升企业的品牌形象,向客户展示企业的专业性和可靠性,往往会选择这种类型的数字证书。今天就随SSL…

基于深度学习的安全帽检测识别系统(含UI界面、yolov5、Python代码、数据集)

项目介绍 项目中所用到的算法模型和数据集等信息如下: 算法模型:     yolov5 yolov5主要包含以下几种创新:         1. 添加注意力机制(SE、CBAM、CA等)         2. 修改可变形卷积(DySnake-主…

acwing linux docker教程

终章 听着名字还挺伤感的哈哈哈其实是Linux的终章,感谢大家这段时间的阅读,这段使时间我为了给大家清楚的讲解一下Linux自己也是很认真的学习了一遍,自己提升了也不少。其实最近学校里面是讲了Linux和windows server 2019搭载DNS、web、ftp服…

【代码随想录】刷题笔记Day37

前言 试一试早上晚上固定时间刷题会不会效率and养成习惯 135. 分发糖果 - 力扣(LeetCode) 两边一起判断容易顾此失彼从左到右遍历,只比较右比左大的情况,局部and全局:右比左大从右到左遍历,只比较左比右…

【已解决】使用fastjson返回给echarts的时候怎么不忽略null值?

问题复现: 在使用fastjson的将对象序列化成json字符串的时候,如果对象属性为null的话,会被忽略掉的。有时候,这些null值还是很有用的。比如我们在使用echarts的时候,返回给前端就不能因为null而忽略,如果忽…

【echarts大屏】横向柱状图翻页轮询,让数据动起来!

想要打造震撼人心的数据可视化大屏?那么不妨尝试一下【echarts大屏】横向柱状图翻页轮询效果!通过这种方式,可以让你的数据图表生动起来,吸引用户的注意力。 ✨ 接下来,我将为你介绍如何实现【echarts大屏】横向柱状图…

对属于国家秘密的地理信息的获取、持有、提供、利用情况进行登记并长期保存,实行可追溯管理

对属于国家秘密的地理信息的获取、持有、提供、利用情况进行登记并长期保存,实行可追溯管理 数据记录(包括获取、持有、提供、利用、销毁等全闭环)

云安全资源管理定义以及实现方法

随着云计算的大力发展,越来越多的企业上云了。但很多企业上云之后,不知道怎么保障云资源安全,不知道怎么管理云资源,今天我们就来聊聊云安全资源管理定义以及实现方法。仅供参考哈! 云安全资源管理定义 云安全资源管理…

npm的常用使用技巧

npm是一个强大的工具&#xff0c;可以帮助你管理Node.js项目中的依赖项。以下是一些有用的npm使用技巧&#xff1a; 使用npm install命令&#xff1a;这个命令可以安装项目的依赖项。如果你想安装一个特定的版本&#xff0c;你可以使用npm install <package><version…

Linux6.2、IO基础(文件系统接口)

个人主页&#xff1a;Lei宝啊 愿所有美好如期而遇 直接使用系统接口 fopen底层封装的系统接口为open pathname也就是文件路径&#xff0c;flags我们通过一个demo来理解。 首先我们应该了解的是位图&#xff0c;int有32个比特位&#xff0c;我们根据他的比特位是否为1来决定这…

【数据结构】字符串匹配|BF算法|KMP算法|next数组的优化

字符串匹配算法是在实际工程中经常遇到的问题&#xff0c;也是各大公司笔试面试的常考题目&#xff0c;本文主要介绍BF算法&#xff08;最好想到的算法&#xff0c;也最好实现&#xff09;和KMP算法&#xff08;最经典的&#xff09; 一、BF算法 BF算法&#xff0c;即暴力(Bru…