部分数据类型+字符+文件操作+函数初识别

第三周总结

本周内容概要

  • (部分)数据类型的内置方法
  • 可变类型和不可变类型
  • 垃圾回收机制
  • 字符编码
  • 文件操作
  • 函数
  • 战略补充

数据类型的内置方法(部分)

列表

关键字:list()
类型:可变类型
方法:
	1.切片操作(间隔/方向):s1[ i : j : k ]
		" i "正数代表取值从左到右的开始位置,负数代表取值从右到左的开始位置
		" j "正数代表取值从左到右的结束位置,负数代表取值从右到左的结束位置
		" k "正负代表切片方向,大小代表步长
        # 产生一个新的列表
	2.统计列表数据值个数:len(列表)	#也叫函数
	3.增删改查之增:
		3.1 列表尾部添加一个任意类型的数据:列表.append(数据)
		3.2 列表任意位置插入一个任意类型的数据:列表.insert(索引,数据)
		3.3 列表结合:
			· 列表.extend(被加列表)	# 在原列表操作
			· 列表+列表				 # 形成一个新列表
	4.增删改查之删:
		4.1 删除索引部分或者整个列表:del 列表[索引值] / del 列表	# 特殊关键字
		4.2 “指名道姓”删除:列表.remove(数据值)
		4.3 取出来,再删除:列表.pop(索引值)	"""对列表本身进行操作,返回一个将被删除d"""	# 当pop()方法没有索引值时,默认取出列表尾部数据值 
	5.增删改查之改:列表[索引] = 需要改的数据
	6.增删改查之查:
		6.1 索引取值:列表[索引值]
		6.2 查看数据在列表的索引值:列表.index(数据)	# 当index方法找不到数据时,报错
	7.统计数据值出现的次数:列表.count(需统计的数据)
	8.排序:列表.sort(reverse=True)	# reverse参数为控制升降序
	9.翻转:列表.reverse()
	10.比较运算:
		10.1 当数据类型为int类型或者布尔型时,按照位置顺序比对
		10.2 不同类型之间默认无法比较
		10.3 字符串比较结束比较字符编码的大小
		10.4 字典类型不参与比较

元组

"""一个数据值的时候 逗号不能省略.如果省略了,那么括号里面是什么数据类型就是什么数据类型"""
关键字:tuple()
类型:不可变
类型转换:字符串型,集合型,字典型,列表
方法:
	1.索引取值:元组[索引值]   
	2.统计元组内数据值的个数:len(元组)
"""元组的索引不能改变绑定的地址"""

字典

关键字:dict()
类型:可变类型
类型转换:很少涉及
	eg:print(dict([('name', 'jason'), ('pwd', 123)]))
		print(dict(name='jason', pwd=123))
方法:
	1.增删改查之增:字典[一个不存在的key] = 数据 
	2.增删改查之删:
		2.1 del 字典[key]
		2.2 字典.pop(key)
		2.3 字典.popitem() # 随机删除
	3.增删改查之改:字典[key] = 需要修改的数据 
	4.增删改查之查:
		4.1 get(key,"键不纯在时,返回什么,默认为None")
		4.2 字典[key] #不推荐使用 键不存在会直接报错
	5.统计字典中键值对的个数:len(字典)
	6.快速获取键,值,键值对数据
		1.字典.keys()	#获取字典所有的k值 结果当成是列表
		2.字典.values()	#获取字典所有的v值 结果当成是列表
		3.字典.items()	#获取字典kv键值对数据 组织成列表套元组
	7.快速构造字典:字典.fromkeys([1, 2, 3], None) #给的值默认情况下所有的键都用一个
	8..设置默认v值:字典.setdefault('username', 'jasonNB')
    
相关细节:
	1.字典内k:v键值对是无序的
	2.K是对V的描述性性质的信息一般是字符串
	3.K其实只要是不可变类型都可以

集合

关键字:set()
类型:不可变
类型转换:字符串型,元组型,字典型,列表
方法:
	1.自带效果:去重+自动排序
	2.取双方共同数据:字典 & 字典
	3.取一方独有数据:字典 - 字典
	4.取双方所有数据:字典 | 字典
	5.取双方独有数据:字典 ^ 字典
	6.父子集:字典 > 字典 # 输出布尔型
相关细节:
	1.数据必须是不可变类型
	2.定义空集合需要使用关键字才可以
	3.集合是无序的,所以不能索引取值

