Python
2025-05-02 00:13:17 0 举报
AI智能生成
Python是一种流行的高级编程语言,以其易读性和简洁的语法而闻名。它支持多种编程范式,包括面向对象、命令式、函数式和过程式。Python广泛应用于数据科学、网络开发、自动化脚本编写以及AI和机器学习领域,被认为是一种多用途的工具,适用于快速开发各种应用程序。Python的核心内容侧重于代码的可读性与简洁性,使得程序员能够用更少的代码行表达概念。它是一种解释型语言,意味着代码在执行前不需要编译。此外,Python拥有庞大的标准库和第三方模块,提供了丰富的功能支持。作为一种动态类型语言,Python在类型检查方面表现出更大的灵活性,但也因此牺牲了一些性能优势。尽管如此,它仍被众多开发者和企业所青睐,用于开发快速和高效的软件解决方案。
作者其他创作
大纲/内容
数据类型
数字
整数
浮点型
字符
布尔
元组
列表
字典
集合
运算逻辑
顺序
条件
if xx:
xx
else:
xxx
xx
else:
xxx
contine
break
循环
for i in range()
数学函数
导包 import Math
round()
四舍五入
abs
round()
向下取整??那负数比如 -1.5 取整是-2还是-1??
xx
绝对值
xx
向上取整
map
reduce
filter
range迭代器
口诀:列表其实很简单,步长为正,从左向右,步长为负,从右向左,左闭右开。
range[start,end,step]
range[0,len(list)]
字符串
创建
a=’cat‘
b="i am is tom"
b="i am is tom"
单字符创建
双字符创建
删除
del aa
重复删除对象会报错
修改
a+="bbb"
aaa="abc"
aaa[0]=1
aaa[0]=1
TypeError: 'str' object does not support item assignment
查询
find(subStr,start,end)
查询符合的元素,如果存在则直接序列的下标,如果不存在,则返回-1
index(subStr,start,end)
查询匹配的元素,如果存在,则返回对的序列下标,如果不存在则报错
ValueError: substring not found
字符串函数:
"aaa".title()
返回结果 首字母大写
“aaa”.upper()
返回结果 全部大写
"aaa".lower()
返回结果 全部小写
序列
包括:字符串、列表、元组、字典
列表
基本操作
创建
name_list = ['TOM', 'Lily', 'ROSE']
增
append(元素)
最后位置追加元素(追加元素是列表,则直接最后位置追加列表)
name_list.append('xiaoming')
name_list.append([11, 22])
name_list.append('xiaoming')
name_list.append([11, 22])
name_list.insert(下标, 数据)
# 1. 列表数据可改的 -- 列表可变类型
# 2. append函数追加数据的时候如果数据是一个序列,追加整个序列到列表的结尾
name_list.insert(1, 'aaa')
# 2. append函数追加数据的时候如果数据是一个序列,追加整个序列到列表的结尾
name_list.insert(1, 'aaa')
extend
extend() 追加数据是一个序列,把数据序列里面的数据拆开然后逐一追加到列表的结尾name_list.extend('xiaoming')
name_list.extend(['xiaoming', 'xiaohong'])
name_list.extend(['xiaoming', 'xiaohong'])
删
del list[0]
del list
del list
支持删除对象(注意不存在则会报错)
支持删除序列指定位置的元素(注意不存在则会报错)
list.remove("张三")
删除符合条件的元素(注意不存在则会报错) ValueError: list.remove(x): x not in list
list.pop()
list.pop(1)
list.pop(1)
删除指定下标的数据,如果不指定下标,默认删除最后一个数据,(注意序列为空,则会报错),并返回被删除的数据
list.clear()
改
list[1]=xxx
指定位置修改
list1.reverse()
逆序
list1.sort()
list1.sort(reverse=False)
查
下标查询
list[1] 指定位置查询 (支持多级嵌套 [[1,2],[3,4]] list[0][2] )
name_list.index('TOM')
查询元素位置,不存在的元素 报错 ValueError: 'TOMS' is not in list
name_list.count('TOM')
查询元素出现的数量,不存在的元素,返回0
len(name_list)
查询数组元素个数
'TOM' in name_list
'TOMs' not in name_list
复制
name_list.copy()
copy()是浅拷贝,以下两者地址不相同
name_list = ['TOM', 'Lily', 'ROSE', [1, 2, 3]]
newList = name_list.copy()
print(id(name_list))
print(id(newList))
# 以下地址相同
print(f'当前值是 %s' % id(name_list[3]))
print(f'当前值是 %s' % id(newList[3]))
name_list = ['TOM', 'Lily', 'ROSE', [1, 2, 3]]
newList = name_list.copy()
print(id(name_list))
print(id(newList))
# 以下地址相同
print(f'当前值是 %s' % id(name_list[3]))
print(f'当前值是 %s' % id(newList[3]))
遍历
i = 0
while i < len(name_list):
print(name_list[i])
i += 1
while i < len(name_list):
print(name_list[i])
i += 1
for name in name_list:
print(name)
print(name)
排序
list.sort(key=iterator,reverse=True/False(默认是False))-->None
对序列进行排序,iterator是迭代器
序列内置函数
len(list)
查询序列元素个数
list(iterator) 获取迭代器对应的序列结果 ??
sorted(list,key=iterator,reverse=True) ->List
对序列进行排序,iterator是迭代器
list.count(“张三”)
查询序列某个元素出现的次数,不存在返回0
map(filter() ???
元组
基本操作
增
NA
删
NA
改
元素是不可变,不允许修改,修改会报错
元素是可变类型,可以修改
t2 = ('aa', 'bb', ['cc', 'dd'])
t2[2][0] = 'TOM'
t2[2][0] = 'TOM'
查
t1[0]
t1.index('bb')
值不存在,会报错 #ValueError: tuple.index(x): x not in tuple
t1.count('aa')
len(t1)
字典
基本操作
增
dict = {'name': 'TOM', 'age': 20, 'gender': '男'}
删
del dict
重复删除对象会报错
del dict["name"]
name不存在 报错 KeyError: 'names'
dict.clear()
清空
改
dict["name"="小犇"]
dict.update()
用法一: dict.update({"name":"小犇","height":"170})
用法二:dict.update(a=1,b=2)
查
dict['name']
查询对应的value,不存在则报错 KeyError: 'names'
dict.get('name')
查询对应的value,不存在则返回None
dict.get('name','Lily')
数据不存在,支持返回兜底默认值
dict.keys()
查找字典中所有的key,返回可迭代对象 <class 'dict_keys'>
dict.values()
查找字典中的所有的value,返回可迭代对象 <class 'dict_values'>
dict.items()
查找字典中所有的键值对,返回可迭代对象,里面的数据是元组,元组数据1是字典的key,元组数据2是字典key对应的值
dict_items([('name', 'TOM'), ('age', 20), ('gender', '男')])
dict_items([('name', 'TOM'), ('age', 20), ('gender', '男')])
遍历
for key in dict1.keys():
print(f'key={key},value={dict1.get(key)}')
print(f'key={key},value={dict1.get(key)}')
key=name,value=TOM
key=age,value=20
key=gender,value=男
key=age,value=20
key=gender,value=男
for item in dict.items():
print(item)
print(item)
('name', 'TOM')
('age', 20)
('gender', '男')
('age', 20)
('gender', '男')
for key, value in dict1.items():
# print(key)
# print(value)
# 目标: key=value
print(f'{key}={value}')
# print(key)
# print(value)
# 目标: key=value
print(f'{key}={value}')
# xx.items(): 返回可迭代对象,内部是元组,元组有2个数据
# 元组数据1是字典的key,元组数据2是字典的value
# 元组数据1是字典的key,元组数据2是字典的value
排序
检索
集合
基本操作
创建
s1 = {10, 20}
s2 = {[1,2,3]}
报错 TypeError: unhashable type: 'list' 猜测底层是hash索引
s2.add({'a':1,'b':2})
TypeError: unhashable type: 'dict'
s2={(1,2,3)}
ok
增
s1.add(100)
s1.add([10, 20, 30])
报错 TypeError: unhashable type: 'list'
s2 = {[1,2,3]}
报错 TypeError: unhashable type: 'list' 猜测底层是hash索引
s2.add({'a':1,'b':2})
TypeError: unhashable type: 'dict'
删
s1.remove(10)
不存在的元素 报错 KeyError: 10
s1.discard(10)
:删除指定数据,如果数据不存在不报错
s1.pop()
随机删除某个数据,并返回这个数据
改
s1.update([10, 20, 30, 40, 50])
update必须是集合
s1.update(100)
# 报错 TypeError: 'int' object is not iterable
查
print(10 in s1)
print(10 not in s1)
遍历
for x in s1:
print(x)
print(x)
公共操作
操作符:+
操作符:*
操作符:in
len
del
max和min
ranage
enumerate
enumerate 返回结果是元组,元组第一个数据是原迭代对象的数据对应的下标,元组第二个数据是原迭代对象的数据
数据类型转换
list1 = [10, 20, 30, 20, 40, 50]
s1 = {100, 300, 200, 500}
t1 = ('a', 'b', 'c', 'd', 'e')
# tuple(): 转换成元组
print(tuple(list1))
print(tuple(s1))
# list():转换成列表
print(list(s1))
print(list(t1))
# set():转换成集合
print(set(list1))
print(set(t1))
s1 = {100, 300, 200, 500}
t1 = ('a', 'b', 'c', 'd', 'e')
# tuple(): 转换成元组
print(tuple(list1))
print(tuple(s1))
# list():转换成列表
print(list(s1))
print(list(t1))
# set():转换成集合
print(set(list1))
print(set(t1))
推导式
函数
函数基本要素
def关键字
函数形参,函数返回值
形参
不定长位置参数(元组) 不定长关键字参数(字典)
函数返回值:
return支持返回元组
函数嵌套
变量作用域
局部变量
全局变量
引用
函数加强
递归
lambda
类
类基本元素
类属性
属性分类
公有属性
私有属性
创建
通过init时创建并初始化
通过类外边创建并初始化
访问
通过实例化类访问
不支持类访问
self
super
类方法
创建
访问
静态方法
创建
访问
魔法方法
__init(selt,param1,params2)
类被实例化后调用
__str(self)
打印类时被调用
__del(self)
类对象被销毁时调用
继承
单继承
子类会继承父类的公有属性和公有方法
访问
通过子类对象.xxx或者子类.xxx()方法访问
子类重写父类的公有属性和公有方法
访问
直接访问的子类的属性和方法
关键字
Prentice.__mro__
多继承
异常
异常基本方式
try:
catch (Exception):
else:
finaly:
catch (Exception):
else:
finaly:
else:不抛出异常,则执行else(try里面有return语句,则不执行else)
finaly:一定执行,即使有return
主动抛出异常
raise
多异常
catch (xxxException,yyyException):
异常的传递
自定义异常
文件操作
操作类型
r
读模式
read(1024)
readline()
w
写模式
write("abc".getByt(""utf-8))
a
追加模式
b
二进制方式
close
文件操作完,要关闭,否则fd句柄不会回收,操作系统文件句柄fds
打开最多1024个
打开最多1024个
进程、线程以及协程
闭包&装饰器
装饰器及其原理
闭包
如何写一个闭包
① 定义一个方法func1(arg1)
② 方法fun1里面要嵌套函数func2,并且func2要使用func1里面的形参
③ func1的返回值需要是func2的地址
② 方法fun1里面要嵌套函数func2,并且func2要使用func1里面的形参
③ func1的返回值需要是func2的地址
eg:
闭包进阶
修饰方法参数传递与返回结果
Python高阶语法
@property
with语句
上下文管理器
yield关键字
深拷贝和浅拷贝
正则表达式
算法
链表
栈
队列
双端队列
排序
冒泡排序
选择排序
插入排序
快速排序
二分查找
完全二叉树
数据库操作
0 条评论
下一页