首先需要将import内容建立一个大概如下层级的包:

以黑色框为第一级,蓝色框为第二级,棕色框为第三级,红色框为第四级

一.import 引入初识

首先在module.py写入代码如下:

xboy = "hsz"
xgirl = "zero" def dog():
print("小狗喜欢啃骨头") def cat():
print("这个小猫的名字叫做小花") class MyStu():
name = "Python" print("hello python")
print(__name__) if __name__ == "__main__":
#如果是间接的被导入,下面的代码不执行
print("test")

然后在main.py写入代码并逐个运行:

1.import 引入

import module
#请记住:当导入模块的时候,只需要一次即可,终身受益.不会出现重复导入的情况
#模块.属性(变量)
res = module.xboy
print(res) #模块.函数(方法)
module.dog() #模块.类
print(module.MyStu().name) #使用别名调用模块当中的成员
import module as m
print(m.xboy)
m.cat() import sys
print(sys.path)
"""
#自定义模块,进行导包
'''
在导包的时候,系统默认先从sys.path 这个路径开始寻找,如果找不到,直接报错,
如果想要找到,把相应的路径插入到sys.path这个列表,系统自动寻找对应模块.
'''
import sys
"""
sys.path.append(r"F:/hsz/zero/ceshi_module/") #
import abcd
print(abcd.ceshi001)

然后对上面的mian.py里的内容进行注释,往后添加如下代码进行一步步运行:

 2.from...import 从哪里..引入...方法


#引入一个
from module import dog
dog() #引入多个
from module import cat,xgirl
cat()
print(xgirl) #引入所有 * 代表所有
from module import *
print(xboy) #可以在引入的同事,起一个别名
from module import cat as c,xboy as ww
print(ww)
c() print(__name__,type(__name__)) #__main__
"""
#返回模块名字的魔术属性 __name__
如果当前文件是直接执行的,就是主文件(主进程),返回__main__
如果当前文件是间接执行的,就是子文件(子进程),返回当前文件名(模块名)
""" if __name__ == "__main__" : #if "main" == "__main__" 条件不成立 , 下面的代码不执行,不导入
# __name__ == __main__ 用来做测试用的, 在被间接导入的时候,下面的代码不需要导入
print("test code")

3.学习导入包

先对a.py 写入代码:

ceshia = 10011
ceshia2 =10012
ceshia3 = 10013

对mypath.py写入代码:

def join():
print("自定义join") ceshimypath = "mypath2345678"

还有package1下的__init__.py

ceshi101 = 10111111

# __init__ 不是用来直接运行的,而是伴随包的初始化的.

# 方法三调用时,打开进行测试.
# from package1 import a
# from package1 import mypath

然后对main2.py写入代码,一个方法一个方法进行运行

#文件就是一个模块,文件就是一个包
#文件夹里面可以有很多文件,就相当于包中有很多的模块
#如果想把包当成模块用,在创建一个__init__.py中进行定义
#当引入一个包的时候,当前包下的__init__文件自动执行
import package1
print(package1.ceshi101) #方法一
import package1.a
print(package1.a.ceshia) #方法二 (起别名)
import package1.a as pa
print(pa.ceshia2) #方法三
# print("======方法三=========")
# print(package1.a.ceshia)
# package1.mypath.join() # 类比os.path.join的用法

注意:方法三只有在用的时候才将注释去掉运行测试,为了不影响接下来的运行,运行完方法3后对其进行注释

4.from ..import 语法

然后对main2.py接下来的运行做好准备,需要在个个包下的文件添加内容如:

/package2/pkgone/pkgone2.py 内容为:

ceshippone2 = "ceshione2"
ceshippone22 = "ceshione22"

/package2/pkg_module1.py内容为:

ceshim1 = "m1"

/package2/pkgtwo/pkgtwo1.py内容为:

ceshi222 =222
ceshi2222 = 222222

接下来是main2.py添加如下代码:

#引入package1包下 a模块中的ceshia2 属性
from package1.a import ceshia2
print(ceshia2) #引入的同事,起别名
from package1.mypath import ceshimypath as cm,join as j
print(cm)
j()
## 引入 package2 包下的 pkgone 包下的 pkgone1 模块 ,顺便起别名ppp1
import package2.pkgone.pkgone1 as ppp1
print(ppp1.ceshippp)

对此代码块进行一 一测试

5.单入口模块(重要)

分模块不能单独进行调用,统一由主文件main进行调用
模块之间的互相嵌套导入使用相对路径实现
单入口文件必须和包在同一层级,包里面可以含有各种包和模块


#单入口模式主要是对子文件的内容进行测试,在/package2/pkgone/pkgone1.py文件下添加如下代码:
ceshippp = "测试pppone"
ceshippp1 = "测试pppone1" #子文件,如果是单入口模块,不能直接执行,因为在这里都用的的相对路径
#1. from . import pkgone2
print(pkgone2.ceshippone22)
#2.
from.pkgone2 import ceshippone2
print(ceshippone2)
#3.
from .. import pkg_module1
print(pkg_module1.ceshim1)
#4.
from .. pkgtwo import pkgtwo1
print(pkgtwo1.ceshi222)
#5.
from ..pkgtwo.pkgtwo1 import ceshi2222
print(ceshi2222) """
. 当前路径
.. 上一级路径
... 上一级的上一级
.... 上一级的上一级的上一级
..... (这里的点是无限的)
from .......................................... import 模块
"""

