【Python编程实践1/3】模块

目录

目标

模块

import

​编辑

代码小结

题目

from...import

随机模块

代码小结

randint函数

骰子大战

choice函数

总结


目标

        拧一颗螺丝,只会用到螺丝刀;但是修一台汽车,需要一整套汽修的工具。函数就像螺丝刀,可以帮助我们解决一类问题。那么当我们遇到很多问题时,难道要东拼西凑各种函数来解决吗?

        其实,对于很多有关联的问题,Python已经提供了标准的解决方案。这些解决方案,都被封装在了一个叫做模块的东西里面。今天,我们先来了解模块的两种导入方式,并介绍一些常见模块的使用方法

模块

        简单来说,函数是对代码的封装;类是对属性和方法的封装。而模块,则可以看成是一堆函数、类和一些代码封装而成的。

        定义:模块是已经写好的Python文件,以.py结尾。模块可以包含函数、类和一些代码,它们之间的功能是相互关联的。

        隐喻:如果把模块比作工具箱,那么函数、类就是里面的螺丝刀、锤子等工具

        Python中的模块,大致分为内置模块(安装Python时自带的模块)第三方模块(有其他开发者所编写,提供给公众免费使用的模块)和自定义模块三种。而我们将主要学习前面两种模块。

        今天,我们以内置模块为例,来讲解模块的基本知识。

        无论是什么模块,都需要先导入再使用。模块有常用的两种导入方式:import

from…import。下面,我们来学习这两种导入方式之间的差异。

import

        前面,我们把模块比作了工具箱,里面有很多函数和类的工具。那么,使用关键词import直接导入模块,就相当于我们导入了整个工具箱。

导入datetime模块,使用模块中的类datetime的now()方法,获取了当前的日期时间。

# 导入模块 datetime
import datetime
# 使用模块datetime中的类datetime的now方法获取当前日期时间,赋值给nowTime
nowTime = datetime.datetime.now()
print(nowTime)

import

关键字import,中文意思是“导入”,表明我们要在这里导入模块。

模块名

一个名为datetime的模块,用于处理日期和时间。

模块中的类

一个类,表明我们在调用datetime模块里的datetime类。datetime类是一个日期时间类,里面提供了一些获取日期时间的方法与属性。注意,很多模块内都有和模块同名的类,注意别混淆了。

datetime类中的方法

一个方法,表明我们要调用的now()方法属于datetime类。该方法,用于获取当前的日期时间

语法格式

导入"工具箱"的缺点,就是需要先从工具箱内拿出合适的工具。因为,类属于模块,方法属于类。所以,调用模块中类的方法时,需要从大到小层层调用。采用句点表示法的格式:模块名.类名.方法名()。示例中,表示使用datetime模块datetime类now()方法。

代码小结

导入模块后,使用模块中的类的方法时,就可以使用这样的格式

        当然,我们获取了当前时间后,还能通过各种属性,来获取对应的年月日时分秒。依次使用对应的英文:year、month、day、hour、minute、second

        示例中,使用.year属性获取了当前日期的年份;使用.month属性获取了当前日期的月份。

题目

获取当前的年份

通过导入 datetime模块,使用 datetime类的now方法,获取当前日期。最后通过year属性,获取当前日期的年份,并格式化输出内容。格式化输出示例:现在是xxxx年。

参考代码

# 导入模块 datetime
import datetime
# 获取当前日期时间,赋值给nowTime
nowTime = datetime.datetime.now()
# 获取当前日期的年份,赋值给nowYear
nowYear = nowTime.year
# 格式化输出:现在是xxxx年
print(f"现在是{nowYear}年")

运行结果

from...import

        其实,在很多时候,我们很难用完工具箱的全部工具。所以,我们在处理问题前,可以先找到合适的工具,再去处理它。也就是说,对于功能强大的模块,我们只需要导入我们要使用的函数或者类就行了。

        此时,就需要用到from...import语句。

        从datetime模块中,导入了类datetime,并使用该类的now()方法,获取了当前的日期时间,并输出。

# 从模块datetime中,导入类datetime
from datetime import datetime
# 使用类datetime的now方法获取当前日期时间,赋值给nowTime
nowTime = datetime.now()
print(nowTime)

两个关键字

from...import,表示我们从模块中导入一个指定的函数或类。示例中,表示从datetime模块中,导入了datetime类。

模块名

关键字from后的datetime是模块,表示要从模块datetime中导入类或函数。

一个类

关键字import后的datetime是一个类,表示我们是从datetime模块里导入了datetime类。

语法格式

因为from...import,相当于从工具箱拿出了工具。所以,当调用模块中的类时,无需附加模块名作为前缀,直接使用类名作为前缀即可,即类名.方法名()。示例中,表示使用了datetime类的now()方法。

        也就是说,使用import导入模块,是导入整个模块,在调用时需要模块前缀。而使用from…import导入模块时,是导入模块的类或函数,在调用时可以直接使用函数或类的方法。以后,我们要使用模块时,可以根据自己的需要选择合适的导入方式。