可变和不可变类型

可变类型:值改变(内置方法) 内存地址可以不变 
	哪些:
    	1.字典
    	2.列表
	    3.集合
不可变类型:值改变(内置方法) 内存地址肯定变
	哪些:
    	1.字符串
        2.整型
        3.浮点型
        4.布尔型
        5.元组

垃圾回收机制

Python垃圾回收机制主要是三种:
	1.引用计数
		定义:一个数据有多少个绑定的变量那么它的引用计数就是多少,当它的引用计数为0时,便符合了回收条件。
		"""引用计数存在一个坑:循环引用""" # 会导致无法被调用的数据引用计数也不为0,对内存很不友好。
	2.标记清除
		定义:将内存所有数据全部检查一遍,把有问题的数据标记并回收清理。
		# 可以解决循环引用的问题
		# 资源消耗有点大
	3.分代回收
		定义:将内存数据分代检查,不同代监管力度不同
		# 减轻资源损耗	

字符编码

简介

1.记录了字符和数据的对应关系
2.只有文本文件才有字符编码的概念
3.计算机内部存取数据的本质是二进制,即 0和1
4.字符编码版本很多,跟地域和历史有关
5.转换关系不能随便更改 应该有统一的标准

发展史

image

实操

1.注意编码类型,相同类型的编码表才能编码和解码,否则会形成乱码
2.编码:将人类的字符按照指定的编码转换成计算机可以识别的数字
  解码:将计算机能够识别的数字按照指定的编码转成人类可以读懂的字符
3.python2解释器默认编码是ASCII码
  python3解释器默认编码是utf8码
4.python2执行utf8编码的方式:
	1.在文件头部加上:# coding:utf8
	2.在定义的字符串前+ u 

文件操作

基础了解

1.文件操作:通过编写代码自动操作文件读写
2.文件:文件其实是操作系统暴露给用户操作计算机硬盘的快捷方式之一
3.操作文件方式:
	格式:open(文件路径,读写模式,字符编码)
	1.变量.open()
	  变量.close() 
	2.with open() as 变量名: +子代码	#这个方法可以自动关掉文件
4.r的使用:r字符串
  功能:在文件路径中,可取消一些特殊关键字含义

文件读写模式

文件读写有多种模式:
    1.只读模式(默认模式)	"""r模式"""
      功能:只读模式只能读取内容,不能进行其他操作。
      文件路径:
        1.当处于只读模式时,文件路径不存在,则会报错。
        2.当处于只读模式时,文件路径存在,则打开文件等待读取。
    2.只写模式:	"""w模式"""
      功能:只写模式只能编写内容,不能进行其他操作。
      文件路径:
        1.当处于只写模式是,文件路径不存在,则会在本文件夹中自动创建该文件。
        2.当处于只写模式是,文件路径存在,则会清空该文件的内容,然后等待编写。
    3.只追加模式:	"""a模式"""
      功能:只追加模式默认是在末尾追加新的内容,不能进行其他操作。
      文件路径:
        1.当处于只追加模式是,文件路径不存在,则会在本文件夹中自动创建该文件。
        2.当处于只追加模式是,文件路径存在,则会在文件内容末尾等待填写。
	4.读写模式(了解即可):	"""+模式"""
		1.r+:打开一个文件用于读写。文件指针将会放在文件的开头
		2.w+:打开一个文件用于读写。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件
		3.a+:打开一个文件用于读写。如果该文件已存在,文件指针将会放在文件的结尾。文件打开时会是追加模式。如果该文件不存在,创建新文件用于读写
		4.rb+:以二进制格式打开一个文件用于读写。文件指针将会放在文件的开头。
		5.wb+:以二进制格式打开一个文件用于读写。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件
		6.ab+:以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。如果该文件不存在,创建新文件用于读写

文件操作模式

文件操作有种模式
	1.文本模式:	"""默认模式"""   # r/rt  w/wt a/at   
		1.只能操作文本文件
		2.必须指定encoding参数
		3.读写都是以字符串为单位
	2.二进制模式:	# rb  wb  ab
        1.能够操作所有类型的文件	
        2.不需要指定encoding参数
        3.读写都是以bytes为单位

文件操作方法

