前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >day13- 模块和包

day13- 模块和包

作者头像
似小陈吖
发布2024-04-15 09:15:53
600
发布2024-04-15 09:15:53
举报
文章被收录于专栏:测试那些事

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

1、什么是模块

开始之前,那我们思考下,之前学的过变量,函数属于一个模块吗?

模块呢,就是Python程序,简单来说,就是一个.py的文件,就是属于一个模块

那说明我们之前的函数和变量都不算一个模块,毕竟一个模块可以有很多变量和函数

其实模块是包含变量、函数、类和其他可执行代码的

2、为什么有模块

那为什么要有模块呢?

这里我们通俗点讲,当我们的代码编写很多的时候,如果都写在一个.py文件里,可能会有上千行代码,如果我们排查问题,或者定位具体代码,会带来很多不便

所以我们就需要用到了模块,可以把代码按功能分类, 分别放在不同的.py文件里,这样每个文件中的代码就相对较少

而且最重要的是,我们如果想使用某个模块,只需要导入该模块,就能在其他地方使用该模块的功能代码

所以在我们实际的工程代码中,是肯定分为一个个模块的

小栗子:

在一个.py文件中编写一个say函数,输出打印Helloworld,在另一个.py文件中使用该say函数,打印输出

代码语言:javascript
复制
# 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之间的一个整数

代码语言:javascript
复制
# 导入random模块
import random

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

# 打印随机整数
print(random_integer)

看我们可以直接使用random的模块,那我们实际看下这个random模块吧!

ctrl+鼠标点击random可以看到进入一个random.py文件中,那说明Python官方就已经封装好了这个模块,并且我们Ctrl+shift+减号收回代码,可以看到这里边有很多变量和类还有函数

我们来做下上边的小栗子吧

代码语言:javascript
复制
# hello模块
def say_hello():
    print("Hello!")

在另一个模块中使用hello模块的函数

为什么提示报错了呢?

我们在使用import导入模块的时候,如果要使用,得模块名.函数名或者模块名.变量才可以使用

代码语言:javascript
复制
# 导入hello模块
import hello

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


# 执行结果
Hello!

起别名

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

代码语言:javascript
复制
# 导入hello模块起别名 h
import hello as h

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

# 执行结果
Hello!

导入多个模块

在我们一次性导入多个模块的时候,可以直接使用逗号隔开

代码语言:javascript
复制
import math, random

2、from 模块名 import 成员名

那我们导入模块,还有另外一种方式

比如,我们只需要模块中的一个方法,这样我们就不需要导入该模块, 我们只需要导入模块下中的一个方法

这里还有上边的栗子,我们在使用random模块中用到了random模块中的这个函数,那我们实际来整下:

  • random.random():返回一个介于 0 到 1 之间的随机浮点数。
  • random.randint(a, b):返回一个介于 a 和 b 之间的随机整数(包含 a 和 b)
代码语言:javascript
复制
# 导入随机数模块
from random import randint

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

那我们这样导入后,还想使用random模块的random函数,可以使用吗

代码语言:javascript
复制
# 导入随机数模块
from random import randint

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

print(random())

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

报错了,说random没有定义,所以这种我们就可以使用某个功能模块的某个成员(类、函数、变量)

同样的,这种导入模块方式,也可以起别名和导入多个成员

注意:这里只有1个模块,所以我们只能导入多个成员

起别名

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

代码语言:javascript
复制
# 导入随机数模块
from random import randint as r

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

导入多个成员

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

代码语言:javascript
复制
from random import randint, random

导入所有成员

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

代码语言:javascript
复制
# 导入随机数模块所有成员
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、文件中创建其他模块

代码语言:javascript
复制
# chang模块
def chang():
    print("坤坤会唱")
# tiao 模块
def tiao():
    print("坤坤会跳")

6、导入包

1、import 包名.模块名

代码语言:javascript
复制
# 导入tools.tiao模块
import tools.tiao

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

2、from 包名 import 模块名

代码语言:javascript
复制
# 导入chang模块
from tools import chang

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

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

代码语言:javascript
复制
# 导入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

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-04-14,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1、什么是模块
  • 2、为什么有模块
  • 3、导入模块,使用模块
    • 1、import 模块名
      • 2、from 模块名 import 成员名
      • 4、什么是包
      • 5、创建包
      • 6、导入包
        • 1、import 包名.模块名
          • 2、from 包名 import 模块名
            • 3、from 包名.模块名 import 成员名
            • day13练习
            领券
            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档