随机模块

        前面,我们以处理日期时间的datetime模块为例,讲解了模块的两种导入方式。下面,我们再介绍一个常用的内置模块 -- 随机模块

        导入random模块,使用模块中uniform函数,生成了一个0到1随机数并输出。

# 导入模块 random
import random
# 使用模块random中的uniform函数生成随机数,并赋值给randomNum
randomNum = random.uniform(0,1)
print(randomNum)

导入模块

使用import的方式,导入整个随机模块random。

使用模块中的函数

因为导入了整个模块,所以使用其中的函数时,需要模块名作为前缀,即模块名.函数名()的格式。示例中,uniform函数用于产生指定范围随机浮点数。比如,random.uniform(0,1)表示生成0到1的随机浮点数。

代码小结

当我们要导入模块并使用模块的函数时,就可以使用这样的格式:

        random模块内不仅有生成随机浮点数的函数,还有生成随机整数,实现随机抽取等一系列函数。图中展示了random模块中这几个常用的函数。

        下面,我们再来简单介绍下randintchoice函数的用法。

randint函数

        random模块的randint函数,可以产生指定范围的随机整数。整数的范围,由randint函数中的参数决定。示例中,random.randint(1,7)表示生成1到7的随机整数,包括整数1和7。

骰子大战

通过关键字import导入random模块。

分两次使用该模块下的randint()函数,生成1到6之间的随机整数。

第一次,将结果赋值给变量player,作为玩家的点数;

第二次,将结果赋值给变量computer,作为电脑的点数。

最后通过if-elif-else语句判断玩家和电脑的输赢:

如果,player大于computer,则输出"玩家胜利,电脑弱爆了"

如果,player等于computer,则输出"平局,再来一盘"

否则,输出"电脑胜利,决战到天亮!"

参考代码

# 导入模块 random
import random
# 生成1到6的随机整数,赋值给player
player = random.randint(1,6)
# 生成1到6的随机整数,赋值给computer
computer = random.randint(1,6)print(f"玩家丢出{player}点")
print(f"电脑丢出{computer}点")# 通过if-elif-else语句判断玩家和电脑的输赢
if player > computer:print("玩家胜利,电脑弱爆了")
elif player == computer:print("平局,再来一盘")
else:print("电脑胜利,决战到天亮!")

运行结果1结果不止1种

运行结果2结果不止1种

choice函数

        random模块的choice函数,可以从序列中随机选取一个元素。示例中,random.choice(option)表示从列表option中,随机选取一个元素。

        其实,无论是内置模块,还是第三方模块,导入的方式都是一样的。今天,我们使用的内置模块,是Python自带的,具有较高的通用性。

        下次,我们将进一步学习由个人组织开发,个性化较高的第三方模块

总结

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/831640.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python项目==一个web项目,配置模板指定文件清洗规则,调用模板规则清洗文件

代码地址 一个小工具。 一个web项目,配置模板指定文件清洗规则,调用模板规则清洗文件 https://github.com/hebian1994/csv-transfer-all 技术栈: SQLite python flask vue3 elementplus 功能介绍: A WEB tool for cleaning…

JavaScript:Web APIs(三)

本篇文章的内容包括: 一,事件流 二,移除事件监听 三,其他事件 四,元素尺寸与位置 一,事件流 事件流是什么呢? 事件流是指事件执行过程中的流动路径。 我们发现,一个完整的事件执行…

Delta lake with Java--利用spark sql操作数据1

今天要解决的问题是如何使用spark sql 建表,插入数据以及查询数据 1、建立一个类叫 DeltaLakeWithSparkSql1,具体代码如下,例子参考Delta Lake Up & Running第3章内容 import org.apache.spark.sql.SaveMode; import org.apache.spark.…

区域文本提示的实时文本到图像生成;通过一致性自注意力机制的视频生成工具保持视频的一致性;专门为雪佛兰汽车设计的客服聊天机器人

✨ 1: StreamMultiDiffusion StreamMultiDiffusion是首个基于区域文本提示的实时文本到图像生成框架,实现了高速且互动的图像生成。 StreamMultiDiffusion 旨在结合加速推理技术和基于区域的文本提示控制,以克服之前解决方案中存在的速度慢和用户交互性…

约瑟夫问题新解法

前言 又碰到了约瑟夫问题,这样的题目本来用环形链表模拟的话就能做出来。然而,最近新学习了一种做法,实在是有点震惊到我了。无论是思路上,还是代码量上,都是那么的精彩。就想也震惊一下其他人。谁能想到原来模拟出来四…

C/C++程序设计实验报告综合作业 | 小小计算器

本文整理自博主本科大一《C/C程序设计》专业课的课内实验报告,适合C语言初学者们学习、练习。 编译器:gcc 10.3.0 ---- 注: 1.虽然课程名为C程序设计,但实际上当时校内该课的内容大部分其实都是C语言,C的元素最多可能只…

深度解析 Spring 源码:探寻Bean的生命周期

