当前位置: 首页 > ai >正文

python速成

Python 快速学习笔记

深感吾所学之浅,所思之愚

一个例子

temp = input("猜数字:")
guess = int(temp)if guess == 8:print("猜对了")
else:print("猜错了")print("游戏结束")

注意:符号的中英文,代码的缩进

变量

变量可以反复赋值

字符串

文本可以用 单引号、双引号、三引号 来引用

三引号 引用的内容可以换行

字符串加法:实际是 拼接 操作
字符串乘法:实际是 复制操作

运算符

<:小于
<=:小于等于
>:大于
>=:大于等于
==:恒等
!=:非等
is:是
is not:不是

循环结构

为避免无限循环,必须设置循环条件

通过break语句,可以跳出循环
通过continue语句,可以跳出本次循环

(伪)随机数的生成

模块random用于生成伪随机数

导入模块:import random
调用:random.randint(1, 10)

随机数重现
获取随机数种子:random.getstate()
设置随机数种子:random.setstate()

一个例子

import randomcount = random.randint(0, 100)while(True):temp = input("猜数字:")guess = int(temp)if guess == count:print("猜对了")breakelse:if guess < count:print("猜小了")else:print("猜大了")print("游戏结束")

数字类型

整数:精度无限大

浮点数:

0.1 + 0.2 == 0.3 false
使用decimal模块保证精确性
import decimal
a = decimal.Decimal('0.1')
b = decimal.Decimal('0.2')
c = deciml.Decimal('0.3')
a + b == c  true

复数:实部(real)和虚部(imag)

在这里插入图片描述

bool类型

True 和 False

逻辑运算符

and与
or或
not非

条件表达式

语句 if 条件 else 语句

迭代

for item in items:

range()用于生成序列,便于设置for循环的迭代次数

列表

创建:数据放入中括号中即可

for xx in xx:可以很方便遍历列表

可采用访问数组的方式直接访问列表

切片:(特别好用)
切片的开始索引为0
可以进行切片,左闭右开

方法:
append()添加一个元素
extend()添加多个元素
insert()插入一个元素

remove()删除指定值
pop()删除指定位置
clear()清空

sort()从小到大排序
reverse()翻转顺序

count()统计某元素出现次数
index()查找某元素索引值

copy()拷贝一个元素列表

加法即拼接
乘法即多次拼接

嵌套列表即多维数组

is:同一性运算符,判断是否为同一个对象

浅拷贝和深拷贝:
浅拷贝只拷贝了外层对象

import copycopy()      浅拷贝
deepcopy()  深拷贝

列表推导式:

例子
oho = [1, 2, 3, 4]
oho = [i * 2 for i in oho]格式
[expression for target in iterable][expression for target in iterable if condition]    # 元素需满足条件判断[expression for target1 in iterable1for target2 in iterable2.   .   .for targetN in iterableN]   # 看作依次的多层循环[expression for target1 in iterable1 if condition1for target2 in iterable2 if condition2.   .   .for targetN in iterableN if conditionN]   # 终极版本

_可以作为变量名

元组

列表用方括号,元组用圆括号

元组可以通过下标获取元素

元组不可变

元组同样可以切片

方法:
count()
index()
加法、乘法

元组可以嵌套

元组支持迭代

不存在元组推导式

“无逗号不元组”

序列类型可进行打包解包

字符串

capitalize()单词首字母大写
casefold()单词字母全小写
title()首字母大写,其他字母小写
swapcase()大小写反转
lower()所有字母小写

对齐
在这里插入图片描述

查找
count()某字符出现次数
find()某字符出现索引
rfind()同上,从右往左找
index()同上
rindex()同上

替换
expandtabs()将tab替换为空格
replace(old, new, count=xx)
translate(table)相当于按table这个映射表,来进行映射

判断
在这里插入图片描述

务必注意Python的索引从0开始,并且左闭右开!

留白
在这里插入图片描述

在这里插入图片描述

拆分&拼接
在这里插入图片描述

在这里插入图片描述

格式化字符串

format()"{}".format(param)实际上花括号接受format的参数列表中的元素
1.可以改变接受的顺序,通过在花括号中填写对应参数列表索引
2.可以多次引用,通过在花括号中填写对应参数列表索引f字符串:是format的语法糖

