Python语言基础
2023-01-15 10:59:44 0 举报
AI智能生成
Python基础知识,小白入门基础知识。
作者其他创作
大纲/内容
13、面向对象编程-模块化/异常
模块化
模块(module)
在python中一个py文件就是一个模块
模块化指将一个完整的程序分解为一个一个小的模块
1、方便开发
2、方便维护
3、模块可以复用
模块的创建
模块名要符合标识符的规范
在一个模块中引入外部模块
1、import 模块名
模块名就是python文件名,没有.py
可以引入同一个模块多次,但是模块的实例只会创建一个
每个模块内部都有一个_name_属性,通过这个属性获取模块名
变量前有_,只能在模块内部访问
2、import 模块名 as 模块别名
3、from 模块名 import 变量,变量....
from 模块名 import 变量 as 别名
4、from 模块名 import *
引入模块中所有内容
模块的使用
访问模块中的变量:模块名.变量名
访问模块中的函数:模块名.函数名()
包(Package)
包也是一个模块;一个文件夹
包中必须有个_init_.py 文件,包含包中主要内容
python标准库
“开箱即用”思想
12、面向对象编程-封装/继承/多态(特性)
封装的简介
封装指隐藏对象中一些不希望被外部访问到的属性或方法
隐藏一个对象重的属性
将对象的属性名 修改为一个与外部不同的名字
getter 获取对象中的指定属性(get_属性名)
setter 设置对象的指定属性(set_属性名)
__(双下划线)开头的属性是隐藏属性,无法通过对象访问
一般会将一些私有属性(不希望被外部访问的属性)以_(单下划线)开头(_属性名)
property装饰器
@property装饰器,用来将一个get方法,转换为对象的属性
继承的简介
继承,通过继承可以使一个类获取到其他类中的属性和方法
在定义类时,可以在类名后中指定当前类的父类(超类)
创建类时,如果省略了父类,则默认父类为object
super()获取父类的方法
方法的重写
在子类中如果有和父类同名的方法,则通过子类实例去调用方法时,会调用子类方法。
多重继承
类名._bases_ 这个属性可以用来获取当前类的所有父类
一个类同时指定多个父类
多态
一个对象可以以不同的形态去呈现
类中的属性和方法
属性
类属性,直接在类中定义的属性是类属性
类属性可以通过类或类的实例访问到
类属性只能通过类对象来修改,无法通过实例对象修改
实例属性,通过实例对象添加的属性属于实例属性
实例属性只能通过实例对象来访问和修改,类对象无法访问修改
方法
实例方法
在类中定义,以self为第一个参数的方法都是实例方法
实例方法可以通过实例和类去调用
当通过实例调用时,会自动将当前调用对象作为self传入
当通过类调用时,不会自动传递self,此时我们必须手动传递self
类方法
在类内部使用 @classmethod 来修饰的方法属于类方法
类方法的第一个参数是cls,自动传递,是当前的类对象
静态方法
在类中使用 @staticmethod 来修饰的方法属于静态方法
基本上是一个和当前类无关的方法,它知识一个保存到当前类中的函数
静态方法不需要指定任何的默认参数,静态方法可以通过类和实例去调用
垃圾回收
在程序中没有被引用的对象就是垃圾,影响运行性能
垃圾回收就是将垃圾对象从内存中删除
通过 _del_ 特殊方法,它会在对象被垃圾回收前调用
特殊方法
特殊方法都是使用_开头和结尾的
1、什么时候调用
2、调用的作用
11、面向对象编程-基础
面向对象(oop)
所有操作都是通过对象来进行的
面向对象的编程思维,将所有的功能统一保存到对应的对象中
类的简介(class)
类,相当于图纸;在程序中需要根据类来创建对象
创建对象的对象
也称对象为类的实例(instance)
可以想对象中添加变量,对象中的变量成为属性
语法:对象.属性名 = 属性值
自定义的类都需要大写字母开头
定义
class 类名([父类]):代码块
在类中定义的变量,将会成为所有实例的公共属性
在类中定义的函数,称为方法,可以通过所有实例来访问
类的定义
类和对象都是对现实生活中或程序中内容的抽象
包含两部分
1、数据(属性)
调用
对象.属性名
2、行为(方法)
调用
对象.方法名()
默认传递一个参数
属性和方法
类对象和实例对象中都可以保存属性(方法)
1、如果这个属性(方法)是所有实例共享的,则应该将其保存到类对象中;否则保存到某个实例中
2、一般情况,属性保存到实例对象中,方法保存到类对象中
方法被调用,解析器会自动传递第一个实参数(调用方法的对象本身)
类的特殊方法init
在类中可以定义一些特殊方法(魔术方法)
特殊方法都是以_开头,_结尾的方法
特殊方法不要调用,特殊方法将会在特殊的时刻自动执行
1、特殊方法调用时间
在对象创建后自动立刻执行
2、特殊方法的作用
初始化对象中的属性(赋值)
_init_
对象的初始化方法
def _init_(self,...):
通过 对象.属性 的方式来修改属性的值
10、递归与其他函数知识
递归
递归简单理解就是自己去引用自己
递归式函数,在函数中自己调用自己
递归式函数的两个要件
1、基线条件
问题可以被分解为的最小问题,当满足基线条件时,递归就不在执行了
2、递归条件
将问题继续分解的条件
高阶函数
函数式编程
在python中,函数是一等对象
1、对象是在运行时创建的
2、能赋值给变量或作为数据结构中的元素
3、能作为参数传递
4、能作为返回值返回
高阶函数
1、接收一个或多个函数作为参数
2、将函数作为返回值返回
filter()函数
可以从序列中过滤出符合条件的元素,保存到一个新的序列中
参数:
1、函数,根据该函数来过滤序列(可迭代的结构)
2、需要过滤的序列(可迭代的结构)
返回值:
过滤后的新序列(可迭代的结构)
匿名函数
lambda 函数表达式专门用来创建一些简单的函数,
语法:
lambda 参数列表:返回值
map()函数可对对象中的所有元素做指定的操作,然后返回
sort()方法用来列表中的元素进行排序;关键字,key
闭包
将函数作为返回值返回,也是一种高阶函数
9、函数
函数简介(function)
函数也是一个对象
函数可以用来保存一些可执行代码,可多次调用
创建函数
def 函数名([形参1,形参2,...]): 代码块
需要调用函数代码才会执行
调用函数
fn()
函数的参数
形参
定义形参就相当于在函数内部声明了变量,但是并不赋值
可以指定默认值
实参
实参赋值给对应的形参
参数的传递方式
位置参数
就是将对应位置的实参赋值给对应的位置的形参
关键字参数
直接根据参数名去传递参数
位置参数和关键字参数可以混合使用
实参的类型
实参可以传递任意类型的对象
不定长参数(装包)
在定义函数时,可以在形参前边加上一个*,这样这个形参将会获取到所有的实参(保存到元组中)
只能有一个带星号参数
*形参只能接收位置参数,而不能接收关键字参数
**形参可以接收其他的关键字参数,保存到字典中
参数解包
传递实参时,也可以在序列类型的参数前添加星号,这样它会自动将序列中的元素依次作为参数传递
通过** 来对一个字典进行解包操作
返回值
返回值就是函数执行后返回的结果
通过return 来指定函数的返回值
可以通过一个变量接收函数的返回值
在函数中,return后的代码都不会执行;ruturn一旦执行函数自动结束
文档字符串
help()函数
help() 是python中的内置函数;可以查询python中的函数用法
语法: help(函数对象) 如:help(print)
文档字符串(doc str)
在定义函数时,可以在函数内部编写文档字符串,文档字符串就是函数的说明
作用域
作用域(scope)指变量生效的区域
类型
全局作用域(全局变量)
在程序执行时创建,在程序执行结束时销毁
函数作用域(局部变量)
在函数调用时创建,在调用结束时销毁
变量查找,会优先在当前作用域中寻找该变量
在函数内部修改全局变量,则需要使用global关键字,来声明变量;如:global a
命名空间
命名空间(namespace)
指变量存储的位置,每一个变量都需要存储到指定的命名空间当中
是一个专门用来存储变量的字典
locals()用来获取当前作用域的命名空间;返回一个字典
在函数内部调用locals()会获取到函数的命名空间
globals()函数可以用来在任意位置获取全局命名空间
8、元组/字典
range()
一个生成自然数序列的函数
三个参数
1、起始位置(可以省略,默认0)
2、结束位置
3、步长(可以省略,默认1)
应用
通过range()可以创建一个执行指定次数的for循环
元组
tuple
不可变的序列
小括号()
当元组不是空元祖时,括号可以省略
元组的解包(解构)
指就是将一个元组当中每一个元素都赋值给一个变量
变量与元素数量一致
用于值交换
a,b=b,a
可变对象
是指对象的值可变
列表是可变对象
a[0]=10 (改对象)
a = [1,2,3](改变量)
==和is
==和!=
比较的是对象的值是否相等
is和is not
比较的是对象的id是否相等(是否为同一个对象)
字典简介
字典(dict)
字典属于一个新的数据结构,称为映射(mapping)
字典的作用和列表类似,都是用来存储对象的容器
列表存储数据的性能很好,但查询数据的性能很差
键值对(key-value)结构;每一个键值对我们称其为一项(item)
字典的键可以是任意的不可变对象(int、str、bool、tuple);一般使用字符串str
键不能重复
字典的值可以是任意对象
字典的使用
创建字典
使用{ }
{k1:v1,k2:v2,k3:v3}
使用dict()函数来创建字典(key都是字符串)
也可以将一个包含有双值子序列转换为字典
len()获取字典中键值对的个数
in 检查字典中是否包含指定的键
not in
根据键来获取字典中的值
语法:d[key]
字符串加引号
变量不加引号
get(key[,default])该方法用来根据键获取字典中的值
修改字典/添加
d[key] = value
如果key存在,则覆盖,否则添加新key
updata([other])
将其他的字典中的key-value添加到当前字典中
删除 del
del d['a']
d.popitem()
随机删除字典中的一个键值对,一般都会删除最后一个键值对
删除后,删除的k-v则为返回值返回(元组)
d.pop('k')
根据key删除字典中的key-value
会将被删除的value返回
d.clear()
用来清空字典
d.copy()
该方法用于对字典进行浅复制(只是复制对象中的值)
字典的遍历
keys()
该方法会返回字典的所有的key(返回序列)
values()
该方法会返回字典的所有的值(返回序列)
items()
该方法会返回字典所有的项(返回序列)
集合(set)
特点
集合和列表非常相似
不同点
1、集合中只能存储不可变对象
2、集合中存储的对象是无序的
3、集合中不能出现重复的元素
创建集合
使用{ } 来创建集合
使用set()
s = set() 空集合
将序列和字典转换为集合
添加元素
s.ass(n)
删除元素
s.pop()
随机删除并返回一个集合中的元素
s.remove()
删除集合中指定的元素
s.clear()
集合运算
& 交集运算
| 并集运算
- 差集
^ 异或集
< =
是否是父子集关系
1、计算机基础
课程介绍
多敲代码
李立超(lichao.li@foxmail.com)
必备技能
1·计算机基本操作
2·打字的速度
3·英语(阅读英文文档)
计算机
根据输入的指令进行执行的机器
计算机的使用方式
我们必须要通过软件来对计算机完成各种操作
用户需要调用软件提供的接口(Interface 交付界面)来操作计算机
用户界面分成两种:TUI(文本交互界面)和 GUI(图形化交互界面)
windows的命令行
即文本交互界面,通过命令行可以使用一个一个的指令来操作计算机
任何计算机的操作系统中都包含有命令行(windows、linux、macOS)
命令行名称
命令行、命令行窗口、DOS窗口、命令提示符、CMD窗口、shell、终端、Terminal
打开cmd
命令行的结构
-版本及版权声明
-命令提示符
路径
cd 来切换目录
常用的dos命令
dir 查看当前目录下的所有文件(夹)
cd 进入到指定的目录
· 表示当前目录
·· 表示上一级目录
md 创建一个目录
rd 删除一个目录
del 删除一个文件
cls 清除屏幕
命令的语法
命令【参数】【选项】
环境(系统)变量(enviroment variable)
1·查看环境变量
2·添加环境变量
3·修改环境变量
4·删除环境变量
path环境变量
path环境变量中保存的是一个一个路径(常用文件路径)
进制
十进制
二进制
1bit(位)
八进制
十六进制
0、1、2、3、4、5、6、、7、8、9、a、b、c、d、e、f
文本文件和字符集
文本
纯文本
富文本
编码
将字符转换为二进制码的过程
解码
将二进制码转换为字符的过程
字符集
编码和解码时所采用的规则
ASCII
美编码,7位
包含128个字符
ISO-8859-1
欧编码,8
包含256字符
GB2312
GBK
Unicode
万国码,所有语言和符号
UTF-8
常用
UTF-16
UTF-32
纯文本编辑器
计算机语言简介
机器语言
二进制
汇编(符号)语言
符号
高级语言
编译型语言和解释型语言(根据转换时机不同)
计算机只能识别二进制码(机器码),所以任何的语言在交由计算机执行时必须要先转换为机器码
2、python介绍
解释型语言
Python用途
WEB应用
爬虫程序
科学计算
自动化运维
大数据
人工智能
python开发环境搭建
解释器分类
CPython
PyPy
python的交互界面
命令提示符: >>>
基础概念
1·表达式
2·语句
3·程序(program)
4·函数(function)
分类
内置函数
自定义函数
两个要素
参数
-()中的内容就是函数的参数
-函数中可以没有参数,也可以有多个参数,多个参数之间使用,分隔
返回值
函数的返回结果
3、python基本数据类型
python的基本语法
1、在python中严格区分大小写
2、python中的没一行就是一条语句,每条语句以换行结束
3、python中每一行语句不要过长(80字符)
4、一条语句可以分多行编写,语句后边以\结尾
5、python是缩进严格的语言,所以在python中不要随便写缩进
6、注释#
字面量和变量
字面量所表示的意思就是它的字面的值
变量(variable)
可以用来保存字面量,不定、临时
变量和标识符
变量
可以为变量赋任意类型的值,也可以任意修改变量的值
标识符
在python中所有可以自主命名的内容都属于标识符;如变量名、函数名、类名
1、标识符中可以含有字母、数字、_,但不能使用数字开头
2、标识符不能是python中的关键字和保留字
3、命名规范
下划线命名法
所有字母小写,单词之间使用_分割
驼峰命名法(帕斯卡)
首字母大写,每个单词开头字母大写,其余字母小写
数据类型
数据类型指变量值的类型,也就是可以为变量赋哪些值
数值
整数
数字打印时一定是以十进制的形式显示的
二进制
0b 开头
八进制
0o 开头
十六进制
0x 开头
布尔值
浮点数
复数
字符串
空值
数值
整数
浮点数(小数)
复数
字符串
字符串用来表示一段文本信息,字符串是程序中使用的最多的数据类型,需要用引号引起来
单双引号不能跨行
转义字符 \
\"
\t
制表符
\n
换行符
\\
表示反斜杠
\uxxxx
表示Unicode编码
格式化字符串
多个字符串拼接+
“a”+“b”
%s %() 在字符串中表示任意字符
格式化字符串,可以通过在字符串前添加一个f来创建一个格式化字符串
在格式化字符串中可以直接嵌入变量
c=f'hello {a}{b}'
布尔值和空值
bool(boolean)----逻辑判断
True
False
空值None
表示不存在
类型检查
type()
该函数会将检查的结果作为返回值返回,可以通过变量来接收函数的返回值
4、对象
对象介绍
对象(Object)
程序运行当中,所有的数据都是存储到内存当中然后再运行
对象就是内存中专门用来存储指定数据的一个区域
对象的结构
每个对象中都要保存三种数据
id(标识)
对象的唯一性
id() 函数
id是对象的内存地址(cpython)
type(类型)
类型用来标识当前对象所属的类型
类型决定了对象有哪些功能
value(值)
值是对象中存储的具体数据
可变对象值可变,不可变对象值不可变
变量和对象
变量像是对象的一个别名
当我们使用变量时,实际上就是在通过对象id在查找对象
类型转换
将一个类型的对象转换为其他对象;是将对象的值转换为新的对象
函数
int()
数取整
float()
str()
bool()
5、运算符
算数运算符
+—*/
// 整除
** 幂运算
% 取模
赋值运算符
可以将等于号右侧的值赋值给等号左侧的变量
=
+=
—=
*=
%=
关系运算符
关系运算符用来比较两个值之间的关系,总会返回一个布尔值
>
>=
<
<=
==
!=
is
比较的是对象的id
is not
当对字符串进行比较时,实际上比较的是字符串的Unicode编码
逻辑运算符
not(逻辑非)
and (逻辑与)
or (逻辑或)
非布尔值的逻辑运算符
当我们对非布尔值进行与或运算时,python会将其当做布尔值运算,最终会返回原值
与运算的规则
and与运算是找False的,如果第一个值是False,则不看第二个值
如果第一个值是False,则直接返回第一个值,否则返回第二个值(result = 1 and 2)
或运算的规则
or或运算是找True的,如果第一个值是True,则不看第二个值
如果第一个值是True,则直接返回第一个值,否则返回第二个值
条件运算符(三元运算符)
语法:语句1 if 条件表达式 else 语句2
执行流程:
条件运算符在执行时,会先对条件表达式进行求值判断
运算符的优先级
文档,符号越往下优先级越高
6、判断/循环
流程控制语句
条件判断语句
循环语句
条件判断语句(if语句)
语法
if 条件表达式:语句(代码块)
执行流程:if语句在执行时,会先对条件表达式进行求值判断
input()函数
用来获取用户输入数据
用户输入完成后,其所输入的内容以返回值形式返回(返回值是字符串)
可设置字符串作为参数,如提示文字
if-else语句
语句
if 条件表达式:代码块
else:代码块
if-elif-else语句
语句
if 条件表达式:代码块
elif 条件表达:代码块(可多个)
else:代码块
执行时,会自上而下依次对条件表达式进行求值判断
只会有一个代码块会执行
while语句(循环语句)
循环语句
循环语句可以使指定的代码块重复执行指定的次数
while循环 和 for 循环
while循环语法
while 条件表达式:代码块
else:代码块
执行时,会先对while后的条件表达式进行求值判断,True则执行,False则终止
循环的三个表达式
1、初始化表达式,通过初始化表达式初始化一个变量
2、条件表达式,条件表达式用来设置循环执行的条件
3、更新表达式,修改初始化变量的值
循环嵌套
循环嵌套时,外层循环每执行一次,内层循环就要执行一圈
break和continue
break可以用来立即退出循环语句(包括else)
continue可以用来跳过当次循环
pass 用来在判断或循环语句中占位的
7、列表/切片
列表
列表的简介
列表(list)是python中的一个对象
列表中可以保存多个有序的数据
列表的使用
列表的创建
通过 [ ] 来创建列表
一个列表中可以存储多个元素
[1,3,8]
用来存储对象的对象
列表中可以保存任意的对象
列表中的对象都会按照插入的顺序存储到列表中,可以通过索引获取列表中的元素(0开始)
通过索引获取列表中的元素
语法
my_list[索引]
len()函数,获取列表的长度
修改列表
直接通过索引来修改元素
通过del来删除元素
del s[3]
通过切片
进行赋值时只能使用序列
切片
切片指从原列表中,获取一个子列表
索引可以用负数
语法
列表[起始 : 结束 : 步长]
包括前,不包括后
步长默认1,不能是0,可以为负数
通用操作
+可以将两个列表拼接为一个列表
* 可以将列表重复指定的次数
in 用来检查指定元素是否存在于列表中;存在返回True,否则返回False
not in
len() 获取列表中的元素的个数
min()
max()
index()
方法;s.index()
方法是和对象关系紧密的函数
count()
序列(sequence)
序列是python中最基本的一种数据结构(数据存储的方式)
所有的数据在序列中都有一个唯一的位置(索引)
分类
可变序列
列表(list)
不可变序列
字符串(str)
元组(tuple)
列表的方法
s.append(x)
列表最后添加一个元素
s.insert(n,x)
列表指定位置插入一个元素
遍历列表
遍历列表就是将列表中的所有元素取出来
方法
while语句
for语句
语法:
for 变量 in 序列 :代码块
for循环的代码块会执行多次,序列中有几个元素就会执行几次,每次一个元素赋值给变量
0 条评论
下一页