python学习笔记

python学习笔记


一、安装python+pycharm集成开发环境

python安装教程
pycharm安装教程
python遇到的问题
给项目配置intergreter

二、基本语句

2.1 输出print()函数

可以输出数字,字符串(加单引号),含有运算符的表达式,输出到文件

在这里插入图片描述

2.2 转义字符

\n 换行
\t 空格
\b 退一个格
\r 覆盖
\反斜杠

在这里插入图片描述

ps:
如果不希望原来的转义字符起作用,就在原字符之前加上r或者R,但是最后一个字符不能是反斜杠,示例如下:

在这里插入图片描述
错误示例:前面有r,最后一位是反斜杠在这里插入图片描述
正确示例:前面有r,最后一位可以是双斜杠
在这里插入图片描述

2.3 保留字和标识符

2.3.1 保留字

输入:
在这里插入图片描述
就会出来python默认的保留字,以下几种:

[‘False’, ‘None’, ‘True’, ‘peg_parser’, ‘and’, ‘as’, ‘assert’,
‘async’, ‘await’, ‘break’, ‘class’, ‘continue’, ‘def’, ‘del’, ‘elif’,
‘else’, ‘except’, ‘finally’, ‘for’, ‘from’, ‘global’, ‘if’, ‘import’,
‘in’, ‘is’, ‘lambda’, ‘nonlocal’, ‘not’, ‘or’, ‘pass’, ‘raise’,
‘return’, ‘try’, ‘while’, ‘with’, ‘yield’]

2.3.2 标识符

变量,函数,类,模块和其他对象起的名字就叫标识符

规则:

1.不能是保留字
2.不能以数字开头
3.严格区分大小写
4.字母,数字,下划线构成

2.4 变量定义和构成

2.4.1 变量的构成

变量由标识,类型和值构成
标识:内存地址
类型:数据类型
:存储的具体数据

在这里插入图片描述
2.4.2 变量的多次赋值
在这里插入图片描述

2.5 数据类型

  • 整数类型 int
  • 浮点数类型 float
  • 布尔类型 bool
  • 字符串类型 str

2.5.1 整数类型(正数,附属,0)

二进制——以0b开头, 0-9
八进制——以0o开头, 0-7
十六进制——以0x开头,0-9,a-f

例子:
在这里插入图片描述
2.5.2 布尔类型

布尔值可以转换成整数计算
True 表示为1
False 表示为0

在这里插入图片描述
2.5.3 字符串类型

ps:单纯的单引号和双引号无法转行,三重的单引号和双引号可以转行

在这里插入图片描述

*类型转换

str()
int()
float()

转换成int类型的注意事项:

  1. str类型的小数无法转换成int类型
  2. 非整数的str类型也无法转换成int类型
    在这里插入图片描述

ps:当将string类型与int类型连接时会报错,解决方案是进行类型转换,例如:
在这里插入图片描述
转换成float类型
在这里插入图片描述

2.6 注释

单行注释 #
多行注释 ‘’‘ 或者 “”"

2.7 输入input()函数

input函数默认输入的是字符串类型,印证如下:
在这里插入图片描述

改进以后,将str类型转换成int类型
在这里插入图片描述

2.8 运算符

2.8.1 算术运算符
在这里插入图片描述

注意:整除 // 的时候,一正一负向下取整
在这里插入图片描述

另外,取模运算的时候,余数的公式=被除数-除数×商
所以 9%-4的结果 9-(-4)×(-3)=-3
在这里插入图片描述
2.8.2 赋值运算符

1.执行顺序为从右向左
2.支持链式赋值, 比如a=b=c=20
3.支持参数赋值 +=、-=、*=、/=、//=、%=
4.支持系列解包赋值 a,b,c=20,30,40

在这里插入图片描述
2.8.3 比较运算符
对变量或表达式的结果进行大小,真假的比较,分别为:

  1. ->, <, >=, <=, !=
  2. ==
  3. is, is not

在这里插入图片描述
注意:
比较运算符的结果类型为bool类型
==比较的是值是否相等,is比较的是id是否相等
在这里插入图片描述
2.8.4 布尔运算符

