一、变量
1、命名
- 类命名:大驼峰(每个首字母大写,单词串联)
- 变量命名:POSIX(全小写,下划线连接)
2、变量类型
- 整数类型(int )
- 浮点数(float )
- 字符串(str)
- 转义字符“\n:换行,\t:制表符”
- 格式化输出
%s:格式化输出字符串
%d:格式化输出整数
%f:格式化输出浮点数
%.2 f:保留两位小数点
- f-字符串
f' {‘我的名字{name},我的年龄{age}’}
- print结束符
print(‘内容’,end="" )
- 布尔值(bool )
true = 1
false = 0
- 元组(tuple)
- 集合(set)
- 字典(dict)
3、运算符
- 算数运算
加、减、乘、除 = + - * /
取余 = %
取整 =
幂运算 = **
- 比较运算(结果为布尔值)
等于 = ==
不等于 = !=
大于 = >
小于 = <
- 赋值运算
赋值 = =
- 逻辑运算
与 = and
非 = not
或 = or
- 运算规则
true 为1 ,false 为0 ,and 为乘法,or 为加法,值为0 则false ,否则为true
a的值一定为true 是,运行到or 则不再向下运行,逻辑运算短路
- 成员运算
检测某一个变量是否为另一个变量的成员
in , not in
- 身份运算
检测两个变量是否为同一变量
is , not is
4、用户输入
- input
password = input ('请输入的密码' )
print (password)
- 数据类型转换
整数 int (x)
浮点数 float (x)
字符串 str (x)
计算在字符串中的有效python表达式,并返回一个对象 eval (str )
将序列s转换为一个元组 tuple (s)
将序列s转换为一个列表 list (s)
二、程序结构
1、判断分支
- 表达式
if 条件表达式 : (条件表达式为布尔值,注意冒号)
语句1
语句2
elif 条件表达式: (elif 可以没有,可以多个;elif 只选择一个执行)
语句1
语句2
else : (else 可以没有,最多一个)
语句1
语句2
- 三目运算(例)
a = 1
b = 2
c = a if a > b else b (条件成立时的表达式 if 判断条件 else 不成立的表达式)
print(c)
2、循环结构
(1)、while循环
- 表达式
while 条件表达式: (当表达式成立的时候执行循环)
语句1
语句2
else : (else 可以没有,当表达式不成立时执行一次,结束循环)
语句1
语句2
- 案例(打印10 次)
a = 10
while a > 0 :
print (f'"今天天气真好" {a} ' )
a = a-1
else :
print ("结束了" )
(2)、break、continue和pass
- break
终止整个循环结构(注意,break 结束后,不执行else 后语句)
- continue
结束当前一次循环,执行下次循环
- pass
略过,占位符不执行
(3)、九九乘法表
- '九九乘法表'
i = 1
while i <= 9 :
j = 1
while j <= i:
print (f'{i} *{j} ={i*j} ' ,end="\t" ) ‘\t为制表符使格式美观’
j += 1
print ()
i += 1
(4)、for循环
- 表达式
for 变量 in 序列: ‘循环变量不重要可用下划线代替,序列为列表形式’
语句1
语句2
else : ‘else 可以省略,表示循环后最后一次执行’
语句1
语句2
- 案例
str1 = "hello"
for a in str1:
print (a)
3、顺序结构
- 自上而下,逐行执行,遇到错误停止
三、内置数据结构(变量类型)
1、字符串--str
- 格式化输出
name = ‘tom’
print (‘我的名字是%s’ % name)
print (f‘我的名字是{name}’)
- 格式化输入
input 输入的数据为字符串格式
- 下标
- 每一个字符串,电脑会给他一个从0 开始的编号
- 打印字符串的第二的字符
a = 'hello'
print (a[1 ]) ‘注意括号为中括号’
- 切边
- 截取字符串的一部分
- 语法
序列【开始位置下标:结束位置下标:步长】
注意:左闭右开
(1)、字符串常用方法
- 查找
- find (rfind-从右侧查找)
查找字符串中是否有某一个字符,如果有返回字符左边,否则返回-1
str1 = '我叫mt,哈哈,你叫神魔'
print (str1.find ('叫' , 1 , 6 )) ‘1 是其实查找下标,6 是结束查找坐标’
- index(rindex-从右侧查找)
和find 相似,查找值不存在时报错
- count
统计某字符的出现次数
- 修改
- replace():替换
字符串序列.replace(旧字符,新字符,替换次数)
a = 'hello'
b = a.replace('l' , '9' )
- 分割
- split():按照指定字符分割字符串,返回列表,会丢失分割字符
字符串序列.split(字符,分割次数)
- 合并
- join():合并列表的字符
字符串.join(多字符序列)
- 大小写转换
- capitalize():字符串首字母大写,其他小写
- title():将字符串每个单词都大写
- lower ():所有大写转小写
- upper ():所有小写转大写
- 删除空白字符
- lstrip():删除字符串左侧空白字符
- rstrip():删除字符串右侧空白字符
- strip():删除字符串两侧空白字符
- 字符串对齐
- ljust(字符长度,填充字符):左对齐
- rjust(字符长度,填充字符):右对齐
- center(字符长度,填充字符):中间对齐
- 字符串判断
- startswith():判断是否是以某字符开头,返回布尔值
字符串.startswith(子串,开始下标,结束下标)
- endwith():判断是否是以某字符结尾,返回布尔值
字符串.endwith(子串,开始下标,结束下标)
- isalpha():非空字符串全部由字母组成,返回布尔值
- isdigit():非空字符串全部由数字组成,返回布尔值
- isalnum():非空字符串全部由字母或数字组成,返回布尔值
- isspace():都是空白,返回布尔值
2、列表--list
(1)、列表的常用操作
- 查找
- 按照下标
a = ['aaa' , 'bbb' , 'sss' ]
print (a[1 ])
- 函数
- index():类似字符串中的,返回下标
- count():类似字符串中的,返回出现次数
- len ():查看列表的长度,即数据个数
- 判断是否存在
- in
- not in
- 增加
- append():在列表结尾增加
- insert ():指定位置插入
a.insert (3 ,666 ) 在a的第四个位置插入666
- 删除
- del():删除指定位置
- remove ():按值删除
- pop():把末尾元素拿出来
- clear():清空,地址不变
- 改变
- 分片
l=[1 ,2 ,3 ,4 ,5 ]
print (l[1 :4 :2 ]) 包左不包右,从0 开始,【起始:结束:步长】
- 运算
加号相连表示列表相接
乘号相连表示n个列表相接
b (not )in a b是否在列表内,返回布尔值
- 复制
a = [1 ,2 ,3 ]
b = [i for i in a]
c = [i for i in a if i = 3 ] 过滤
- 其他函数
len ():列表长度
max ():列表最大值
mix():列表最小值
list():转换为列表
reverse ():列表翻转
count():列表中有几个被查元素
extend():列表拼接
copy():拷贝
3、元组--typle 类似列表,但是不能更改
(1)、创建
- 创建空的
t = ()
- 创建只有一个值的
t = (1,)
- 创建多个值的
t = (1,2,3,4)
- 其他结构创建
l = [1,2,3]
t = typle(l)
(2)、操作
- 索引
t = (1 ,2 ,3 ,4 ,5 ,6 )
print (t[4 ])
- 超标错误
print (t[12 ])
- 切片
t1 = t[1 :2 :2 ] 【开始:结束:步长】类似列表
- index ():元素在元组中的位置
4、集合--set 类似列表,确定的无序唯一的数据
(1)、创建
s = set()
s ={1 ,2 ,3 ,4 }
(2)、操作
- add():向集合中增加
- clear():清空
- copy():拷贝
- remove():移除特定值,值不存在时报错
- discard():移除指定的值,值不存在不报错
- pop():随机移除一个元素
- intersection():交集
- difference():差集
- union():并集
- issubest():检查一个集合是否是另一个集合的子集
- issuperset():检查一个集合是否是另一个集合的超集
- forzen set():冰冻集合
5、字典--dict
(1)、创建
d = {}
d = dict()
(2)、操作
- 循环
d={'a' :1 ,'b' :2 ,'c' :3 }
for k ,v in d.items ()
- 字典生成式
dd = {k:v for k ,v in d.items () if v%2 ==0 )
- clear():清空
- items():返回字典键值对
四、OOP--python面向对象
1、面向对象(Object Orjented)
- OOP思想
OO:面向对象
OOA:面向对象的分析
OOD:面向对象的设计
OOI:面向对象的实现
OOP:面向对象的编程
- 类和对象的概念
- 类:抽象名词,代表一个集合,共性的事物
- 对象:具体的事物,单个个体
- 类的内容
变量
函数
2、类的基本实现
- 类的命名
大驼峰,避开系统命名
- 类的声明
必须用class关键字
只能有属性和方法
成员属性定义可以直接使用变量赋值
- 实例
class PythonStundent():
name = none
age = 18
coutse = 'python'
def dohomework(self )
print ("我做作业" )
return none
xiaoli = PythonStudent()
print (xiaoli.name())
- 其他
xiaoli.__dict__ 对象的所有属性
PythonStundent.__dict__ 类的所有属性
在对象没有新的属性复制时,他的属性和类的相同,并指向同一块内存
3、类与对象的成员分析
- 类储存成员的时候,使用与类关联的一个对象
- 创建一个对象的时候,如果对象没有该成员,则和类使用同一成员
- 创建对象的时候,创建的是一个空的对象
- 修改对象的成员,对类不会有影响
4、关于self
- self表示自己,会回传给自己本身,不是关键参数,可以更改
- 方法中,有self是非绑定类方法,可以对象调用,没有self,则只能用类调用
- 用类调用绑定类方法,使用类的属性,则可以用__class__ 调用
- 调用A类的方式时,有方法需要的成员就可以执行,可以是A的对象,A,B,都可以--鸭子模型
5、面向对象的三大特性
(1)、封装
- 对对象成员进行访问限制
- 封装的三个级别--不是关键字
- 公开,public
- 受保护的,protected
- 私有的,private
- 判别对象的位置
- 对象内部
- 对象外部
- 子类中
- 私有
- 最高级别封装,只能在当前类和对象中访问
- 在成员前添加两个下划线,(python障眼法,name mangling的改名策略)
class Person():
name = 'll' --name为共有
__age = 14 --age为私有
- 受保护的
- 类和子类都可以访问,在外部不行
- 封装方法,在成员前添加一个下划线
- 公开的
- 没用操作
(2)、继承
- 继承是一个类可以获得使用另一个类中的成员属性和成员方法
- 作用:减少代码
- 继承与被继承
- 被继承的类:父类,基类,超类
- 用于继承的类: 子类。派生类
- 特征
- 所有类都是object 类的子类
- 可以继承共有,受保护的
- 子类指向父类,在同一内存
- 子类的属性不会影响父类
- 子类中定义的如果和父类相同,优先子类的
- 子类如果想扩充父类的方法,可以用父类名.父类成员的格式或super ().父类成员的格式
- 代码示例
class Person ():
name = 'none'
age = 0
def sleep (self ):
print ('Sleep.....' )
class Teacrer (Person ): --继承Person
def work (self ):
pass
def sleep (self ):
Person.work(self) --在父类的方法上进行扩充,还可以用super
print ('ooo' )
- 继承变量函数的查找顺序问题
- 优先查找自己
- 二级,查找父类
- 构造函数
- 是一种特殊函数,在实例化的时候第一个自动调用
-概念
class Dog ():
def __int__ (self ): --此函数为构造函数
pass
- __mro__ --查父类(MethodResolustionOrder)
- 单继承和多继承
- 多继承存在菱形问题
- 示例
class dog (dongwu,aa)
pass
- 构造函数
- 在实例化的时候,系统自动调用的函数。用于实例初始化
- 实例
class person ():
def __init__ (self ): --此句定义构造函数
self.name = "noname"
self.age = 18
- 当实例化的时候没有构造函数,则去找他父类的构造函数,按照MRO的顺序
(3)、多态
五、高级语言
1、模块
- 一个python文件
-解决模块导入时被执行
if _name_ == '_main'
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~