Python学习(五)——配套《PyTorch深度学习实战》

news/2025/1/7 6:25:05/文章来源:https://www.cnblogs.com/jzzg/p/18653710

1. Python的流程控制

tips:我使用的Python3.9版本,if、else是要加:的
Python的流程控制主要通过条件语句和循环语句来实现,它们允许程序根据特定的条件执行不同的代码块。以下是Python中常用的流程控制结构:

条件语句(if-elif-else)

条件语句允许程序根据条件的真假来选择执行不同的代码块。

x = 10
if x > 5:print("x 大于 5")
elif x == 5:print("x 等于 5")
else:print("x 小于 5")

循环语句

循环语句允许重复执行一段代码,直到满足某个条件。

for循环

for循环用于遍历序列(如列表、元组、字符串)或任何可迭代对象。

fruits = ["apple", "banana", "cherry"]
for fruit in fruits:print(fruit)

while循环

while循环会持续执行,直到指定的条件变为假。

count = 1
while count <= 5:print(count)count += 1

循环控制语句

在循环中,有时需要提前退出循环或跳过当前迭代。

break

break语句用于立即终止循环。

for i in range(1, 10):if i == 5:breakprint(i)

continue

continue语句用于跳过当前迭代的剩余代码,并继续下一次迭代。

for i in range(1, 10):if i % 2 == 0:continueprint(i)

条件表达式(三元运算符)

Python 3.9+ 引入了条件表达式,也称为三元运算符,它允许在一行内完成条件判断和赋值。

result = "positive" if x > 0 else "non-positive"

异常处理

异常处理允许程序在遇到错误时采取特定的处理措施,而不是直接崩溃。

try:# 尝试执行的代码result = 10 / 0
except ZeroDivisionError:# 当发生除以零的错误时执行的代码print("除数不能为零")
finally:# 无论是否发生异常都会执行的代码print("这是 finally 块")

这些流程控制结构是Python编程的基础,它们使得程序能够根据不同的条件和情况灵活地执行代码。


2. Python中调用参数时对默认参数的重新定义

在Python中,函数可以定义带有默认值的参数,这被称为默认参数。当你调用一个函数时,你可以对这些默认参数进行重新定义,以改变函数的行为。以下是如何定义和调用带有默认参数的函数,以及如何重新定义这些参数的示例:

定义带有默认参数的函数

def greet(name, message="Hello"):print(f"{message}, {name}!")

在这个例子中,greet函数有两个参数:namemessagemessage参数有一个默认值"Hello"

调用函数时不重新定义默认参数

greet("Alice")  # 输出: Hello, Alice!

在这个调用中,我们没有提供message参数,所以它使用默认值"Hello"

调用函数时重新定义默认参数

greet("Bob", "Good morning")  # 输出: Good morning, Bob!

在这个调用中,我们提供了一个新的message"Good morning",这将覆盖函数定义中的默认值。

注意事项

  1. 参数顺序:在调用函数时,你可以按顺序提供参数,也可以通过参数名来指定参数值。如果使用参数名,可以不按顺序提供参数。

  2. 只覆盖特定默认参数:你可以只覆盖某些默认参数,而其他参数仍然使用默认值。

def introduce(name, prefix="Mr.", suffix="Esq."):print(f"{prefix} {name} {suffix}")introduce("John", suffix="PhD")  # 输出: Mr. John PhD
  1. 不可变默认参数:默认参数是不可变的,这意味着如果你使用可变类型(如列表或字典)作为默认参数,可能会遇到意外的行为。例如,如果你在函数内部修改了这个默认参数,这个修改将会影响到后续的函数调用。
def append_to_list(element, my_list=[]):my_list.append(element)return my_listprint(append_to_list(1))  # 输出: [1]
print(append_to_list(2))  # 输出: [1, 2],这可能会让你意外,因为列表被修改了

为了避免这个问题,可以提供一个不可变值作为默认参数,并在函数内部创建一个新的可变对象。