and
-true and true true
-其余为false

or
-false or false 结果为false
-其余为true

not 对布尔类型操作数取反
-not false 为true
-not true 为false

在这里插入图片描述


in与not in的运算


在这里插入图片描述
2.8.5 位运算

-按位与 & 对应结果都为1,结果为1,否则为0
-按位或 | 对应结果都为0,结果为0,否则为1
-左移位运算<<
-右移位运算>>

2.8.6 运算符的优先级
在这里插入图片描述

三、程序的组织结构

3.1 顺序结构

3.2 选择结构-分支结构

3.2.1 对象的布尔值
在这里插入图片描述
双分支结构
在这里插入图片描述
多分支结构:
在这里插入图片描述
嵌套if的使用:
在这里插入图片描述

3.3 pass语句

语句什么都不做,只是一个占位符,用在语法上需要语句的地方

在这里插入图片描述

3.4 内置函数 range()

  • 用于生成一个整数序列
  • 创建range的三种方式 -range(stop) -range(start,stop) -range(start,stop,step)

在这里插入图片描述
在这里插入图片描述

注意:不管range对象标识的整数序列有多长,所有range对象占用的内存空间都是相同的,至于再用到range对象的时候才会计算序列中的相关元素

3.5循环结构

循环的分类

  • while
  • for -in

3.5.1 while循环
在这里插入图片描述
例题,计算累加和
在这里插入图片描述
在这里插入图片描述

3.5.2 for -in循环

格式
for 自定义的变量 in 可迭代对象:
循环体

在这里插入图片描述

在这里插入图片描述

如果再循环体内不需要自定义变量,可用”_“代替

在这里插入图片描述
在这里插入图片描述

水仙花数:
在这里插入图片描述
3.5.3 break语句与continue语句

break指一旦满足条件,立刻退出循环结构,例如:

在这里插入图片描述

cotinue语句指当满足现有条件时,退出当前循环,进行下一循环,例如:

打印5的倍数
在这里插入图片描述
3.5.4 else语句的搭配

-和if搭配,if…else…
-和for循环&while循环搭配

例如:
在这里插入图片描述
3.5.5 嵌套循环

打印矩形:
在这里插入图片描述

打印直角三角形:
在这里插入图片描述

3.5.6 break和continue的复杂循环用法

break有两层嵌套的时候
在这里插入图片描述
continue有两层嵌套的时候:
在这里插入图片描述

四、列表

4.1 基础知识

1.变量可以存储一个元素,而列表可以存储许多个元素
2.列表相当于其他语言中的数组
3.列表的特点:
-列表元素按顺序有序排列
-索引映射唯一一个数据
-列表可以存重复数据
-任意数据类型混存
-根据需要动态分配和回收内存

在这里插入图片描述
列表的详解
在这里插入图片描述

4.2 获取指定元素的索引

-正向索引从0 ~ N-1
-逆向索引从-N ~ -1
-索引不存在,则会抛出Index Error

在这里插入图片描述
index()函数

注意1: 如果列表中存在n个相同元素,只返回相同元素中的第一个索引

在这里插入图片描述

注意2:如果查询的元素在列表中不存在,则会抛出ValueError

在这里插入图片描述

注意3:还可以在指定的start和stop之间进行查找

4.3 获取列表中的多个元素——切片操作

1.语法格式

列表名[ start: stop: step]

2.注意

1)切片范围[ start, stop]
2) step默认为1
3)step为正数,
[ :stop:step] 切片的第一个元素默认是列表的第一个元素 [start::step] 切片的最后一个元素默认是列表的最后一个元素
4)step为负数,
[:stop:step] 切片的第一个元素默认是列表的最后一个元素 [start::step] 切片的最后一个元素默认是列表的第一个元素
5)切出来的切片为新的列表对象

例1,切出来的切片为新的列表对象,因为id不一样了
在这里插入图片描述
例2.
在这里插入图片描述

4.4列表元素的判断与遍历

