欢迎光临散文网 会员登陆 & 注册

花了2万多买的Python教程全套,现在分享给大家,入门到精通(Python全栈

2023-06-25 02:37 作者:实话实说ggggg  | 我要投稿

# 转为字符

## n \换行 n= newline

## \t :站位符 t=tap

## \r: 取代 r=replace

## \b: 退格 b=before

## \ :转意字符

## r :还原转意字符 r=return

# 二进位 $ 2^8

  • ASCII
  • GBK
  • UniCode chr(ob01100111001)

# 位运算符


25.运算符_位运算 P26 - 03:45


&, | ,<<,>>

# 运算的优先级


26.运算符的优先级 P27 - 00:27


# 程序的流程控制

##程序的组织结果


27.程序的组织结构_顺序结构 P28 - 00:47


## 顺序结构

## 选择结构 if

### 单分支 if

### 双分支 if else

### 多分支 if elif。。。。else

### 嵌套 if “ if else” else


32.分支结构_嵌套if的使用 P33 - 02:31



28.对象的布尔值 P29 - 00:36


bool( ) & type( )

[ ]=list() , ( )=tuple( )

## 条件 简写

```

print str(a+'大于等于’+str(b) if a>b)

```


33.条件表达式 P34 - 05:28


### pass 语句(占位符)


34.pass语句 P35 - 01:59


### rang 语句


35.range函数的使用 P36 - 02:31


rang(n)

rang( star, stop)

rang(star, stop,step)

## 循环语句 while , for in


36.while循环 P37 - 00:26


### while : while= if +1

#### 作业 1~100的偶数


37.whil练习题_1到100之间的偶数和 P38 - 00:24


## for 循环 for in 遍历 字符串,列表



38.for_in循环 P39 - 00:02


···python

for _ in range(5):

    print('五次内容')

```

###


39.for_in练习题_100到999之间的水仙花数 P40 - 00:22


## 流程控制语句 break, continue

### break 与if 使用


40.流程控制语句break P41 - 01:05


### continue 与if使用 结束当前循环进入下一个循环


41.流程控制语句continue P42 - 00:07


#### 练习


41.流程控制语句continue P42 - 01:07


#### 嵌套循环练习 输出三行四列的矩形


43.嵌套循环 P44 - 01:16


```pythotn

for i in range(3):

for j in range(4):

print('*', end='\t')

print()#一定要注意print的位置\

```

#### 打印九九乘法表


43.嵌套循环 P44 - 08:53


```pythotn

for i in range(1,10):

for j in range(1,i+1): # 因为()是前开后合

print(j,'*',i, '=',i*j,end='\t')

print()

```

### 二重循环 流程控制语句 break,continu

# 类型

## 列表

### 列表的生成式

[i for i in range (10)]

### 列表操作

#### 查询,获取单个元素 获取多个元素 in /not in

#### 修改

  1. 增加 append() extend() insert() 切片
  2. 删除 remove() pop() clear() del 切片[ star: end :sep]
  3. 改 索引 [ ] 切片 [ star: end :sep]


## 字典 ( 键:值 ) 对的集合 hash(key ) key只能是不可变序列:字符串


58.字典的实现原理 P59 - 00:29



### 字典的创建 1 直接写 2 用 key=变量

### 获取字典的元素 1 print(字典[key ]) 2 字典.get('key')

### 字典的常用操作 1 查看 2遍历

### 字典的特点 key不能重复,无序 key是字符串

### 字典的生成式 函数 zip ()打包 list1为键 list2为值


65.字典生成式 P66 - 01:22


可迭代对象:可以被遍历的对象

### 总结

## 元组 :是一个不可变序列 不能 增 删 改 操作



66.什么是元组 P67 - 01:33


### 元组创建方式


67.元组的创建方式 P68 - 02:00


#### 空列表 空字典 空元组 的创建 list()dict() tuple()为内置函数也能创建空~~

### 元组的操作


68.为什么要将元组设计成不可变序列 P69 - 04:50



#### 元组元素的获取 1 索引 2 遍历

## 集合 set{ } 没有值的字典 也是hash() 函数

### 创建方式

### 相关操作

#### 集合元素的判断操作·in或not in·集合元素的新增操作

#### 调用add()方法,一次添中一个元素

·调用update()方法至少添中一个元素

#### 集合元素的删除操作

·调用remove)方法,一次删除一个指定元素,如果指定的元素不存在抛出KeyError

·调用discard()方法,一次删除一个指定元素,如果指定的元素不存在不抛界

·调用pop()方法,一次只删除一个任意元素

·调用clear()方法,清空集合

### 集合直之间的关系

#### 两个集合是否相等

·可以使用运算符==或!=进行判断

####一个集合是否是另一个集合的子集 或超集

·可以调用方法issubset进行判断 B是A的子集

·可以调用方法issuperset进行判断A是B的超集

#### 两个集合是否没有交集

·可以调用方法isdisjoint进行判断

### 集合的数学操作


73.集合的数据操作 P74 - 03:25


交集 s1. intersecton(s2) &

并集 s1. union(s2) +

差集 s1. difference(s2) -

对称差集 并集 s1.symmertric_difference(s2)

## 字符串 不可变

### 字符串的对齐



78.字符串的常用操作_字符串内容... P79 - 00:38



### 字符串的比较 ord()得到ud值,chr()用值得到 字



82.字符串的比较操作 P83 - 02:48


### 字符串的创建

  • fromat 方法 ’{}{}'format(a,b)
  • 占位符
  • f‘
  1. %s , %d 。%( s,d)
  2. {0} {0} format( a,b )
  3. f ` {a} {b}



84.格式化字符串 P85 - 04:37


#### % 可以表宽带,精度


###字符串的编码 .encode(encoding='gbk') 解码 .decode(encoding='gbk')


85.字符串的编码与解码 P86 - 00:56



### 总结

# 函数 input print() type()。。。

## 创建 def fun() return

def 函数名(收入参数):

函数体

return(xx)

## 参数调用


87.函数调用的参数传递_位置实参... P88 - 01:04


  1. 按位置传递
  2. 按名称调用传递

###练习 可变对象


88.函数参数传递的内存分析 P89 - 01:57


  1. 实际参数与形式参数可以不一致:根据位置传参
  2. 调用过程中,不可变对象如:字符串,不会受函数影响,可变对象 如 列表 会受函数影响

## 函数的返回值 return 函数是否要用return根据情况而定


89.函数的返回值 P90 - 00:33


  1. 0的布尔值为false ,其它数的布尔值是true
  2. 返回值如果是一个返回原对象的类型,如果是两个返回的是元组

## 函数参数定义 定义值 称为默认值

### 可变的位置参数

  1. def fun (* a) ,字形参 def fun(**a) 只能有一个
  2. 但可以 def fun (*a,**a)


91.函数参数定义_个数可变的位置... P92 - 00:45


### 参数总结


92.函数的参数总结 P93 - 00:39


## 变量的作用域 局部作用 全局作用 global 局部=全局作用


93.变量的作用域 P94 - 00:05


## 递归函数 包含自己的函数


  1. 递归调用与递归中止条件 if else


94.递归函数 P95 - 01:53


### 练习 裴波数列 n= (n-2)+(n-1)


95.斐波那契数列_本章总结 P96 - 01:18


## 函数总结



95.斐波那契数列_本章总结 P96 - 04:14



# 程序bug

## 由来 分类 debug

### SyntaxError 语法错误


97.Bug的常见类型_粗心导致的错误 P98 - 00:07


  1. input() 的所有内容为字符串
  2. 变量没赋值
  3. 一个等号叫赋值 两个等号才叫比较

### index Error 索引越界错误 not defined ?.方法没有被定义


98.Bug的常见类型_错误点不熟悉导致错误 P99 - 00:10


### 思路不清


99.Bug的常见类型-思路不清导致的部题 P100 - 00:35


在各部位打印 将没用的代码注释掉

print(item)

print('--------------')

分开看的比较清楚

### 由于意外 try except else


100.Bug的常见类型-被动掉坑-try-except P101 - 00:41


try except else finally


101.try-except-else结构与try-except-else-finally结构 P102 - 00:43


## 常见异常类型异常类型

ZeroDivisionError :除( 或取模) 零( 所有数据类型)

lndexError:序列中没有此索引(index)

KeyError:映射中没有这个键

NameError:未声明/ 初始化对象( 没有属性)

SyntaxError:Python 语法错误

ValueError:传入无效的参数描述






# 编程思想

面向过程 面向对象 相辅相成


105.编程的两大思想_面向过程_面向对象 P106 - 01:01


## 编程界的两大阵营

面向过程:事物比较简单, 可以用线性的思维去解决

面向对象:事物比较复杂, 使用简单的线性思维无法解决

共同点 面向过程和面向对象都是解决实际问题的一种思维方式

二者相辅相成, 并不是对立的

解决复杂问题, 通过面向对象方式便于我们从宏观上把握事物之间复杂的关系、方便我们分析

整个系统; 具体到微观操作, 仍然使用面向过程方式来处理

# 类与对象

## 类的 "定创建"

类名 单词首字母大写

 对象三要素  id  class  value 类也是对象

1. 实例方法 def 方法(self)

2. 静态方法 @staticmethod def 方法()

3. 类方法  @classmethod   def 方法(cls)

  • 
    107.定义Python中的类 P108 - 01:34
    

## 类的 "用创建" (实例化)变量=类名()

  • 类 内 方法(功能) 的 调用

 1. 对象. 方法名()

 2. 类名.方法名(对象)

  • 一个类可以创建多个对象


108.对象的创建 P109 - 00:10


1. 类属性: 类中方法外的变量称为类属性, 被该类的所有对象所共享

2. 类方法: 使用@classmethod 修饰的方法, 使用类名直接访问的方法

3. 静态方法. 使用@staticmethod 修饰的主法, 使用类名直接访问的方法


109.类属性_类方法_静态方法的使用方式 P110 - 00:17


## 动态绑定属性和方法


110.动态绑定属性和方法 P111 - 00:13


  • 动态绑定属性

实例名.属性=对象 直接绑定 不会改变用此类的别的类 就叫动态绑定

  • 动态绑定 “方法”

实例名. name=函数 直接绑定 不会改变用此类的别的类 这也是动态绑定



|封装| 继承|方法重写|object 类| 多态|特殊方法和特殊属性|

| --- | --- | --- | --- | --- | --- |

|提高安全性|

## 面向对象的三大特征

## 封装. 提高程序的安全性

1. 将数据( 属性) 和行为( 方法) 包装到类对象中。在方法内部对属性进行操作, 在类对象的外部调用方法。这样, 无需关心方法内部的具体实现细节, 从而隔离了复杂度。

2. 在Python 中没有专门的修饰符用于属性的私有, 如果该属性不希望在类对象外部被

访问, 前边使用两个"-"


110.面向对象的三大特征_封装的... P112 - 00:21


## 继承. 提高代码的复用性

语法格式: class 孑类类名( 父类1 , 父类2 一)

1. 如果一个类没有继承任何类, 则默认继承object Python 支持多继承

2. 定义子类时, 必须在其构造函数中调用父类的构造函数


111.继承及其实现方式 P113 - 02:06

 

super().方法()

### 方法重写


112.方法重写 P114 - 00:31


也可以def 方法

super().方法

self().方法

这样 子类的方法就加在了父类的后面

### object 类

dir()内值函数可查 属性 方法


113.object类 P115 - 00:13


__str__方法:用于返回对象的描述(内存地址

## 多态

 简单地说, 多态就是“ 具有多种形态" 它指的是: 即便不知道一个变量所引用的

对象到底是什么类型, 仍然可以通过这个变量调用方法, 在运行过程中根据变

量所引用对象的类型, 动态决定调用哪个对象中的方法。


114.多态的实现 P116 - 04:43


特殊属性 和方法


115.特殊属性 P117 - 00:10


__dict__获得类对象或实例对象所绑定的所有属性和方法的字典

__len__通过重写len方法, 让内置函数len() 的参数可以是自定义类型

__add__通过重写add 方法, 可使用自定义对象具有“ + ” 功能


__init__用于创建对象init 对创建的对象进行初始化

__new__创建对象


117.__new__与__init__演示创建对象的过程 P119 - 01:15



class 对象 的 type

base:对象父类的的个数 与名称

mro: 类的层次列表 有几个子类

## 类的浅拷贝与深拷贝

*  变量的赋值操作

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

*  浅拷贝

 Python 拷贝一般都是浅拷贝, 拷贝时, 对象包含的子对象内容不拷贝,

因此, 源对象与拷贝对象会引用同一个子对象

* 深拷贝

 使用copy 模块的deepcopy 函数, 递归拷贝对象中包含的子对象

源对象和拷贝对象所有的子对象也不相同

# 模块

一个.py文件就是一个模块

## 使用模块的好处

· 方便其它程序和脚本的导入并使用

· 避免函数名和变量名冲突

· 提高代码的可维护性

. 提高代码的可重用性

## 导入模块


121.模块的导入 P123 - 01:18


import 模块名称[a s 别名]

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

(print(dir(模块))查看模块的 方法 (函数)


121.模块的导入 P123 - 07:37


方法:目录下右键 选 将目录记为 选 根目录

以主程序形式运行

## 以主程序形式运行


122.以主程序方式运行 P124 - 00:48


· 在每个模块的定义中都包括一个记录模块名称的变量一name 一程序可以检查该变量, 以确定他们在哪个模块中执行。如果一个模块不是被导入到其它程序中执行, 那么它可能在解释器的顶级模块中执行。顶级模

块的name 变量的值为main

main 语句:

if __name__ ='__main__':

程序()

# Python中的包

  • 包是一个分层次的目录结构, 它将一组功能相近的模块组织在一个目录下
  • 作用:

. 代码规范

· 避免模块名称冲突

  • 包与目录的区别

· 包含—inlt— py 文件的目录称为包

.目录里通常不包含一init 一py 文件

  • 包的导入

import 包名. 模块名

## 包的创建


123.Python中的包 P125 - 02:24


## 包的导入

from 包 import 模块.类 函数 as 名

也可以 import 包

import 模块

# Python 中常用的内置模块


124.Python中常用的内容模块 P126 - 00:16


* sys: 与python解释器及其环境操作相关的标准库

* time:  提供与时间相关的各种函数的标准库

* os: 提供了访问操作系统服务功能的标准库

* calendar: 提供与日期相关的各种函数的标准库

* urllib: 用于读取来自网上( 服务器) 的数据标准库

* json: 用于使用JSON 序列化和反序列化对象

* re: 用于在字符串中执行正则表达式匹配和替换

* math: 提供标准算术运算函数的标准库

* decimal: 用于进行精确控制运算精度、有效数位和四舍五入操作的十进制运算

* logging: 提供了灵活的记录事件、错误、警告和调试信息等目志信息的功能

## 第三方模块的安装

pip install 模块 (在线安装方式)

### 练习 安装使用 schedule 模块


125.第三方模块的安装与使用 P127 - 01:56



## 常见的字符编码格式

. Python 的解释器使用的是UniCode ( 内存)

. py 文件在磁盘上使用UTF-8 存储( 外存)

    ASCII: 7 位表示1 个字符, 最高位为0 , 只能表示128 个字符

    ISO8859:  8 位表示1 个字符, 能表示256 个字符, 兼容ASCII

    GB2312  GBK GB18030:中文编码 兼容 ISO8859

    UTF-8: UTF-8是Unicode 的实现变长编码, 1~4 个字节表示1 个字符, 英文1 个字节, 汉字3 个字节。


126.编码格式的介绍 P128 - 00:51


命令 encoding xxx 可以修改文件格式

# 文件读写原理 (IO 操作)


127.文件读写的原理_读取磁盘文... P129 - 01:38




127.文件读写的原理_读取磁盘文... P129 - 06:35


``` file= open('a.txt','r')``

## 常用的文件打开模式

文件的类型: 按文件中数据的组织形式, 文件分为以下两大类

* 文本文件: 存储的是普通“ 字符" 文本, 默认为unicode 字符集, 可以使用记本事程序打开

* 二进制文件: 把数据内容用“ 字节" 进行存储, 无法用记事本打开, 必须使用专用的软

件打开, 举例mp3 音频文件,jpg 图片doc 文档等

### 打开模式


128.常用的文件打开模式 P130 - 00:33


r: 以只读模式打开文件, 文件的指针将会放在文件的开头

w: 以只写模式打开文件, 如果文件不存在则创建, 如果文件存在, 则覆盖原有内容, 文件指针在文件的

开头

a: 以追加模式打开文件, 如果文件不存在则创建, 文件指针在文件开头, 如果文件存在, 则在文件末尾

追加内容, 文件指针在原文件末尾

b: 以二进制方式打开文件, 不能单独使用, 需要与共它模式一起使用, rb , 或者wb

+: 以读写方式打开文件, 不能单独使用, 需要与其它模式一起使用, a+

### 文件对象的常用方法

read readline readlines writ .writelines()seek tell frush close


129.文件对象的常用方法 P131 - 00:23


read(size): 从文件中读取size个字节或字符的内容返回。若省略[ size  ] ,则读取到文件末尾, 即一次读取文件所有内容

readline ()从文本文件中读取一行内容

readlines(): 把文本文件中每一行都作为独立的字符串对象, 并将这些对象放入列表返回

write (str): 将字符串str 内容与入文件

writelines (s_list): 将字符串列表s 一list 与入文木文件, 不添加换行符

seek (offset [ , whence): 把文件指针移动到新的位置, offset 表示相对于whence 的位置:ffset 为正往结束方向移动, 为负往开始方向移动

whence 不同的值代表不同含义:

0 : 从文件头开始计算( 默认值)

1 : 从当前位置开始计算

2 : 从文件尾开始计算

tell():返回文件指针的当前位置

flush():把缓冲区的内容写入文件, 但不关闭文件

close (): 把缓冲区的内容写入文件, 同时关闭文件, 释放文件对象相关资源

### with句 (上下文管理器)


130.with语句 P132 - 00:59


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

  1. 原理:

## 目录 操作

· os 模块是Py on 内置的与操作系统功能和文件系统相关的模块,

该模块中的讠口句的执行结果通常与操作系统有关, 在不同的操

作系统上运行, 得到的结果可能不一样。

.os 模块与os.path


131.os模块的常用函数 P133 - 02:01


### os 模块用于对目录或文件进行操作

os.system(应用)os.gecwd() listdir(path) mkdir(path,[mode]) rmdir(path) removedirs(path1/path2) chdir(path)

#### OS

* system():打开应用

* getcwd (): 返回当前的工作目录

* mkdir (path , [mode]): 创建目录

* makedirs (path1/path2. . . [ , mode)): 创建多级目录

* rmdir (path): 删除目录

* removedirs (path 1 /path2.....):

* 删除多级目录 chdir (path): 将path 设置为当前主作目

#### os.path操作目录 相关函数

os.path.函数()


132.os.path模块的常用方法_课堂案例 P134 - 00:11


* abspath (path): 用于获取文件或目录的绝对路径

* exists (path): 用于判断文件或目录是否存在, 如果存在返回True ,否则返回Fa1se

* join (path , name): 将目录与目录或者文件名拼接起来

* splitext(): 分离文件名和扩展名

* basename (path): 从一个目录中提取文件名

* dirname (path): 从一个路径中提取文件路径, 不包括文件名

* isdir (path): 用于判断是否为路径

#### 练习


132.os.path模块的常用方法_课堂案例 P134 - 06:32


# 学生管理系统


135.学生信息管理系统-主函数设计 P137 - 09:42















花了2万多买的Python教程全套,现在分享给大家,入门到精通(Python全栈的评论 (共 条)

分享到微博请遵守国家法律