模块的简介及其使用

目录

一、模块的简介

1、什么是模块

2、为什么要用模块

3、模块的分类

4、模块存在的形式

二、模块的使用

1、import句式

2、from...import...句式 

3、导入语句的其他用法

(1)起别名

(2)连续导入

(3)通用导入

4、循环导入

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


一、模块的简介

1、什么是模块

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

2、为什么要用模块

站在巨人的肩膀上,别人写好的一些功能我们把它下载下来直接用在我们自己的项目中,大大提高开发效率,别人已经开发好了,给它下载下来,直接挪到我们自己的python文件中使用就行了。

3、模块的分类

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

             eg:time

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

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

4、模块存在的形式

一共有4种形式,只需要掌握2种

(1)、我们自己写的python代码(.py文件)
             一个py文件就是一个模块

(2)、包的形式:就是一系列py文件的组合(文件夹)
             文件夹内部有一个__init__.py文件

以后我们再开发一些复杂的功能的时候,就可以想想或者查查有没有别人已经写好了,直接下载下来使用,当你遇到一个你不会的技术栈的时候,一般情况都有人开发好了。

二、模块的使用

1、import句式

import md -------->  导入模块的时候,只写模块名字,不要写后缀名字

学习模块的时候一定要弄清楚:谁是执行文件,谁是导入文件?
运行当前文件,会导入md文件到此文件中,并且会执行导入文件
导入文件多次,那么,也只会执行一次导入文件中得代码,只需要导入一次即可

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

        1. 首先会运行执行文件,产生执行文件的全局名称空间
        2. 运行导入文件
        3. 会产生导入文件的全局名称空间,把导入文件中的名字都丢到全局名称空间中
        4. 会在执行文件中产生一个名字md指向导入文件的名称空间 

在执行文件中如何使用导入文件中得数据
直接使用模块名字点变量名 直接使用 

import md
money = 999
print(md.money)  # 1000 知名道姓的调用,不会乱


def read1():
	print('read1')  # md 1000


md.read1()

money = 888
md.change()   # 0
print(money)  # 888
# md文件
print('from the md.py')
money = 1000


def read1():
    print('md', money)


def read2():
    print('md模块')
    read1()


def change():
    global money
    money = 0
    print(money)

2、from...import...句式 

from md import money, read1, read2, change  # from the md.py

 from...import...句式

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

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

        1. 首先会运行执行文件,产生执行文件的全局名称空间
        2. 运行导入文件md
        3. 会产生导入文件的全局名称空间,把导入文件中的名字都丢到全局名称空间中
        4. 会在执行文件中产生一个名字money指向导入文件的名称空间中得money

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

出现冲突的时候离谁近用谁的 

from md import money, read1, read2, change
money = 999
print(money)
from md import money
print(money)

print(read1)
read2()
change()
def read1():
    print('from read1')
read1()

3、导入语句的其他用法

(1)起别名
import md as m # 为导入的模块md在当前位置起别名m,以后再使用时就用这个别名m
m.x
m.get()

# 还可以为导入的一个名字起别名
from md import get as get_x
get_x()
(2)连续导入
import md
import time
import os
import sys
    
import md, time, os, sys
(3)通用导入
from md import *
read1()
change()


__all__ = ['money', 'read1', 'change']

4、循环导入

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

如果你的代码出现了循环导入问题,那就是你的代码设计不合理,及时更正。

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

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

if __name__ == '__main__': # md
    read2()

你可能感兴趣的:(python,开发语言)