1.判断
in 与 not in
在这里插入图片描述
2.遍历
在这里插入图片描述

4.5 列表元素的增删改及排序

4.5.1 列表元素的添加

1.列表元素末尾增加一个元素

list.append(添加元素)

在这里插入图片描述
2.在列表末尾至少添加一个元素

list.extend()

在这里插入图片描述
3. 在任意一个位置上添加一个元素

list.insert(插入位置,插入元素)

切片:在列表的任意位置上添加N多个元素
在这里插入图片描述

4.5.2 列表元素的删除操作

  1. list.remove(移除元素)

从列表中移除一个元素,如果有重复元素只移第一个,元素不存在则抛出ValueError

在这里插入图片描述

2.pop()

-根据索引移除元素
-如果指定的索引位置不存在将抛出异常
-如果不写索引值,默认删除最后一个元素

在这里插入图片描述
3.切片

删除至少一个元素,但是将产生新的列表对象

在这里插入图片描述
4.clear()与del

清空列表中的所有元素

在这里插入图片描述

del直接删除列表

下图中,列表直接不存在了
在这里插入图片描述
4.5.3 列表元素的修改操作

-为指定索引的元素赋予一个新值
-为指定切片赋予一个新值


4.5.4 列表元素的排序

list.sort() 或者list.sort(reverse=True)进行升序排序
list.sort(reverse=False)进行降序排序
这种方法不会产生新的列表元素
-------------------------------------------------------------------------------内置函数sorted()对列表进行排序时会产生新的列表元素
sorted(list)升序排序
sorted(list,reverse=True)降序排序

list.sort()用法
在这里插入图片描述
sorted用法
在这里插入图片描述
4.5.5 列表生成式
在这里插入图片描述

五、字典

5.1.基础知识

1)python内置的数据结构之一,与列表一样是一个可变序列
2)以键值对的方式存储数据,字典是一个无序的序列 例如:scores={‘张三’:100,‘李四’:56}

3)元素按照关键值的hash值排序,与放进来的顺序无关
在这里插入图片描述

5.2 字典的常用操作

5.2.1 字典的创建

  • 最常用的方式:使用花括号,如: scores={‘张三’:100,‘李四’:98,‘王五’:45}
  • 使用内置函数dict()

在这里插入图片描述
5.2.2 字典元素的获取

-使用[]获取元素
-使用get()方法获取元素

在这里插入图片描述
5.2.3 字典元素其他操作

1)key的判断
in / not in
在这里插入图片描述
2) 字典元素的删除

-del 删除指定的key-value对
-clear()清空字典的元素

在这里插入图片描述
3)新增字典元素
在这里插入图片描述
4)获取字典视图

  • keys() 获取字典关键值
  • values() 获取字典中所有
  • items() 获取字典中所有key,value对

在这里插入图片描述
在这里插入图片描述
5)字典的遍历

for item in scores:
// 获取key值
print(item)
//获取字典元素的value值
print(scores[item]) 或者
print(scores.get(item))
在这里插入图片描述

5.3 字典的特点

  • 字典当中的所有元素都是一个key-value对,key不允许重复,value可以重复
  • 字典中的元素是无序的
  • 字典中的key必须是不可变对象(比如list可变就不能使用
  • 字典也可以根据需要动态的伸缩
  • 字典hi浪费较大的内存,是一种使用空间换时间

5.4 字典生成式

生成过程:
在这里插入图片描述
所使用的函数:

内置函数zip() 用于将可迭代的对象作为参数,将对象中对应的元素打包成一个元组,然后返回这些元组组成的列表

在这里插入图片描述
ps:按元素少的那个部分来压缩成字典

六、元组(不可变)与集合

6.1 元组基础知识

python内置的数据结构之一,是一个不可变序列

ps:
不变可变序列——没有增、删、改的操作,如:字符串,元组
可变序列——可以进行增、删、改操作,对象地址不发生改变,如:列表、字典

6.2 元组的创建方式

-直接小括号
-使用内置函数tuple()
-只包含一个元组的元素需要使用逗号和小括号,如: t =(10, )

在这里插入图片描述

ps:如果元组中只有一个元素,逗号不能省略

在这里插入图片描述
**空元组的创建方式
在这里插入图片描述

6.3 注意事项:

元组中存储的是对象的引用 a)如果元组中的对象本身是不可变对象,则不能再引用其他对象
b)如果元组中的对象是可变对象,则可变对象的引用不允许改变,但数据可以改变,比如:元组中元素存在list,list不可以变为100,但是100可以添加到list中,示例如下:

