python学习|第二天

news2024/11/16 12:00:39

文章目录

  • 1.函数
    • 函数调用
    • 函数返回值
    • 函数参数
  • 2.bug常见类型
    • 粗心类型
    • 知识点不扎实
    • 思路不清
    • 被动掉坑
    • 常见异常类型
  • 3.文件的读写
    • 打开模式
    • 文件对象常用方法
    • with方法
  • 4.os模块操作目录相关函数
  • 5.打包成可执行文件

1.函数

函数调用

p89,笔记待补

函数返回值

1)如果函数没有返回值,return可以省略不写(函数体执行完毕后,不需要给调用处提供数据
2)函数的返回值只有一个,则直接返回这个值
3)函数的返回值有多个,返回的结果是个元组( , … )

函数参数

def fun(a,b,c):	#abc在函数定义处,所以是形式参数
	print('a=',a)
	print('b=',b)
	print('c=',c)
def fun(*arg1)	#一个*,代表个数可变的位置形参,传参时个数不固定,可以变化
	pass					#pass是空语句,主要用于占位,在写程序结构的时候可以不报错
def fun(**arg2)	#两个**,代表个数可变的关键字形参(a=11,b=22...)
def fun(a,b,*,c,d)	#a,b可以位置传参,可以关键字传参,但是*之后的c、d只能关键字传参
#其他的函数定义形式
def fun(a,b,*,c,d,**args)
def fun(*args1,**args2)
def fun(a,b=10,*arg1,**arg2)	#b=10是默认参数,*必须在**之前,否则报错
#函数的调用
fun(10,20,30)		#函数调用时的参数传递,是位置传参
lst=[11,22,33]
#fun(lst)会报错,因为lst是一个参数,只是这个参数里面含有多个值
fun(*lst)			#在lst前面加一个*  →  在函数调用时,将列表中的每个元素都转换成位置参数传入,所以实际上是传了三个数
fun(a=100,c=300,b=200)	#关键字传参,实际上传到fun内的结果就是a=100,b=200,c=300

2.bug常见类型

粗心类型

1.漏了末尾的冒号,如if语句,循环语句,else子句等
⒉缩进错误,该缩进的没缩进,不该缩进的缩进了
3.把英文符号写成中文符号,比如说:引号,冒号,括号
4.字符串拼接的时候,把字符串和数字拼在一起
5.没有定义变量,比如说while的循环条件的变量
6."==”比较运算符和”=”赋值运算符的混用

知识点不扎实

索引越界indexerror

lst=[11,22,33,44]	#下标是0-3
print(lst[4])			#没有4,报错

append()方法使用不熟练

lst=[]
#以下是错误写法
lst=append('a','b','c')
#以下是正确写法,append是列表的方法,需要用.符号进行调用,且一次只能加一个
lst.append('a')
print(lst)			

思路不清

解决方法:1、使用print观察;2、暂时注释掉一部分代码重新运行

被动掉坑

程序代码逻辑没有错,只是因为用户错误操作或者一些例外情况而导致的程序崩溃。eg.除法时把除数设为0
解决:

try#代码段是可能遇到报错的代码段(用待检测可能更形象?)
	代码段					#假设这里是个除法:c=a/b (输入赋值过程略)
except 报错类型:		#例如除数b为0时,会产生ZeroException的报错信息。在except后加ZeroException,这样程序运行时遇到除数为0的情况,会打印下面自定义的“除数不能为0”,而不会产生程序报错。当程序运行时没有遇到除数为0的情况,下面的print并不会输出。
	自定义操作				#假设,这里print('除数不能为0')
(except.....可以多个except)
except BaseException as e:	#为了避免遗漏可能出现的异常,可以在最后增加这一段。语句BaseException as e,是给BaseException起一个别名,这个别名是e。因为BaseException太长了,用e更方便,当然也可以是其他名字
	print(e)				#也可以是其他语句,这里的e是上面自己没有想到的错误类型,print出来的结果就是错误类型的名字

常见异常类型

在这里插入图片描述

3.文件的读写

语法规则:
file=open(filename[,mode,encoding])
文件使用要用.close()进行关闭,否则会造成资源的浪费。
在这里插入图片描述例子:

file=open('a.txt','r')		#打开a.txt文件, 'r'==>读取(read),因为是txt文件和.py文件在同一个目录,这里只用文件名即可。如果不在同一个目录,这里需要输入文件路径。由于转义字符的原因,代码中\\只能表示一个\
print(file.readlines())	#读出以列表形式输出
file.close()

文本文件:存储的是普通字符文本,默认是unicode字符集,可以使用记事本程序打开
二进制文件:把数据内容用字节进行存储,无法用记事本打开,必须使用专用的软件打开。需要二进制打开的文件格式:.png .jpg图片, .doc文档等

打开模式

