day13- 模块和包

这节我们学习模块和包,这块呢,我们在实际使用的过程中,首先保证自己会用就可以,其次也可以加深对Python代码的理解。

1、什么是模块

开始之前,那我们思考下,之前学的过变量,函数属于一个模块吗?
模块呢,就是Python程序,简单来说,就是一个.py的文件,就是属于一个模块
那说明我们之前的函数和变量都不算一个模块,毕竟一个模块可以有很多变量和函数
 
其实模块是包含变量、函数、类和其他可执行代码的
 

2、为什么有模块

那为什么要有模块呢?
 
这里我们通俗点讲,当我们的代码编写很多的时候,如果都写在一个.py文件里,可能会有上千行代码,如果我们排查问题,或者定位具体代码,会带来很多不便
 
所以我们就需要用到了模块,可以把代码按功能分类, 分别放在不同的.py文件里,这样每个文件中的代码就相对较少
而且最重要的是,我们如果想使用某个模块,只需要导入该模块,就能在其他地方使用该模块的功能代码
 
所以在我们实际的工程代码中,是肯定分为一个个模块的
 
小栗子:
在一个.py文件中编写一个say函数,输出打印Helloworld,在另一个.py文件中使用该say函数,打印输出
# hello模块
def say_hello():
    print("Hello!")
 

3、导入模块,使用模块

上边的小栗子,我们如何在另一个.py文件使用第一个.py文件中的函数呢,这就需要导入模块

1、import 模块名

 
先看下官方解释:import 是用于导入模块的关键字。它允许你在当前的 Python 程序中引入其他模块中定义的对象(如变量、函数和类),以便在程序中使用它们
 
那python中也有一些标准库模块,我们在实际中也可以直接导入使用,我们来看一下random 标准库模块
 
random 是 Python 标准库中的一个模块,提供了生成随机数的功能。它包含了多种函数
  • random.random():返回一个介于 0 到 1 之间的随机浮点数。
  • random.randint(a, b):返回一个介于 a 和 b 之间的随机整数(包含 a 和 b)
 
简单看下这个模块的介绍,我们来做一个题:随机生成1到100之间的一个整数
# 导入random模块
import random

# 生成一个1-100之间的随机整数
random_integer = random.randint(1, 100)

# 打印随机整数
print(random_integer)

 

看我们可以直接使用random的模块,那我们实际看下这个random模块吧!
ctrl+鼠标点击random可以看到进入一个random.py文件中,那说明Python官方就已经封装好了这个模块,并且我们Ctrl+shift+减号收回代码,可以看到这里边有很多变量和类还有函数
 
我们来做下上边的小栗子吧
# hello模块
def say_hello():
    print("Hello!")

 

 
在另一个模块中使用hello模块的函数
为什么提示报错了呢?
我们在使用import导入模块的时候,如果要使用,得模块名.函数名或者模块名.变量才可以使用
# 导入hello模块
import hello

# 调用hello模块的say_hello函数
hello.say_hello()


# 执行结果
Hello!

 

 
起别名
在导入模块的时候,我们还可以用as给模块起别名来使用
# 导入hello模块起别名 h
import hello as h

# 必须使用起别名的模块名
h.say_hello()  

# 执行结果
Hello!
 
导入多个模块
在我们一次性导入多个模块的时候,可以直接使用逗号隔开
import math, random
 

2、from 模块名 import 成员名

那我们导入模块,还有另外一种方式
比如,我们只需要模块中的一个方法,这样我们就不需要导入该模块, 我们只需要导入模块下中的一个方法
 
这里还有上边的栗子,我们在使用random模块中用到了random模块中的这个函数,那我们实际来整下:
  • random.random():返回一个介于 0 到 1 之间的随机浮点数。
  • random.randint(a, b):返回一个介于 a 和 b 之间的随机整数(包含 a 和 b)
 
# 导入随机数模块
from random import randint

# 生成一个1-10之间的随机整数
print(randint(1, 10))

 

那我们这样导入后,还想使用random模块的random函数,可以使用吗
# 导入随机数模块
from random import randint

# 生成一个1-10之间的随机整数
print(randint(1, 10))

print(random())

# 执行结果
NameError: name 'random' is not defined

 

报错了,说random没有定义,所以这种我们就可以使用某个功能模块的某个成员(类、函数、变量)
 
同样的,这种导入模块方式,也可以起别名和导入多个成员
注意:这里只有1个模块,所以我们只能导入多个成员
 
起别名
在导入模块的时候,我们还可以用as给模块起别名来使用
# 导入随机数模块
from random import randint as r

# 生成一个1-10之间的随机整数
print(r(1, 10))

 

 
导入多个成员
在我们一次性导入多个成员的时候,可以直接使用逗号隔开
from random import randint, random

 

 
导入所有成员
from...import 语法时,可以使用星号一次导入指定模块内的所有成员
# 导入随机数模块所有成员
from random import *

# 生成一个1到10之间的随机整数
randint(1, 10)
# 生成一个0到1之间的随机数
random()

 

4、什么是包

模块还没记住啊,又出现了一个包,模块说的高大上,其实就是一个.py文件,那包也是一样
 
包呢,其实就是一个文件夹,一个目录
这块呢,我们可以在pycham中创建一个看看
发现这里有两个,一个是目录,一个是Python软件包,这里啊,其实工具已经给我们做了区分
我们先创建一个目录看看
在创建一个包看看
那很明显,包中多了一个__init__.py文件
 
其实呢,我们放入一个一个名为 init.py 的特殊文件,我们就告诉了Python这是一个包,可以放各个模块的代码,而如果是文件夹,那我们放入其他非代码的文件,这样就很好的做了区分
 
 

5、创建包

1、创建一个文件夹
2、文件夹中创建一个__init__文件
3、文件中创建其他模块
 
# chang模块
def chang():
    print("坤坤会唱")
# tiao 模块
def tiao():
    print("坤坤会跳")

 

6、导入包

1、import 包名.模块名

# 导入tools.tiao模块
import tools.tiao

# 调用tools.tiao模块的tiao函数
tools.tiao.tiao()
 

2、from 包名 import 模块名

# 导入chang模块
from tools import chang

# 调用chang模块的chang函数
chang.chang()
 

3、from 包名.模块名 import 成员名

# 导入tiao函数
from tools.tiao import tiao

# 调用tiao函数
tiao()
 

day13练习

初级:
1.导入模块的方式有几种?分别使用一下
2.导入包的方式有几种,分别使用一下
 
中级:
1.创建一个名为 my_1 的模块,在其中定义一个函数 hello(name),用于打印出"Hello, [name]!"的问候语
然后编写一个main模块,在主程序中导入 my_1 并调用 hello 函数来问候你的名字
2.创建一个名为 lianxi 的包,其中包含一个模块 chuli_string。在 chuli_string中定义一个函数 chuli_string(text),用于将给定字符串反转并返回结果
然后编写一个main模块,在main模块导入 lianxi .chuli_string 并调用 chuli_string函数,将字符串 "Hello, World!" 反转并打印结果。
 
高级
1.生成100个8位数的uid数,100个数保证不相同,比如83423443为一个uid
 
 
 
 
 
posted @ 2024-04-14 20:59  似小陈ya  阅读(6)  评论(0编辑  收藏  举报