在这里插入图片描述
正常情况
在这里插入图片描述
将100插入到t[1]

不允许直接插入,报错如下:
在这里插入图片描述
正确插入方法:
在这里插入图片描述

6.4 元组的遍历

-已知元组中元素个数的时候,可以使用索引
-for…in遍历
在这里插入图片描述

6.5集合概述

1)python内置的数据结构
2)与列表、字典一样都属于可变类型的序列
3)集合是没有value的字典,只有key

在这里插入图片描述

6.6 集合的创建

1.使用{},集合中的元素不允许重复,如果重复打印的时候默认输出一个
2.使用内置函数set()

在这里插入图片描述
3.定义空集合
1)不可以使用 {} 直接定义空集合!!!因为 {}是字典类型
2)直接用set()函数定义

在这里插入图片描述

6.7 集合的相关操作

1.集合元素的判断 in or not in
2.集合的新增元素

调用add() 一次添加一个集合元素
调用update() 一次至少添加一个元素

在这里插入图片描述
3.集合元素的删除操作

-调用remove(),一次删除一个指定元素,如果指定元素不存在抛出KeyError
-调用discard(),一次删除一个指定元素,如果指定元素不存在不抛出KeyError
-调用pop(),一次只删除一个任意元素,注意,pop()函数不存在参数,因此括号里只能为空
-调用clear(),清空集合

在这里插入图片描述

6.8 集合之间的关系

1.判断是否相等 ==或者!=
注意:集合是无序的,不管两个集合中的元素排列顺序是否一样,只要元素一致就说明两个集合相等

2.判断一个集合是否是另一个集合的子集
调用issubset方法
3.判断一个集合是否是另外一个集合的超集
调用issuperset方法
4.判断两个集合有无交集
调用isdisjoint方法,有交集结果为false,没有交集结果为true!!

# 判断两个集合是否相等
s1={10,20,30,40,100,500}
s2={30,20,10,100,40,500}
print(s1==s2)
print(s1!=s2)
# 判断一个集合是否是另一个集合的子集
s1={10,20,30,40,100,500}
s2={30,20,100,40,500}
s3={10,20}
s4={1,2,3}
print(s2.issubset(s1))
print(s3.issubset(s1))
# 判断一个集合是否是另一个集合的超集
print(s1.issuperset(s2))
print(s1.issuperset(s3))
# 判断两个集合有无交集,没有交集为true,有交集为false
print(s3.isdisjoint(s1))
print(s4.isdisjoint(s3))

结果:
在这里插入图片描述

6.9 集合之间的数据操作

1.取交集

-调用intersection函数
-用&符号

在这里插入图片描述
2.取并集

-调用union()函数
-使用或 | 符号

3.取差集(s1减去s1与s2相交的部分)

-调用difference()函数
-用减号表示

在这里插入图片描述
4.对称差集

调用symmetric_difference()函数

在这里插入图片描述

为便于理解,见下图:
在这里插入图片描述

6.10 集合生成式

1.用于生成集合的公式
在这里插入图片描述
在这里插入图片描述

七、字符串(不可变)

7.1 字符串的创建与驻留机制

Python的驻留机制对相同的字符串只保留一份拷贝,后续创建相同字符串时,不会开辟新空间,而是把该字符串的地址赋给新创建的变量。

在这里插入图片描述
驻留机制的几种情况(交互模式):

  • 字符串的长度为0或1时
    在这里插入图片描述

  • 符合标识符的字符串
    例子:因为abc%不是标准的标识符(字母、数字、下划线组成),所以没有驻留机制在这里插入图片描述
    例2:因为s1和s2是合法的标识符,所以产生驻留机制在这里插入图片描述

  • 字符串只在编译时进行驻留,而非运行时
    在这里插入图片描述

  • [-5,256]之间的整数数字
    在这里插入图片描述
    ps:pycharm进行了优化处理,所以驻留机制失效