def append_to_list(element, my_list=None):if my_list is None:my_list = []my_list.append(element)return my_list

通过这种方式,每次调用函数时都会创建一个新的列表,从而避免了意外的副作用。


3. 这个*是什么意思

gg
在Python中,* 用于函数定义中的参数,表示可变参数(Variable arguments)。具体来说,*ys 表示函数可以接受任意数量的额外参数,这些参数会被打包成一个元组(tuple)。

在你提供的函数定义中:

def add(x, *ys):print(x, ys)
  • x 是一个固定参数,调用函数时必须提供这个参数。
  • *ys 是一个可变参数,它允许你传递任意数量的额外参数给函数。这些参数在函数内部以元组的形式存在。

例如,你可以这样调用这个函数:

add(1, 2, 3, 4)

这将输出:

1 (2, 3, 4)

在这里,1x 的值,而 2, 3, 4 被打包在元组 (2, 3, 4) 中,作为 ys 的值。

这种可变参数的设计使得函数更加灵活,能够处理不同数量的输入参数。在函数内部,你可以通过遍历 ys 元组来访问这些额外的参数。例如,如果你想将 xys 中的所有元素相加,可以这样做:

def add(x, *ys):total = xfor y in ys:total += yprint(total)add(1, 2, 3, 4)  # 输出 10

这样,无论传入多少个额外的参数,函数都能正确地将它们与 x 相加。


4. 图中的用法

ff
在Python中,while True: 是一个无限循环的语法结构,它会让循环体内的代码一直执行,直到遇到break语句或者程序被外部因素中断。这个结构常用于需要持续运行直到满足特定条件的情况。

以下是while True:循环的基本用法:

while True:# 循环体内的代码# ...if some_condition:break  # 当满足某个条件时退出循环

在这个循环中,some_condition 是一个需要定义的条件,当这个条件被满足时,break语句会执行,从而退出循环。如果没有break语句,循环将无限进行下去。

如果你需要从图片中提取文本,你可以使用光学字符识别(OCR)技术。Python中有一个流行的OCR库叫做pytesseract,它可以与Tesseract OCR引擎一起使用来提取图片中的文本。以下是一个使用pytesseract提取图片文本的基本示例:

from PIL import Image
import pytesseract# 确保你已经安装了Tesseract OCR并且设置了路径
# pytesseract.pytesseract.tesseract_cmd = r'路径到你的Tesseract可执行文件'# 打开图片文件
image = Image.open('path_to_your_image.png')# 使用pytesseract提取文本
text = pytesseract.image_to_string(image)print(text)

请注意,使用pytesseract之前,你需要在系统中安装Tesseract OCR引擎,并且可能需要根据你的系统配置设置tesseract_cmd的路径。此外,PIL(Python Imaging Library)或者它的分支Pillow也需要被安装来处理图片文件。

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

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

相关文章

MOSFET 场效应管:IRF4905(P沟道)、IRF3205(N沟道)