文章目录 一、 Bean生命周期概述二、Bean生命周期流程图三、Bean生命周期验证3.1 代码案例3.2 执行结果 四、Bean生命周期源码4.1 setBeanName()4.2 setBeanFactory()4.3 setApplicationContext()4.4 postProcessBeforeInitialization()4.5 afterPropertiesSet()4.6 postProces…

力扣刷题第1天:消失的数字

大家好啊,从今天开始将会和大家一起刷题,从今天开始小生也会开辟新的专栏。😜😜😜 目录 第一部分:题目描述 第二部分:题目分析 第三部分:解决方法 3.1 思路一:先排序…

十、多模态大语言模型(MLLM)

1 多模态大语言模型(Multimodal Large Language Models) 模态的定义 模态(modal)是事情经历和发生的方式,我们生活在一个由多种模态(Multimodal)信息构成的世界,包括视觉信息、听觉信息、文本信息、嗅觉信…

MySQL技能树学习——数据库组成

数据库组成: 数据库是一个组织和存储数据的系统,它由多个组件组成,这些组件共同工作以确保数据的安全、可靠和高效的存储和访问。数据库的主要组成部分包括: 数据库管理系统(DBMS): 数据库管理系…

MySQL45讲(一)(40)

回顾binlog_formatstatement STATEMENT 记录SQL语句。日志文件小,节约IO,但是对一些系统函数不能准确复制或不能复制,如now()、uuid()等 在RR隔离级别下,binlog_formatstatement 如果执行insert select from 这条语句是对于一张…

OpenCV如何为等值线创建边界旋转框和椭圆(63)

返回:OpenCV系列文章目录(持续更新中......) 上一篇:OpenCV 为轮廓创建边界框和圆(62) 下一篇:OpenCV的图像矩(64) 目标 在本教程中,您将学习如何: 使用 OpenCV 函数 cv::minAreaRect使用 OpenCV 函数 cv::fitEllipse cv::min…

Gradle 进阶学习 之 build.gradle 文件

build.gradle 是什么? 想象一下,你有一个大型的乐高项目,你需要一个清单来列出所有的乐高积木和它们如何组合在一起。在软件开发中,build.gradle 就是这个清单,它告诉计算机如何构建(组合)你的软…

这是一个简单的照明材料网站,后续还会更新

1、首页效果图 代码 <!DOCTYPE html> <html><head><meta charset"utf-8" /><title>爱德照明网站首页</title><style>/*外部样式*/charset "utf-8";*{margin: 0;padding: 0;box-sizing: border-box;}a{text-dec…

开源版本管理系统的搭建一:SVN

作者&#xff1a;私语茶馆 1.Windows搭建SVN版本管理系统 1.1.SVN概要和组成 背景介绍 Svn是一个开源版本管理系统&#xff0c;由CollabNet公司于2000年发布&#xff0c;23年12月发布最新版本Apache Subversion 1.14.3。官方网站&#xff1a;Apache Subversion。 Svn可以直…

G1 - 生成对抗网络(GAN)

&#x1f368; 本文为&#x1f517;365天深度学习训练营 中的学习记录博客&#x1f356; 原作者&#xff1a;K同学啊 目录 理论知识生成器判别器基本原理 环境步骤环境设置数据准备模型设计模型训练模型效果展示 总结与心得体会 理论知识 生成对抗网络&#xff08;Generative …

U盘惊现“USBC乱码”?别急,数据恢复有妙招!

近日&#xff0c;不少用户反馈在将U盘插入电脑后&#xff0c;出现了一个令人困惑的问题&#xff1a;U盘里的文件或文件夹名突然变成了无法识别的乱码&#xff0c;甚至整个U盘的文件系统显示为“USBC乱码”。面对这种情况&#xff0c;用户往往感到无从下手&#xff0c;担心重要数…

【知识加油站】——机电产品数字孪生机理模型构建

明确一种多领域、多层次、参数化、一致性的机电一体化装备数字孪生机理模型构建准则&#xff01; 关键词英文简称&#xff1a; 数字孪生&#xff1a;DT物联网&#xff1a;IoT网络物理系统&#xff1a;CPS高级架构&#xff1a;HLA统一建模语言&#xff1a;UML数控机床&#xf…

webpack打包工具

目录 1. yarn包管理器 1.1 yarn 是什么, 有什么用? 1.2 yarn的使用 ​​​​​​2. webpack基本概述 2.1 webpack是什么&#xff1f; 2.2 什么是打包&#xff1f; 2.3 webpack能做什么&#xff1f; 3. webpack基本使用步骤 3.1 webpack基本使用步骤 3.2 package.jso…

阿里低代码引擎学习记录

官网 一、关于设计器 1、从设计器入手进行低代码开发 设计器就是我们用拖拉拽的方法&#xff0c;配合少量代码进行页面或者应用开发的在线工具。 阿里官方提供了以下八个不同类型的设计器Demo&#xff1a; 综合场景Demo&#xff08;各项能力相对完整&#xff0c;使用Fusion…