序列

列表、元组、字符串 都是序列

序列分为可变序列与不可变序列

序列有一些通用的操作方法

id()可获取一个对象的唯一标识
is和is not用来判断按两个对象表示是否相同
in和not in用来判断是否包含
del删除一个或者多个指定对象

相关函数:
list()
tuple()
str()

min()
max()
sum()求和

sorted()
reversed()返回一个迭代器

all()是否所有元素全为真
any()是否存在元素为真
enumerate()创建枚举对象
zip()将多个列表的相同位置元素构成元组,这些元组构成一个列表
map()实际上就是将原来的值按某种规则进行映射

filter()过滤出满足条件的元素

迭代器使一个可迭代对象
可迭代对象可重复使用
迭代器是一次性的
iter()使一个可迭代对象变为迭代器
next()逐个将迭代器中元素取出

字典
字典是Python中唯一实现映射关系的内置类型

关键是 映射

创建字典:六种
在这里插入图片描述

fromkeys()

pop()删除
popitem()删除最后一个加入的键值对
del也可以用来删除
clear()清空

update()同时修改多个键值对

get()查找指定键对应值
setdefault()

获取视图对象:
items()所有的键值对
keys()所有的键
values()所有的值

copy()浅拷贝

len()获取长度

in,not in

字典可以嵌套,即字典的值可为字典、列表等

字典推导式:
和列表推导式方法一致

集合
集合元素唯一无序

集合也有推导式

in,not in

可利用集合实现去重

copy()实现浅拷贝

isdisjoint()是否没有元素相交
issubset()是否是子集
issuperset()是否是超集
union()并集
intersection()交集
difference()差集
symmetric_difference()对称差集

<,>,|,&,-可用来操作集合,逻辑等同于逻辑运算符

可变集合set()
不可变集合frozenset()

update()更新可变集合中元素
add()添加一个元素
remove()删除一个元素,会抛异常
discard()删除一个元素,不抛异常
pop()随机弹
clear()清空

函数

参数种类:
位置参数、关键字参数、默认参数

形参*args可传递多个参数,参数打包为元组
形参**kwargs传递多个参数,参数打包为字典

global语句声明全局变量

嵌套函数,函数中可以嵌套函数,相当于局部变量,即局部函数

nonlocal语句

闭包

函数作为参数或者返回值时,只写名字即可,无需写括号

在这里插入图片描述

装饰器

函数作为参数

类似于注解

lambda表达式

匿名函数

格式:
lambda arag1, arg2, arg3, ... argN : expression

一般用来实现简单函数

生成器generator

yield()

每调用一次提供一次数据,并保留状态

生成器无法使用下标索引

生成器表达式

函数文档、类型注释、内省

help()

高阶函数

一个函数以另一个函数为参数时,前者就是一个高阶函数

偏函数

import functools@wraps

永久存储

打开文件:
open()

写:

关闭文件:
close()

路径处理:

from pathlib import Pathis_dir()判断是否为文件夹
is_file()判断是否为文件
exists()判断是否存在

相对路径,绝对路径

使用with open代替open可以避免手动关闭文件

pickle模块:
dump()
load()

异常exception

异常捕获处理:
try-except

try-except-else

try-except-finally

异常可以嵌套

raise语句,主动抛出异常
assert语句,主动抛出异常

类和对象

对象 = 属性 + 方法

self是为了标明当前调用类中方法的对象是哪一个,因为多个对象可以是同一个类

isinstance()判断对象是否是某个类

多重继承

组合

self实际上就是这个实例对象本身
self起到绑定作用

构造函数

重写

super()避免钻石继承

Mix-in

多态:
根据调用对象的不同有不同的效果

鸭子类型:
不管什么鸟,只要走路像鸭子,游泳像鸭子,叫声像鸭子,那么这只鸟就被成为鸭子类型
实际上,不管一个对象属于哪个类,也不管声明的具体接口是什么,只要该对象实现了相应的方法,函数就可以在对象上执行操作

私有变量:
通过某种手段,使得对象中的属性或方法无法被外部所访问。