7.2 字符串的常用操作

7.2.1 查询操作的方法
1.查询方法

  • index() 查找子串substr第一次出现的位置,如果查找的子串不存在时,则抛出ValueError
  • rindex() 查找子串substr第最后一次出现的位置,如果查找的子串不存在时,则抛出ValueError
  • find() 查找子串substr第一次出现的位置,如果查找的子串不存在时,则返回-1
  • rfind() 查找子串substr最后一次出现的位置,如果查找的子串不存在时,则返回-1

在这里插入图片描述
7.2.2 字符串的大小写转换操作

  • upper() 把字符串中所有字符转换成大写字母
  • lower() 把字符串中所有字符转换成小写字母
  • swapcase() 把字符串中所有小写字母转换成大写字母,把字符串中所有大写字母转换成小写字母
  • capitalize() 把第一个字符转换成大写,把其余字符转换成小写
  • title() 把每个单词的第一个字符转换为大写,把每个单词的其余字符转换为小写

在这里插入图片描述
7.2.3 字符串内容对齐操作的方法

  • center() 居中对齐
  • ljust() 左对齐
  • rjust() 右对齐
  • zfill() 右对齐,左边用0填充

在这里插入图片描述
7.2.4 字符串的劈分

  • split() 从字符串的左边开始劈分、sep指定劈分字符串的劈分符,maxsplit指定劈分字符串时的劈分符
  • rsplit() 从字符串的右边开始劈分、sep指定劈分字符串的劈分符,maxsplit指定劈分字符串时的劈分符

在这里插入图片描述
7.2.5 字符串的判断

  • isidentifier() 判断是否是合法的标识符
  • isspace() 指定的字符串是否全部由空白字符组成
  • isalpha() 指定的标识符是否全部由字母组成
  • isdecimal() 判断指定的标识符是否全部由十进制数字组成
  • isnumeric() 判断指定的字符串是否全部由数字组成
  • isalnum() 判断指定的字符串是否全部由字母和数字组成

在这里插入图片描述
7.2.6 字符串的替换

  • replace() 第1个参数指定被替换的子串,第2个参数指定替换子串的字符串,该方法返回替换后得到的字符串,调用该方法时可用第3个参数指定最大替换次

在这里插入图片描述

7.3 字符串的比较

运算符:>,>=,<,<=,==,!=
比较规则:先比第一个,相等再比dirge,依次类推
比较原理:比较的是ordinal value(原始值),调用内置函数ord可以得到

ps: ==与is的区别

== 比较的是value is 比较的是id是否相等

在这里插入图片描述

7.4 字符串的切片操作

字符串是不可变类型,不具备增删改操作,切片操作将产生新的对象

在这里插入图片描述

7.5 格式化字符串

格式化字符串的两种方式:

  • %做占位符
  • {}做占位符
  • f-string

在这里插入图片描述
在这里插入图片描述

7.6 字符串的编码

1.为什么需要字符串的编码转换?
在这里插入图片描述
2.编码与解码

编码:将字符串转换为二进制数据(bytes)
解码:将bytes类型的数据转换成字符串类型

在这里插入图片描述

八、函数

7.1 函数的创建

  • 格式
    def 函数名([输入参数]):
    函数体
    [return xxx]

在这里插入图片描述

7.2 函数调用的参数传递

  • 位置实参
    根据形参对应的位置进行实参传递
  • 关键字实参
    根据形参名称进行实参传递
    在这里插入图片描述
    ps: 在函数调用过程中,进行参数的传递
  • 如果是不可变对象,在函数体的修改不会影响实参的值,arg1的修改为100,不会影响n1的值
  • 如果是可变对象,在函数体的修改会影响到实参的值,arg2的修改为append(10),会影响到n2的值

在这里插入图片描述

