模块与包.

1. 模块的简介

        python语言:调包侠

1.什么是模块?

        模块就是一系列功能的集合,模块中就是提前写好了很多功能,直接拿来使用

2.为什么要用模块?

        站在巨人的肩膀上,别人写好噩一些功能我们把它下载下来直接用在我们的项目中,大大提高开发效率

3.模块的分类

        1.内置模块(python解释器原来就存在的,在任何位置,任何时间都可以直接使用)

        2.第三方的(别人写好的模块,人家放在网上,去网上下载)

        3.自定义的(我们自己写的模块)

4.模块的存在形式

        #   一共有4中,只需要掌握两种

        1.我们自己写的python代码(.py文件)

        2.包的形式:就是一系列py文件的组合(文件夹)

                #   文件夹内部有一个__init__.py文件

2. 模块的导入方式之import句式

import 模块名        #  导入模块时,只写模块名字,不要写后缀名

'''

        运行当前文件,会导入md文件到此文件中,并且会执行导入文件

       

        导入文件多次,那么,也只会执行一次导入文件中的代码,只需要导入一次即可

'''

'''

        导入文件的时候发生了什么事?

        1.首先会运行执行文件,产生执行文件的全局名称空间

        2.运行导入文件

        3.会产生导入文件的全局名称空间,把导入文件中的名字都丢到全局名称空间中

        4.会执行文件中产生一个名字md指向导入文件的名称空间

'''

如何使用导入模块?

        #     直接使用模块名点变量名,直接使用

3.from...import...句式

from md import money,read1,read2,change

'''

        from...import...句式

                导入模块也会执行导入文件,多次导入也只会执行一次,跟import句式一样

        导入文件的时候发生了什么事?

                1.首先会运行执行文件,产生执行文件的全局名称空间

                2.运行导入文件md

                3.会产生导入文件的全局名称空间,把导入文件中名字都丢到全局名称空间中

                4.还在执行文件中产生一个名字money指向导入文件的名称空间中得money

        如果使用from...import...句式的情况,在执行文件中会出现名字冲突的情况(在执行文件中出现了和导入名字一样的时候)

                #    出现冲突的时候谁近就用谁

                #    一般情况,所有的导入语句都写在文件开头

'''

4.导入语句的其它用法

1.起别名:使用 as

for md import read as tt

import md as ee

2.连续导入

        import time

        import md

        import sys

import time,md,sys

3.通用导入

        from sys import *

5.循环导入

#   在编码过程中,循环导入是不能允许出现的

        如果出现循环导入,请及时更正

6.判断文件类型(执行文件、导入文件)

if __name__=='__main__':

                read()

if __name__=='__main__':

'''

在这个判断里面写的代码,只是以执行文件运行的时候,才会被执行,当被导入文件的时候,不会被运行

'''

7.名字的查找顺序

'''

1.先从内存中查找

2.再从内置模块中查找

3.最后去环境变量sys.path中查找

        #   如果以上都找不到,直接报错

'''

# 以后再给文件名或给模块名起名字的时候,一定不能跟内置模块名冲突

'''如果找不到,那就去sys.path中查找'''

        import sys

        print(sys.path)

以后遇到模块找不到的情况

        1.把模块所在的路径添加到sys.path中

                import sys

                sys.apth.appen(r'当前文件所在路径')

        2.使用from...import...句式

                from aaa.bbb.ccc import m1

                from aaa.bbb.ccc.m1 import f1

                

                f1()

                m1.f1()

8.相对导入和绝对导入

'''在导入模块的时候,模块的查找始终以执行文件所在的路径为准'''

绝对导入:

        它始终是以执行文件所在的sys.path路径为基准查找

相对导入:

        '''

                . (句点符)

                . 代表的是当前路径

                .. 代表的是上一级路径

        '''

#  相对导入可以打破始终以执行文件及准的查找顺序

from .ccc import m2

from .ccc.ddd import m2

只要py文件中出现了相对导入语句( . 开头的语句),那么这个文件就不能当执行文件,只能被导入

9.包的使用

什么是包?

        就是文件夹,其实就是文件夹包含了一些列的py文件(模块)

         #  包就是一系列模块的组合

包和模块有什么区别呢?

        包中有一个特殊文件:__init__.py文件

'''导包其实就是在导包下的__init__.py文件'''

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值