python学习|第二天

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 …省略号的路径就是最后生成的可执行文件所在位置)

猜你喜欢

转载自blog.csdn.net/qq_45788060/article/details/128537938