7.3 函数的返回值

函数的返回值
(1)如果函数没有返回值,return可以省略不写
(2)函数的返回值可以是一个,直接返回原数据类型
(3)函数的返回值如果是多个,结果是元组

没有返回值和返回值为一个:
在这里插入图片描述

函数的返回值有多个,返回元组类型

7.4 默认值参数

在这里插入图片描述

7.5 参数

1.个数可变的位置参数

定义函数时,如果无法实现确定位置实参的个数,括号里加 “*”变成fun(*args),输出结果为一个“元组”,个数可变的位置参数只能为一个

例子1:
在这里插入图片描述
例子2:
在这里插入图片描述

2.个数可变的关键字形参

  • 函数前面加两个*
  • 可变的关键字喜感的输出结果为字典
  • 个数可变的关键字参数只能为一个

例子1:
在这里插入图片描述
例子2:
在这里插入图片描述

3.注意
一个函数定义的过程中,既有个数可变的关键字形参,也有个数可变的位置形参,要求,位置形参放在关键字形参之前!!
在这里插入图片描述

7.6 递归函数

例子1:
在这里插入图片描述
例子2:斐波那契函数

0、1、1、2、3、5、8、13、21、34、……
F(0)=0,
F(1)=1,
F(n)=F(n - 1)+F(n - 2)(n ≥2,n ∈ N*)
在这里插入图片描述

九、python的异常处理机制

  1. try…except…else结构
  • 如果try块中没有抛出异常,则执行else块,如果try中抛出异常,则执行except块

在这里插入图片描述
2. try…except…else…finally结构
** finally块无论是否发生异常都会被执行,能常用来释放try块中申请的资源

在这里插入图片描述
3.常见的异常类型
在这里插入图片描述
3. traceback包
在这里插入图片描述

十、编程思想-面向对象和面向过程

10.1 面向对象与面向过程

在这里插入图片描述

10.2 类与对象

  • python中一切皆对象
  • 不同的数据类型属于不同的类

10.3类的创建

class Student:
  内容

类名—默认规则为由一个或多个打你组成,每个单词的首字母大写,其余小写
在这里插入图片描述

10.4 类的组成

  • 类属性
  • 实例方法
  • 静态方法
  • 类方法

定义一个标准的学生类:
在这里插入图片描述

10.5 对象的创建

1.格式:

实例名=类名()
例如:stu=Student()

在这里插入图片描述

2.调用方法的两种方式:

  • 对象名.方法名()
  • 类名.方法名(类的对象)

在这里插入图片描述
3.类属性,类方法和静态方法

  • 类属性:
    在这里插入图片描述
  • 类方法与静态方法的使用方式
    在这里插入图片描述

10.6 动态绑定属性和方法

0.动态绑定与静态绑定

  • 静态绑定: 在程序执行前方法已经被绑定(也就是说在编译过程中就已经知道这个方法到底是哪个类中的方法),此时由 编译器或其它连接程序实现。
  • 动态绑定: 后期绑定: 在运行时根据具体对象的类型进行绑定。

简单理解就是比如Student类中已经规定属性home=‘东北’,那所有新创建的对象stu1,stu2…stuN的home属性就都是东北,这个属于静态绑定
但是,如果Student类中没有规定gender属性,而单纯想给一个新创建的对象stu2添加gender属性,这个属于动态绑定

1.一个Student类可以创建N多个Student类的实例对象,每个实体对象的属性值不同。
在这里插入图片描述

在这里插入图片描述
2.python是动态语言,在创建对象之后,可以动态的绑定属性和方法

例子1.动态绑定属性
在这里插入图片描述
例子2.动态绑定方法
在这里插入图片描述

10.7 面向对象的三大特征

  • 封装:提高程序的安全性

将数据(属性)和行为(方法)包装到类对象中。在方法内部对属性进行类对象的外部调用方法。这样,无需关心方法内部的具体实现细节,从而降低复杂度
在python中没有专门的修饰用于属性的私有,如果该属性不希望再类对象外部被访问,前边使用两个’_‘

  • 继承:提高代码的复杂度
  • 多态