__slots__属性以限制类的动态添加属性,可以节省内存
继承自父类的__slots__属性在子类中不生效
实际上,可以理解为动态属性存放于__dict__属性中,静态属性存放于__slots__中

魔法方法:
魔法方法(Magic Methods 或 Special Methods)是 Python 中以双下划线开头和结尾的特殊方法

init(self[, …])
类实例化时自动调用

new()
创建一个类,在__init()__之前被调用

del(self)
对象销毁时执行

and or not

属性访问:
hasattr()
getattr()
setattr()
delattr()

太奇妙了,魔法方法!

代偿:
指需要用到某方法,但是这个方法没有去实现,就会使用其他方法来得到相同结果

eval()将参数去引号后执行

property()

类方法

使用装饰器@classmethod

静态方法

使用装饰器@staticmethod
放在类里面的函数
可以在类里定义一个不需要绑定的函数

描述符

描述符可以实现property()

描述符被定义为类,然后将描述符的实例对象赋值给类属性,从而实现对该属性的全方位管理

描述符只能应用于类属性

元类

抽象基类

from abc import ABCMeta, abstractmethod

抽象基类不能被实例化,只能被继承使用,且必须实现其中的抽象方法

模块与包

on 中以双下划线开头和结尾的特殊方法

init(self[, …])
类实例化时自动调用

new()
创建一个类,在__init()__之前被调用

del(self)
对象销毁时执行

and or not

属性访问:
hasattr()
getattr()
setattr()
delattr()

太奇妙了,魔法方法!

代偿:
指需要用到某方法,但是这个方法没有去实现,就会使用其他方法来得到相同结果

eval()将参数去引号后执行

property()

类方法

使用装饰器@classmethod

静态方法

使用装饰器@staticmethod
放在类里面的函数
可以在类里定义一个不需要绑定的函数

描述符

描述符可以实现property()

描述符被定义为类,然后将描述符的实例对象赋值给类属性,从而实现对该属性的全方位管理

描述符只能应用于类属性

元类

抽象基类

from abc import ABCMeta, abstractmethod

抽象基类不能被实例化,只能被继承使用,且必须实现其中的抽象方法

模块与包

http://www.xdnf.cn/news/1701.html

相关文章:

  • 项目《基于Linux下的mybash命令解释器》(二)
  • STM32F407使用ESP8266实现阿里云OTA(中)
  • 第9章 多模态大语言模型
  • Android 智能家居开发:串口是什么,为什么android版本都比较低?粘包半包的原因以及处理思路,缓冲区处理,以及超时清空缓冲区....
  • 操作系统进程管理笔记
  • python 函数与模块
  • 项目中的政治斗争如何化解
  • 如何在 Windows上安装 Python 3.6.5?
  • Python 中 `r` 前缀:字符串处理的“防转义利器”
  • 第十三届蓝桥杯 2022 C/C++组 修剪灌木
  • Blender插件 三维花草植物自然景观生成器 Geo-Scatter 5.4.0
  • MODIS(MOD11A2)中国2000-2024年度平均地表温度(LST)数据集
  • AI下半场,出现了“超体”时刻
  • ctfhow——web入门214~218(时间盲注开始)
  • 13-DevOps-引入容器编排Kubernetes
  • 使用vue2开发一个在线旅游预订平台-前端静态网站项目练习
  • 6.学习笔记-SpringMVC-拦截器(P71-P74)
  • 得物业务参数配置中心架构综述
  • 离线部署kubernetes
  • DeepSeek系列(7):行业专属应用
  • Unity后处理全解析:从入门到优化
  • 序论文42 | patch+MLP用于长序列预测
  • C语言教程(十四):C 语言指针详解
  • 倚光科技:微透镜阵列低成本加工新范式
  • 【数据可视化-27】全球网络安全威胁数据可视化分析(2015-2024)
  • Linux基础命令
  • 容器修仙传 我的灵根是Pod 第10章 心魔大劫(RBAC与SecurityContext)
  • 免费版还是专业版?Dynadot 域名邮箱服务选择指南
  • 深度学习物理信息神经网络PINN+大模型辅助编程​
  • 如何在 Postman 中,自动获取 Token 并将其赋值到环境变量