在 H 桥电路中,同时用到 IRF4905、IRF3205 。G - D - S Gate 栅极, Drain 漏极, Source 源极 IRF4905IRF3205P沟道N沟道 通过调控 栅极G 电压(相对 源S),形成电场,从而控制 漏D-源S 电流。 P沟道的源极S接输入,漏极D导通输出 触发:V GS th , -4.0 ~ -2.0 V 。举例:(详…

为了解决服务启动慢的问题,我为什么要给Apollo和Spring提交PR?

最近在整理之前记录的工作笔记时,看到之前给团队内一组服务优化启动耗时记录的笔记,简单整理了一下分享出来。问题原因并不复杂,主要是如何精准测量和分析,优化后如何定量测量优化效果,说人话就是用实际数据证明优化效果。 背景 团队内有一组服务启动明显较其它服务要慢(…

【MATLAB】自学记录之读取DEM高程数据文件并渲染成三维地形图

1. 前言 近日在学习MATLAB编程以及地理高程数据处理等相关知识时,希望通过MATLAB的绘图等相关函数,读取高程数据文件,最后以可视化的方式展示全球陆地范围内的三维高程数据图。 2. 运行环境及数据序号 配置项 说明1 CPU Intel i5-12490F2 内存 16G*2, 3600MHz3 磁盘 256G,S…

Redpanda Console - 流数据管理控制台

Redpanda Console - 流数据管理控制台 简介 Redpanda是一个与Kafka兼容的流媒体数据平台,该平台具有高性能、操作友好和云就绪性。这家总部位于旧金山的公司成立于2019年,专注于Kafka公司关键任务系统的替代产品。 Redpanda使用C++重写Kafka,与Kafka API完全兼容,可以与所有…

Prometheus+Grafana监控flink任务指标

Prometheus+Grafana监控flink任务指标 前期准备 Prometheus 是一款基于时序数据库的开源监控告警系统,由go语言开发,Prometheus的基本原理是通过HTTP协议周期性抓取被监控组件的状态,任意组件只要提供对应的HTTP接口就可以接入监控。 Grafana 是一款采用Go语言编写的开源应用…

Visual Studio中的C#项目连接本地mysql数据库

一、给项目搭载Mysql连接所需的NuGet包 1.点击visual studio上方导航栏的"工具"选项 2.在下拉框中选中"NuGet包管理器" 3.在展开的侧边栏中选择"管理解决方案的 NuGet 程序包" 4.在新打开的窗口中选择"浏览" 5.搜索框中输入"mysq…

P6822 [PA 2012 Finals] Tax

一个小Trick。很牛的题目!! 直接做可能比较困难,你要考虑一些东西重构一下原图。 这一个题目因为是与边相关的,考虑拆边,拆成两条有向边,那么对于一个点的贡献,我们暴力枚举他的边,两条边的贡献就是取 max。 但这个显然过不了,我们有一种差分建边的方式,按照边权排序…

20241421 《计算机基础与程序设计》课程总结

第一周作业 1.学习了有关专业的技能培养方向 2.对《计算机基础与程序设计》进行了大致的浏览,大概了解了计算机的相关理论知识 3.学习了有关2进制、8进制、10进制、16进制之间的转换第二周作业 1.《计算机科学概论》:第一章向我们介绍了计算机科学这门学科的内容以及其基本概…

[.NET] 单位转换实践:深入解析 Units.NET

在现代软件开发中,准确处理不同单位的转换是一个常见而复杂的需求。无论是处理温度、长度、重量还是其他物理量,都需要可靠的单位转换机制。本文将深入介绍 Units.NET 库,展示如何在 .NET 应用中优雅地处理单位转换。单位转换实践:深入解析 Units.NET 摘要 在现代软件开发中…

卡诺图化简

卡诺图化简 卡诺图(Karnaugh Map,简称K图)是一种用于简化布尔代数表达式的工具。它通过将真值表的值图形化,帮助我们更直观地找到最小项和最大项,从而简化逻辑表达式。 卡诺图的基本概念单元格:每个单元格代表一个布尔变量的可能取值组合。 邻接:两个单元格如果只有一个…

Postman与ElasticSearch交互

为了方便测试,修改ES安装路径下的config/elasticsearch.yml中的安全配置,不使用密钥访问。 以下配置的enabled都改为false # Enable security features xpack.security.enabled: falsexpack.security.enrollment.enabled: false# Enable encryption for HTTP API client conn…

本地搭建ElasticSearch

1:在elastic.co下载安装包 https://www.elastic.co/downloads/elasticsearch windows版本的是个zip包,下载解压缩后可直接通过命令行运行 cd [安装路径]/bin elasticsearch2:配置 默认需要ssl、密码等安全配置,会导致localhost:9200访问失败。可通过以下方式关闭安全配置,…