首页 > 其他分享 >day13- 模块和包

day13- 模块和包

时间:2024-04-14 21:11:57浏览次数:12  
标签:函数 random 导入 模块 day13 import hello

这节我们学习模块和包,这块呢,我们在实际使用的过程中,首先保证自己会用就可以,其次也可以加深对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          

标签:函数,random,导入,模块,day13,import,hello
From: https://www.cnblogs.com/nuomituan/p/18134685

相关文章

  • ansible常用模块 --摘抄 chaoge
    摘自:https://www.cnblogs.com/sxy-blog/p/17543471.htmlansible核心内容(模块学习)ansible执行命令结果(状态颜色)绿色:命令以用户期望的执行了,但是状态没有发生改变;黄色:命令以用户期望的执行了,并且状态发生了改变;紫色:警告信息,说明ansible提示你有更合适的用法;红色:命令错误,执......
  • 4-WIFI&蓝牙(ESP32)转CAN或RS485总线&串口TTL模块-CSDK-设备作为TCP客户端,实现上位机
    <p><iframename="ifd"src="https://mnifdv.cn/resource/cnblogs/ESP32_CAN"frameborder="0"scrolling="auto"width="100%"height="1500"></iframe></p> 说明这节设备作为TCP客户端,连接上位......
  • Python常用模块-20个常用模块总结
    目录time模块datetime模块random模块os模块sys模块json和pickle模块hashlib和hmac模块logging模块numpy模块pandas模块matplotlib模块re模块typing模块collections模块pathlib模块shutil模块xml模块subprocess模块configparser模块Python常用模块小结time模块......
  • 3-WIFI&蓝牙(ESP32)转CAN或RS485总线&串口TTL模块-CSDK--设备作为TCP服务器,实现上位
    <p><iframename="ifd"src="https://mnifdv.cn/resource/cnblogs/ESP32_CAN"frameborder="0"scrolling="auto"width="100%"height="1500"></iframe></p> 说明这节设备作为TCP服务器,上位机T......
  • 14.lua模块(多文件)
    导入其他模块用:require("文件路径,注意去掉后缀");小括号本身可以省略,即:require"文件路径,注意去掉后缀名"如:现在有如下文件模块model.lua,代码如下:calArea={}calArea.pi=3.14--计算三角形面积functioncalArea.triangle(w,h) return0.5*w*hend--计算矩形......
  • CTFshow-Web入门模块-爆破
    CTFshow-Web入门模块-爆破by故人叹、web21考察点:burpsuite使用、自定义迭代器使用题目提供了字典,要求登录并提示了爆破,使用burpsuite抓包并操作:(1)用户名一般为admin,密码随意输,抓包并发送给爆破模块。可以看到Basic后有一段base64编码,解码得到用户名:密码的格式,证明我们之......
  • CTFshow-Web入门模块-信息搜集writeip
    CTFshow-Web入门模块-信息搜集writeipby故人叹、信息搜集web1考察点:查看源码题目提示:”开发注释未及时删除“,页面源代码中可能有东西,查看页面源代码发现flag。总结查看源码的几种方式:F12打开源代码快捷键Ctrl+u在url前面加上view-source:浏览器右上角选项中的Web开......
  • Python中paramiko 模块的用法
    paramiko是一个用Python语言编写的、遵循SSH2协议、支持以加密和认证方式进行连接远程服务器的模块。改模块可以对远程服务器进行一些命令或文件操作。1.安装使用pip3安装paramiko模块pip3installparamiko连接远程服务器paramiko模块连接远程服务器可以使用远程......
  • node笔记1:vue+node+mongodb+studio 3T创建登录模块
    1.创建node项目:expressnodenpmipackage.json修改如下代码,便于每次修改代码都可以刷新页面:"scripts":{"start":"node-dev./bin/www"}2.如果配合node设置反向代理;3.添加mongoose模块提供数据库信息:npmimongoose--save4.以登录功能模块为例,项目文件如下:model......
  • 3568F-物联网模块开发案例
     ......