最后是在main2.py进行测试,将pkgone1.py文件一行行注释后,然后分5次将注释打开进行测试,并查看结果,理解单入口模式的使用方法

Python 基础之import导包的更多相关文章

  1. 二十五. Python基础(25)--模块和包

    二十五. Python基础(25)--模块和包 ● 知识框架   ● 模块的属性__name__ # my_module.py   def fun1():     print("Hello& ...

  2. 【python3】 解:import导包机制

    模块和包 模块:我们定义的.py结尾的文件就是一个模块,模块中通常定义了类.方法.变量等一系列功能: 包:存放模块的文件夹,含有init.py文件,定义path属性. import语句的作用 impo ...

  3. python中常用的导包的方法和常用的库

    python中常用的导包的方法               导入包和包名的方法:1.import package.module 2.from package.module import  * 例一: ...

  4. python基础之打/解包及运算符与控制流程

    python基础之打/解包及运算符与控制流程 python中的解压缩(即序列类型的打包和解包) python提供了两个设计元祖和其他序列类型的处理的便利,也就是自动打包与自动解包功能,比如: data ...

  5. python基础之import模块导入和包的调用

    模块概念 在Python中,一个.py文件就称之为一个模块(Module).使用模块组织代码,最大的好处是大大提高了代码的可维护性 模块一共三种:python标准库.第三方模块.应用程序自定义模块. ...

  6. Go基础系列:import导包和初始化阶段

    import导入包 搜索路径 import用于导入包: import ( "fmt" "net/http" "mypkg" ) 编译器会根据 ...

  7. python 设置默认的导包路径

    在python中 可以通过 sys 模块添加导包时的搜寻路径, sys.path 返回的是所有默认导包路径的列表(搜索次序从下标为零开始,直到寻找到需要导入的包结束) sys.path.insert( ...

  8. import 导包三种方法

    # -*- coding: utf-8 -*- #python 27 #xiaodeng #导包三种方法 #(常用)完整的导入,也是最基本的方法 import re #自己定义别名,一般情况下尽量少用 ...

  9. Python基础知识思维导图|自学Python指南

    微信公众号[软件测试大本营]回复"python",获取50本python精华电子书. 测试/开发知识干货,互联网职场,程序员成长崛起,终身学习. 现在最火的编程语言是什么?答案就是 ...

随机推荐

  1. LeetCode 编辑距离(DP)

    题目 给定两个单词 word1 和 word2,计算出将 word1 转换成 word2 所使用的最少操作数 . 你可以对一个单词进行如下三种操作: 插入一个字符 删除一个字符 替换一个字符 思路 定 ...

  2. 通过WMI获取网卡MAC地址、硬盘序列号、主板序列号、CPU ID、BIOS序列号

    转载:https://www.cnblogs.com/tlduck/p/5132738.html #define _WIN32_DCOM #include<iostream> #inclu ...

  3. php自动读取文件夹下所有图片

    $path = 'xxxxx';///当前目录$handle = opendir($path); //当前目录while (false !== ($file = readdir($handle))) ...

  4. 我来给你讲清楚Pythony广播

    初学python广播搞的人头大,今天老师上课讲了一下,茅塞顿开,zt老师nb 首先说一下后向纬度(这个后向纬度书里边称作低维),举例:(3,4,5)后向纬度是:3*4*5或4*5或5 向量广播的条件有 ...

  5. cascadia-code 程序员友好字体

    下载地址:https://github.com/microsoft/cascadia-code/releases/download/v1911.21/Cascadia.ttf 下载后右键点击下载的文件 ...

  6. Java后台技术IBATIS入门

    做过.net后台开发的同志一定用过Entity FrameWork,该框架实现了实体Entity到数据库行的映射,通过操作实体DataSet,就能够直接同步修改到数据库.但是Java暂时没有类似的技术 ...

  7. Perl 笔记

    目录 Perl 学习 常用记录 基础 1. 运行perl 2. 字符串 3. 变量 4. 条件 5. 循环 6. 运算符 7. 时间日期 8. 子程序(函数) 9. 引用 10. 格式化输出 11. ...

  8. spring boot properties文件与yaml文件的区别

    编写是没有提示的话在pom中添加依赖,如下: <!-- 配置文件处理器 编写配置时会有提示 --> <dependency> <groupId>org.spring ...

  9. IPSec的链路和设备备份

    链路备份的IPSec VPN和设备备份的IPSec VPN:首先实验的是链路备份的  IPSec VPN,下面是实验拓扑: IP地址配置:R1(Branch):Branch(config-if)#ip ...

  10. ECMAScript 6 和数组的新功能

    Array. @@iterator 返回一个包含数组键值对的迭代器对象,可以通过同步调用得到数组元素的键值对 copyWithin 复制数组中一系列元素到同一数组指定的起始位置 entries 返回包 ...