PYTHON学习笔记
一些注意事项
1.书写时候,标点之后要空一格
2.单行注释要离代码两格
3.变量的命名区分大小写
4.赋值运算符中间不能使用空格
5.定义的函数与下一条语句空两行
6.如果引用了模块,相当与加入了代码,也会从上而下运行,如果有可执行函数的话,那么也会执行可执行函数
7.所有的标识符都只能用字母,下划线,数字。但是只能用字符下划线开头
8.关键字后面不需要使用括号
9.print输出时候。可以用%来格式输出,也可以直接用大括号 f{ xxx} f"1234{xxx}"来格式化直接输出
10.pass 是占位的后面的还是会执行,就像c语言只写一对大括号
11.函数里面 只要 针对参数 使用 赋值语句,会在 函数内部 修改 局部变量的引用,不会影响到 外部变量的引用 会定义这个局部变量,如果传递的参数是 可变类型,在函数内部,使用 方法 修改了数据的内容,同样会影响到外部的数据
12. 调用函数时,如果有 多个缺省参数,需要指定参数名,这样解释器才能够知道参数的对应关系!就是告诉传入的实参对应哪个形参
变量命名规则
- 当 变量名 是由二个或多个单词组成时,还可以利用驼峰命名法来命名
- 小驼峰式命名法
- 第一个单词以小写字母开始,后续单词的首字母大写
- 例如:firstName、lastName
- 大驼峰式命名法
- 每一个单词的首字母都采用大写字母
- 例如:FirstName、LastName、CamelCase
高级变量
关键字的用法
in | 如果在指定的序列中找到值返回 True,否则返回 False。 | x 在 y 序列中 , 如果 x 在 y 序列中返回 True。 |
---|---|---|
not in | 如果在指定的序列中没有找到值返回 True,否则返回 False。 | x 不在 y 序列中 , 如果 x 不在 y 序列中返回 True。 |
身份运算符
is 是判断两个标识符是不是同一个引用 类似id(a) = id(b)
is not 两个标识符是不是引用不同对象 id(a)!=id(b)
is 与 == 的区别
is是用于判断两个变量引用是否为同一个 地址是不是同一个
==是用于判读引用变量的值是否相同
切片(功能)
语法
序列[开始位置下标:结束位置下标:步长] (左闭右开)步长默认是1
步长是跳多少步长截取,不是截取长度,开始位置结束位置才是长度
如果带负号是从尾巴开始算的
开始下标是什么步长取值就在那下面取值
列表 (List)
1.列表用 [] 定义,数据 之间使用 , 分隔
2. 列表 存储相同类型的数据
3. 通过 迭代遍历,在循环体内部,针对列表中的每一项元素,执行相同的操作
序号 | 分类 | 关键字 / 函数 / 方法 | 说明 |
---|---|---|---|
1 | 增加 | 列表.insert(索引, 数据) | 在指定位置插入数据 |
列表.append(数据) | 在末尾追加数据 | ||
列表.extend(列表2) | 将列表2 的数据追加到列表 | ||
2 | 修改 | 列表[索引] = 数据 | 修改指定索引的数据 |
3 | 删除 | del 列表[索引] | 删除指定索引的数据 |
列表.remove[数据] | 删除第一个出现的指定数据 | ||
列表.pop | 删除末尾数据 | ||
列表.pop(索引) | 删除指定索引数据 | ||
列表.clear | 清空列表 | ||
4 | 统计 | len(列表) | 列表长度 |
列表.count(数据) | 数据在列表中出现的次数 | ||
5 | 排序 | 列表.sort() | 升序排序 |
列表.sort(reverse=True) | 降序排序 | ||
列表.reverse() | 逆序、反转 |
元组(Tuple)
1.元组的 元素不能修改
2.元组 表示多个元素组成的序列
3.元组用 () 定义
4.元组的 索引 从 0 开始
5.用于存储 一串 信息,数据 之间使用 , 分隔
6.元组中 只包含一个元素 时,需要 在元素后面添加逗号
面向对象的编程
1.在完成某一个需求前,首先确定 职责 —— 要做的事情(方法)
2.根据 职责 确定不同的 对象,在 对象 内部封装不同的 方法(多个)
3.最后完成的代码,就是顺序地让 不同的对象 调用 不同的方法
特点
1.注重 对象和职责,不同的对象承担不同的职责
2.更加适合应对复杂的需求变化,是专门应对复杂项目开发,提供的固定套路
3.需要在面向过程基础上,再学习一些面向对象的语法
一个对象里面可以干不同的事情,就像一个人一样,你可以让他干不同的事情,面向过程的函数,函数里面就是要执行的一个动作
类和对象
类 是对一群具有 相同 特征 或者 行为 的事物的一个统称,是抽象的,不能直接使用
特征 被称为 属性
行为 被称为 方法
类 就相当于制造飞机时的图纸,是一个 模板,是 负责创建对象的
对象
对象 是 由类创建出来的一个具体存在,可以直接使用
由 哪一个类 创建出来的 对象,就拥有在 哪一个类 中定义的:
属性
方法
对象 就相当于用 图纸 制造 的飞机
在程序开发中,应该 先有类,再有对象
类
属性和方法的确定
对 对象的特征描述,通常可以定义成 属性
对象具有的行为(动词),通常可以定义成 方法
就是说控制舵机转动,那么舵机的角度就是他的属性,方法就是控制他动
面向对象的基础语法
面对对象的三大特性:封装,继承,多态
使用内置函数 dir 传入 标识符 / 数据,可以查看对象内的 所有属性及方法
不想修改类,想添加属性,直接**(对象的变量名.属性)**
有哪一个对象调用的方法,方法内的self就是哪个对象的引用(不提倡用)
当使用类名()创建对象的时候会执行
1.为对象在内存中分配空间-创建对象
2.为对象的属性设置初始值-初始化方法(_init_)_init_是对象的内置方法
3.内部方法_str_必须发挥一个字符串
**类的继承中,**方法的扩展 super().调用原来在父类中封装的方法
子类对象不能在自己的方法内部直接访问父类的私有属性和私有方法
只能通过父类的公有方法间接调用
多态不同的子类对象调用相同的父类方法,产生不同的执行结果
1.以继承和重写父类方法为前提
类方法定义 @classmethod (修饰符) 上方提示
静态方法 @staticmethod (修饰符) 不需要创建对象,不访问不实例属性、类属性
单例模式 只创建一个实例
意思就是只创建一个变量,之分配一个地址,地址是一样的
定义一个类属性 初始值为None 保存第一个创建的对象的引用
如果想初始化动作只执行一次
可以创建一个类属性来记录,在初始化的类方法中判断类属性,修改类属性
异常处理
try:
xxxxxx
except xxx:(错误类型)
xxx
except Exception as result:(捕获未知 的错误) result 记录着错误信息
xxx
else: 没有异常会执行的代码
finally:#无论是否会异常都会执行的代码
异常是传递的。可以只在主程序中进行异常的捕获
主动抛出异常
ex = Exception(“提示信息”) #创建异常对象
raise ex #主动抛出异常
模块
导入模块 import (模块的别名要使用大驼峰命名法)
给模块起别名 import xxx(模块名) as zzz(别名)
只需要导入部分工具
from 模块名 import 工具名 导入指定的工具名 **(*)**导入所有的工具 不用模块名. (工具)调用 (工作岗位上容易出错)
如果两个模块,存在相同的函数,然后后导入模块的函数会覆盖先导入的函数