python——模块导入

一、模块

1.1 模块 module

定义:包含一系列数据,函数,类的文件,通常以.py结尾

1.1.1 模块导入

三种模块导入方法:

1. import 模块名

        将某个模块的整体导入到当前模块中

2. from 模块名 import 成员

        将模块的指定成员导入到当前模块作用域中

3. from 模块名 import *

        将指定模块的所有成员导入到当前模块作用域中

注意:导入模块和本模块中变量/函数不能重名,如果重名需要重新命名,代码如下

from 模块名 import 变量名 as 新名字

代码操作如下:

先在同一个项目下,创建多个.py文件,我们先从同一目录下简单情况开始。

在导入模块时,会自动先运行一遍,比如导入demo1时,demo1中第二行语句就会先运行。

接下来我们尝试一下第二种方法 from 模块名 import 成员 

再尝试一下第三种方法 from 模块名 import *,一次性导入所有成员,而且调用的时候,不用像方法一加模块名

遇到不同模块中存在同名函数或者函数名过于冗余,便于记忆,可以更改名字。

这里,f1 --> func;   f2 --> fund

1.1.2 隐藏成员

模块中以下划线开头的属性不会被导入,称为隐藏成员,注意:隐藏成员只针对第三种导入模块方法,对其他两种方法不影响。

唯独第三种方法无法调用隐藏属性,出现报错。 

1.1.3 模块变量

  1. __file__:获取模块对应的文件路径名,该路径是绝对路径,也就是从操作系统的根开始。
  2. __name__:模块自身的名字,可以判断是否为主模块。

注意:当此模块作为主模块运行的时候,__name__绑定的是__main__;当模块被其他模块导入时,绑定的是模块名。

此时,我们在demo8中导入demo1模块,并且运行demo8,就可以比较__name__的区别。

import demo1

# 若不是以该模块为主模块运行,则不重要的代码可以不运行
if __name__ == 'main':
    print('主程序')

1.1.4 模块分类

 类型

1.内置模块,可以直接使用,比如max(),sum()等

2.标准库模块,安装python的时候已经安装可以直接导入使用,如import time,import random。

3.第三方模块,通常是开源的,需要自己安装。

        通常在命令窗口或者terminal窗口中使用 pip install 模块名,但是由于pip默认从官网安装,下载速度回比较慢。

        我们可以进行换源安装。使用 pip install 模块名 -i 国内源的地址

                                                        pip list 查询所有安装的库
                                                        pip install 库名 安装库
                                                        pip unistall 库名 删除这个库

PIP国内源
1)清华大学
PIP源地址:https://pypi.tuna.tsinghua.edu.cn/simple
2)阿里云
PIP源地址:http://mirrors.aliyun.com/pypi/simple/
3)豆瓣
PIP源地址:http://pypi.douban.com/simple/
4)中国科学技术大学
PIP源地址:http://pypi.mirrors.ustc.edu.cn/simple/
5)华中科技大学
PIP源地址:http://pypi.hustunique.com/

4.用户自己编写的模块(可以作为别人的第三方模块)

我们先看一下自己原本的库,在python的界面下方选择terminal并输入pip list,目前有pip和setuptool两个库文件。

 接下来输入pip install pygame -i 国内源地址,下载一个pygame的库,稍等几分钟就可以看到成功安装了pygame-2.5.2的库。

1.2 包 package

义:将模块以文件夹的形式进行分组管理,其实就是管理模块的,目的是为了结构清晰而发明。

1.2.1 包的导入

语法:

from 包名.模块名 import 成员

首先,我们要看清楚每个层级都有哪些文件、包。

# 导入的模块、包不属于同级路径时
# 在demo9中导入package01包中的模块m01中的f1函数
from package01.m01 import f1

f1()  # m01 ==> f1


# 也可以选择导入模块m01
import package01.m01

package01.m01.f1()  # m01 ==> f1

 
# 前缀太长,还可以重命名
import package01.m01 as p1

p1.f1()  # m01 ==> f1
# 多层包也要逐级
from package01.package02.m02 import f2

f2()  # m02 ==> f2

1.2.2 _ init _.py

 init 是包内必须存放的文件,文件会在包加载时被自动调用。

把一些相同的类似功能的模块放在一个文件夹里面,进行统一管理,在导入这个包里面的模块的时候,__init__.py的代码也会自动执行,所以可以利用这个机制,在__init__.py里面写上关于这个包内模块的使用说明。

我们导入同级别包下面的别的模块,也同样会输出init的内容。

# 导入包的时候会自动运行一遍__init__.py
# 运行demo9.py
from package01.m01 import f1

f1()

========
这是package01中的init
m01 ==> f1

二 常用模块

2.1 sys (system的缩写)

sys.modules
获取当前程序中引入的所有模块(返回的是字典类型,字典的key是模块名,字典的value是模块对象)
sys.path
返回一个列表,列表中保存的是模块的搜索路径
sys.exit()
退出程序
import sys
sys.modules # 获取当前程序中引入的所有模块
print(sys.modules)  # 单行输出字典
import sys
sys.modules # 获取当前程序中引入的所有模块

import pprint # pprint对打印的数据做简单的格式化
pprint.pprint(sys.modules)

2.2 os

os是系统交互模块,python指定cmd指令。

os.system()可以用来执行操作系统的命令,主要用来写cmd的指令
os.getcwd()获取当前python的工作目录
os.mkdir('文件名')在当前目录下创建文件夹,括号里面是文件夹名
os.rmdir()在当前目录下删除文件夹,括号里面是文件名(只能删除空文件夹)
os.remove('文件名')删除文件
os.rename('A.py', 'B.py')括号里面是两个参数,第一个是原名,第二个是新名
os.path.exists(path='同级目录下的文件')判断文件是否存在
os.path.isfile(path='同级目录下的文件')判断是否为文件

2.3 time

time.time()UTC时间 :1970年开始到现在所经过的秒数
time.localtime()time.struct_time(tm_year=2024, tm_mon=4, tm_mday=24, tm_hour=23, tm_min=18, tm_sec=44, tm_wday=2, tm_yday=115, tm_isdst=0)
time.sleep(时间)休眠,括号里面是休眠的时间(秒)
time.strftime('格式',要转换的时间)%Y 年
%m 月
%d 日
%H 时
%M 分
%S 秒
import time
print(time.strftime('%Y-%m-%d %H:%M:%S', time.localtime()))

=======
2024-04-24 23:21:08

2.4 random

random.random()生成一个0-1的随机数
random.randint(start,end)在起点和终点的范围内随机一个整数,左闭右闭区间
random.choice(['A', 'B', 'C'])随机生成列表里面的一个元素
random.uniform(1, 10)生成随机范围内的小数,参数是开始值和结束值
random.shuffle(序列名)打乱序列类型的顺序

2.5 json

json是一种文件存储格式,主要用于存储。

序列数据:机器码(底层的0和1)

反序列数据:程序员写的看的代码

序列化之后存储的是字符串类型

# 序列化,序列化结果是 字符串类型
import json

json_data = json.dumps([1,2,'光学','土木'])
print(json_data)  # [1, 2, "\u5149\u5b66", "\u571f\u6728"]
print(type(json_data))  # <class 'str'>

# 反序列化
ori_data = json.loads(json_data)  # 反序列化
print(ori_data)  # [1, 2, '光学', '土木']
print(type(ori_data))  # <class 'list'>

 

  • 39
    点赞
  • 47
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值