打开模式描述
r只读打开,文件指针在文件的开头
w只写打开,文件不存在就创建;文件存在则覆盖原有内容。文件指针在文件的开头
a追加打开,文件不存在就创建,文件指针在文件开头;文件存在,就在文件末尾追加内容。文件指针在文件末尾
b以二进制文件打开,不能单独使用,需要和其他模式一起使用,例如:rb、wb
+以读写方式打开,不能单独使用,需要和其他模式一起使用,例如:a+

文件对象常用方法

方法名说明
read([size])文件中读取size个字节/符的内容返回,若省略size,则全部读取出来
readline()文本文件读取一行
readlines()文本文件中每一行都作为独立的字符串对象,并将这些对象放入列表返回
write(str)将str内容写入文件
writelines(list)将字符串列表list写入文本文件,不加换行
seek(offset[,whence])把文件指针移动到新的位置,offset表示相对于whence的位置:offset正则往结束方向移动,为负则往开始方向移动。whence=0:从文件头开始计算(默认);whence=1:从当前位置开始计算;whence=2:从文件尾开始计算
tell()返回文件指针当前位置
flush()把缓冲区内容写入文件,但不关闭文件
close()把缓冲区内容写入文件,同时关闭文件,释放文件对象相关资源

with方法

with语句可以自动管理上下文资源,不论什么原因跳出with块,都能确保文件正确的关闭,依次来达到释放资源的目的。

#实现一个png图像的复制
with open('logo.png','rb') as src_file:		#as是可选项,可以不使用别名
	with open('copy.png','wb') as tag_file
		tag_file.write(src_file.read())
	#tag文件自动关闭
#logo文件自动关闭,不必显示使用.close()

4.os模块操作目录相关函数

函数说明
getcwd()返回当前目录
listdir(path)返回指定路径下的文件和目录信息
mkdir(path[,mode])创建目录
makedirs(path1/path2,[,mode])创建多级目录
rmdir(path)删除目录
removedirs(path1/path2…)删除多级目录
chdir(path)将path设置为当前工作目录
abspath(path)获取文件或目录绝对路径
exists(path)判断文件或目录是否存在,如果存在返回True,反之False
join(path,name)将目录与目录或文件名拼接起来
splitext()分离文件名和扩展名
basename(path)从一个目录中提取文件名
dirname(path)从一个路径中提取文件路径,不包括文件名
isdir(path)判断是否为路径
walk()遍历所有目录和文件

5.打包成可执行文件

①cmd命令控制面板上输入pip install PyInstaller(初次打包需安装)
(如果执行不了,提示pip不是xxxx,找到pycharm项目目录的子文件夹venv的子文件夹Scripts,在这个文件路径下执行pip…命令。也可以百度环境变量设置,省去切换到该目录下再执行的步骤)
②cmd接着输入pyinstaller -F 文件路径(要打包的.py文件所在完整路径包括文件名,该命令执行结束的倒数第二行INFO:Appending archive to EXE …省略号的路径就是最后生成的可执行文件所在位置)

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

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

相关文章

微信小程序开发过程整理

目录1微信开发相关介绍1.1微信公众平台1.2微信开放平台1.3注意事项2微信小程序开发整体介绍2.1微信小程序简介2.2小程序接入流程3框架简介3.1uni-app简介3.2学习使用uni-app3.3学习微信小程序开发4开发规范5开发示例5.1开发工具5.2开发调试5.2.1导入代码5.2.2项目运行5.2.3在微…

java常见题3