1.read():读取内容,并将光标移到文件末尾
2.readline():读取一行数据
3.readlines():读取全部内容,并用列表返回
4.readable():判断当前文件是否可读
5.write():填写文件内容
6.writelines():可以填写多个不同类型的数据
7.writable():判断当前文件是否可写
8.flush():将当前内存数据存入硬盘	# ctrl+s
9.read(数字):
	文本模式:在此模式下,代表从光标位置向后读取几个字符
	二进制模式:在此模式下,代表从光标位置向后读取几个字节
10.tell():获取光标移动的字节数
11.seek(offset,whence): 移动光标
    offset:控制光标移动的字节量,大小代表步长,正负代表方向。
	whence:
	   0:将光标移动到文件开头
	   1:光标停留在当前位置
	   2. 光标移动到文件末尾
补充:文件操作支持for循环。

文件数据修改

两种方式:
	1.覆盖写:先读取文件内容到内存 在内存中完成修改 之后w模式打开该文件写入
    	优点:硬盘只占用一块空间
		缺点:数据量较大的时候会造成内存溢出
    2.重命名:读取文件内容到内存 在内存中完成修改 之后保存到另外一个文件中,再将原文件删除 将新的文件重命名为原文件
小知识:
		优点:不会造成内存溢出
		缺点:有那么一段时间需要占用硬盘两个地方的空间(可能),也可能是在内存中创建没有刷到硬盘
	机械硬盘储存数据用的是覆盖写,数据的删除,是将占有态数据转变为自由态数据。

函数

函数的定义与调用

函数:一段被封装,等待执行的代码(自己定义)
	1.函数必须先定义后使用
	2.def关键字定义函数,调用函数使用函数名加括号及参数
	3.函数在定义阶段只检测不执行函数体代码语法,只有在调用阶段才会执行函数体代码
	4.函数名就是存有函数体地址的变量,运行函数体代码需要加括号
	5.函数名+()优先级最高

函数的语法结构

def 函数名(参数1,参数2):
    '''函数注释'''
    函数体代码
    return 返回值

1.def:函数定义关键字
2.函数名:变相的变量名,储存函数体地址
3.括号:必须拥有,也是调用函数时函数体是否执行的指标
4.参数:用于接收外界传递的数据,在函数括号中,可写也可以不写,个数不定
5.函数注释:解释函数的用法和功能
6.函数体代码:功能逻辑代码
7.return:控制函数的返回值

函数的分类

1.内置函数:
	解释器提前帮你定义好的函数 用户可以直接调用
2.自定义函数:
	1.空函数: 函数体代码没有任何功能
	2.无参函数:函数定义阶段括号内没有填写参数
	3.有参函数:函数定义阶段括号内填写参数

函数的返回值

返回值:就是return关键字输出的值
    1.没有return关键字默认返回为None
    2.return关键字后面为空时,返回为None
    3.return关键字后面输出什么,那就返回什么
    4.return关键字为多个数据并列并用逗号分隔时,输出元组
    5.程序遇到return关键字时立刻结束,并返回放回值

函数的参数

参数有两大类:
	1.形式参数(形参):函数在定义阶段括号内填写的参数 #相当于是变量
		1.位置形参:在函数定义阶段括号内从左往右依次填写的变量
		2.默认值形参:在函数定义阶段括号内以 '变量 = 数据' 的形式填写的形参
		3.可变长参数:
			1.函数(*args):接收多余的 '位置参数'并组织成元组的形式赋值给*后面的变量名
			2.函数(*kwargs):接收多余的'关键字参数'并组织成字典的形式赋值给**后面的变量名
	2.实际参数(实参):函数在调用阶段括号内填写的参数 #相当于是数据值
		1.位置实参:在函数调用阶段括号内从左往右依次填写的数据值或变量
		2.关键字实参:在函数调用阶段括号内以 '变量 = 数据'的形式传值
			1.指名道姓的给形参传值(打破了位置的限制)
			2.位置实参必须在关键字实参的前面
			3.同一个形参在一次调用中只能传一次值

				"""位置实参传值数量必须等于位置形参"""
	     """函数调用时会将实参和形参绑定,函数结束时,绑定解除"""

战略补充

1.with open 语法可以一次打开多个文件,但是建议不要超过两个。
2.补全语法:
    1.pass   #推荐使用
    2....
posted @ 2022-07-03 19:39  维生素Z  阅读(19)  评论(0)    收藏  举报