10.7.1 封装性的例子:
在这里插入图片描述

例子:使用两个’_‘对禁止类的属性被外部使用在这里插入图片描述
解决方法:
在这里插入图片描述
10.7.2 继承

1.基础了解
1)语法格式

class 子类类名(父类1,父类2…):
pass

2)如果一个类没有继承任何类,则默认继承object
3)python 支持多继承
4)定义子类时,必须在其构造函数中调用父类的构造函数

2.例子
例子:Person是父类,Student与Teacher都是子类继承父类
在这里插入图片描述
Student与Teacher继承Person类,Person类又继承Object类

在这里插入图片描述
例子:
在这里插入图片描述
多继承的理解
在这里插入图片描述
3.Object类

  • Object类是所有类的父类,因此所有类都有Object类的属性和方法
  • 内置函数dir()可以查看指定对象的所有属性
  • Object有一个_str_()方法,用于返回一个对于“对象的描述”,对应于内置函数str()经常用于print()方法,帮我们查看对象的信息,所以我们经常会对_str_()进行重写

例子中可以看到默认的Object类的属性
在这里插入图片描述
原始数据:
在这里插入图片描述
后来通过str改写
在这里插入图片描述
10.7.3 多态

多态就是拥有多种形态,即便不知道一个变量所引用的对象是什么类型,仍然可以通过这个变量调用方法,在运行过程中根据变量所引用的对象类型,动态决定调用哪个对象中的方法

Java静态语言实现多态的三个必要条件

  • 继承
  • 方法重写
  • 父类引用指向子类对象

python是动态语言,与java不同

例子:
在这里插入图片描述
在这里插入图片描述

10.8 特殊方法和特殊属性

1.概述

2.特殊属性
__dict__应用
在这里插入图片描述
__class __ 输出对象所属的类
在这里插入图片描述
其他特殊属性
在这里插入图片描述
3.特殊方法

1.add
1)add简单实例
在这里插入图片描述
2)字符串之间的相加

刚开始不能直接相加
在这里插入图片描述
使用add特殊方法之后
在这里插入图片描述
2.len

普通用法
在这里插入图片描述
求字符串的长度
在这里插入图片描述
3.创建对象的特殊方法 new与init

在这里插入图片描述
传参方式
在这里插入图片描述

10.9 类的赋值与浅拷贝

1.变量的赋值操作

只是形成两个变量,实际上还是指向同一个对象

在这里插入图片描述

在这里插入图片描述
2.类的浅拷贝

Python拷贝一般是浅拷贝,拷贝是,对象包含的子对象内容不拷贝,因此,元对象与拷贝对象会引用同一个子对象

3.类的深拷贝

使用copy模块的deepcopy函数,递归拷贝对象中包含的子对象、源对象和拷贝对象左右的子对象也不相同

在这里插入图片描述

十一、模块和包

11.1 概述

1.一个保重可以包含N多个模块,一个模块中可以包含N多个模块,也可以包含N多个类和语句,这些模块组合在一起就成了python程序
2.在python中一个拓展名为.py的文件就是一个模块

理解图
在这里插入图片描述

11.2 模块的导入

1.格式

  1. import 模块名称 [as 别名]

  2. from 模块名称 import 函数/变量/类

例子1.
在这里插入图片描述
例子2.
在这里插入图片描述

2.如何导入自定义模块

step1.自定义一个模块calc
在这里插入图片描述
step2.找到需要导入模块的那个文件,右键选择Make Directory as——Sources Root
在这里插入图片描述
step 3.直接导入
在这里插入图片描述

11.3 包

1.包与目录的区别

  • 包含_init_.py文件的目录成为包
  • 目录里通常不包含_init_.py文件

2.包的导入

import 包名.模块名

示例:

step1.
新建一个package,在package里新建一个模块
结果如下:
在这里插入图片描述
step2.

在main.py中导入包
在这里插入图片描述
3.注意事项

i. 使用import方式导入的时候,只能跟包名或者模块名
即:

import package
import module