11.二分查找的次数 奇数取 中间那一个作为中值 偶数个取 中间靠左 然后不断模拟这个算法 查找的最多次数:n个元素里最多查找log二N 个元素Log2 128 7 12.equals和hashCode java.lang.Object类中有两个非常重要的方法: public boolean equals(Obje…

YOLOV5模型训练

之前在博文中讲到了YOLOV5的运行,以及转tensorrt. 但是, 一个模型通常需要结合数据训练,才能得到更好的结果. 因此,我们有必要熟悉yolov5的训练过程. 执行训练的过程 Yolov5的github提供了官方的训练脚本. 第一次运行,会自动下载数据集,然后会检测到你的gpu配置,如果不对,…

【数据结构】树

树(Tree) 知识框架 树的定义 树和图一样都是非线性结构,树是n个结点的有限集合,当n0时,称这棵树为空树。 非空树有以下特征: 有且仅有一个称为根的结点。如果n>1, 除根结点以外其它结点可以分为m(m>0)个不相交的集合T1,T…

E4445A频谱分析仪

18320918653 E4445A 名称:E4445A 频谱分析仪, 3 Hz - 13.2 GHz 详细:主要技术指标 性能 /-0.24 dB幅度精度 -155 dBm/Hz显示的平均噪声电平(DNAL) 10 kHz偏置时的相噪:-118 dBc/Hz 81 dB W-CDMA AC…

春节倒计时,让我来秀一手:用Python制作一个对联生成器

前言 跨年跨完了,马上就要迎来春节了,这不得秀一手? 那就直接开始春节的表演呗 勉勉强强来用python制作对联生成器吧 效果展示 这里的话,你自己想要啥春联主题是可以搜索滴,有些地方也是可以看着改的,…

FPGA知识汇集-FPGA的低功耗设计方法总结

精确的热分析在很多电子产品设计中都有着举足轻重的作用,在高端的PCB设计中尤为突出。热分析的结果常常会影响PCB的机械层设计和产品的外壳设计:是否需要安装散热片、散热风扇等。如果安装散热风扇,往往需要降低其噪音,这将使得机械层设计变得…

【OpenAI】What Is ChatGPT

文章目录介绍注册介绍 OpenAI发布了一个全新的聊天机器人模型—— ChatGPT,同时这也是继GPT-3.5 系列的主力模型之一 ChatGPT 测试地址: https://chat.openai.com/auth/login https://gpt.chatapi.art/ ChatGPT官方说明: Optimizing Langua…

【自学Java】Java语言数组遍历

Java语言数组遍历 Java语言数组遍历教程 Java 语言 中如果我们定义好了数组,并且给数组设置了值,那么怎么样访问数组呢?怎么样获取数组里面的数据值呢?我们可以使用 for 来遍历数组,获取每个位置上的值。 Java语言数…

谷粒学院——第十四章、微信扫码登录

准备工作 注册开发者资质 官网:https://open.weixin.qq.com/ 尚硅谷分享 wx:open:# 微信开放平台 appidappid: wxed9954c01bb89b47# 微信开放平台 appsecretappsecret: a7482517235173ddb4083788de60b90e# 微信开放平台 重定向url(guli.shop需要在微…

腾讯云存储

文章目录一、开通腾讯云存储1.注册腾讯云账号,开通对象服务2. 创建存储桶3.获取SecretId 和 SecretKey提示:以下是本篇文章正文内容,下面案例可供参考 一、开通腾讯云存储 在项目钟的图片以及文件需要归档存储。如果归档文件只保存到服务器…

WebRTC学习总结

WebRTC (Web Real-Time Communications) 是一项实时通讯技术,它允许网络应用或者站点,在不借助中间媒介的情况下,建立浏览器之间点对点(Peer-to-Peer)的连接,实现视频流和(或)音频流…

二十五、Docker (1)

🌻🌻 目录一、Docker的概述1.1 为什么要去学习Docker1.2 Docker 概述1.3 Docker的历史1.4 Docker 官网1.5 Docker能做什么1.6 DevOps(开发、运维)二、Docker安装启动(官网)2.1 Docker 架构2.1.1 镜像(image)2.1.2 容器…

DICOM 图像传输:使用 LeadTools 实现 C-Store SCP 服务

文章目录开发环境创建 Qt Widgets 程序设计界面配置 LeadTools 路径编写代码使用 LDicomNet 实现 SCP 的步骤日志输出编写 SCP Server 类编写 SCP Client 类启动 LDicomNet 及启动监听编译程序运行程序发布与部署测试程序界面美化参考开发环境 LeadTools 17Qt 5.15.2 MSVC2019…

【Linux】进程间通信(万字详解) —— 上篇

🎇Linux: 博客主页:一起去看日落吗分享博主的在Linux中学习到的知识和遇到的问题博主的能力有限,出现错误希望大家不吝赐教分享给大家一句我很喜欢的话: 看似不起波澜的日复一日,一定会在某一天让你看见坚持…

谷粒学院——第九章、阿里云视频点播

阿里云视频点播 开通 地址: 上传测试 开通以后,点击控制台,然后选择音/视频: 注意:先点击启用存储地址再上传。 添加转码模版: 开发文档 官方地址:https://help.aliyun.com/p…

批量统计不同块的数量

CAD收集块的数量一般采用FI等命令,或者使用天正等软件,这些方法或多或少都存在某些问题。这时就可以编写插件满足不同场景的使用。已应用到实际工作中。 一、界面及其功能 采用c#制作cad插件,框选待统计范围,直接输出到表格中&…

数据库连接超时的处理

报错信息:Caused by: java.sql.SQLTransientConnectionException: HikariPool-1 - Connection is not available, request timed out after 30000ms.at com.zaxxer.hikari.pool.HikariPool.createTimeoutException(HikariPool.java:695)at com.zaxxer.hikari.pool.H…

Java高手速成 | 数据库实训:图书馆管理系统建模

图书馆管理系统是常见的管理信息系统,考虑到系统的推广性,本系统采用SQL SERVER2000作为数据库。并且采用PowerDesigner进行数据建模,从而自动生成sql脚本。 01、数据库概念设计 1. 数据库表设计 管理员表admin:管理员编号&am…

[JavaEE] volatile与wait和notify

专栏简介: JavaEE从入门到进阶 题目来源: leetcode,牛客,剑指offer. 创作目标: 记录学习JavaEE学习历程 希望在提升自己的同时,帮助他人,,与大家一起共同进步,互相成长. 学历代表过去,能力代表现在,学习能力代表未来! 目录 一.volatile 关键字. 1.volatile 能保证内存可见性…