ii. 使用from…import可以导入包,模块,函数,变量

from package1 import module_A
from package1.module_A import
a

11.4 python中常用的内置模块

在这里插入图片描述
使用案例
**在这里插入图片描述**

11.5 第三方模块的安装和使用

1.安装

打开dos窗口,输入:

pip install 模块名

十二、文件

12.1 编码格式

  • python的解释器使用的是Unicode(内存)
  • .py文件在磁盘上使用UTF-8存储(外存)
    在这里插入图片描述

12.2 文件的读写原理

1.文件的读写俗称“IO”操作
2.原理

在这里插入图片描述
3.文件操作流程
在这里插入图片描述

4.语法规则

file=open(filename [ ,mode,encoding])

在这里插入图片描述
5.常用的文件打开模式
在这里插入图片描述

12.3 os模块

  • os模块是python内置的与操作系统功能和文件系统相关的模块,该模块中的语句的执行结果通常与操作系统有关,在不同的操作系统上运行,得到的结果可能不一样

例子:运行该文件时分别打开了win10系统上的记事本,计算器和迅雷软件
在这里插入图片描述
os模块操作目录相关函数
在这里插入图片描述
在这里插入图片描述

12.4 os.path

在这里插入图片描述

十三、案例分析

13.1 学生信息管理系统系统设计

在这里插入图片描述
总体业务流程
在这里插入图片描述

13.2 系统开发环境

  • 操作系统 win10
  • python解释器
  • 开发巩固:pyCharm
  • python内置模块:os,re

13.3 主函数设计

在这里插入图片描述

def main():
    while True:
      menm()
      choice=int(input('请选择:'))
      if choice in [0,1,2,3,4,5,6,7]:
          if choice==0:
              answer=input('您确定退出系统吗?y/n')
              if answer=='y':
                    print('谢谢您的使用')
                    break
              else:
                    continue
          elif choice==1:
              insert()
          elif choice==2:
              search()
          elif choice==3:
              delete()
          elif choice==4:
              modify()
          elif choice==5:
              sort()
          elif choice==6:
              total()
          elif choice==7:
              show()
def menm():
print('===============学生信息管理系统================')
print('--------------------功能菜单------------------')
print('\t\t\t\t 1.录入学生信息')
print('\t\t\t\t 2.查找学生信息')
print('\t\t\t\t 3.删除学生信息')
print('\t\t\t\t 4.修改学生信息')
print('\t\t\t\t 5.排序')
print('\t\t\t\t 6.统计学生总人数')
print('\t\t\t\t 7.显示所有学生信息')
print('\t\t\t\t 0.退出系统')
def insert():
    pass
def search():
    pass
def delete():
    pass
def modify():
    pass
def sort():
    pass
def total():
    pass
def show():
    pass
if __name__=='__main__':
    main()

13.4 insert()函数的实现

在这里插入图片描述

def insert():
   student_list=[]
   while True:
      id=input('请输入学生id:')
      if not id:
          break
      name=input('请输入姓名:')
      if not name:
          break
      try:
          english=int(input('请输入英语成绩:'))
          java=int(input('请输入Java成绩:'))
          python=int(input('请输入python成绩:'))
      except:
          print('输入无效,不是整数类型,请重新输入')
          continue
      # 将录入的学生信息保存在字典里
      student={'id':id,'name':name,'english':english,'java':java,'python':python}
      # 将学生信息添加到列表当中
      student_list.append(student)

13.5 delete()函数的实现

在这里插入图片描述

13.6 修改学生信息modify()

在这里插入图片描述

13.7 查找学生信息

在这里插入图片描述

13.8 统计学生总人数

在这里插入图片描述

13.9 显示所有学生信息功能

在这里插入图片描述

13.10 排序方式的实现

在这里插入图片描述

十四、安装第三方库遇到的问题

1. pip点击安装失败,显示Fatal error in launcher: Unable to create process using。。。
在这里插入图片描述
检查:
1)环境变量配置问题
2)使用python -m pip或者其他命令解决
在这里插入图片描述

import无法导入问题,我人傻了
解决

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值