特点:
可读性强
简洁
python是由C语言开发的,但是不再有C语言中指针等复杂数据类型,python的简洁性降低了开发难度
面向对象
免费和开源、
可移植性和跨平台
python是通过缩进空格来组织代码的,不能随便添加空格
行连接符 /
变量指向对象的地址
在python中变量也称为对象的引用,变量存储的就是内存的地址
栈存放变量 ,推放对象
声明变量不需要声明类型
如果对象没有被引用就会被垃圾回收
python类型
整型
浮点型
布尔型
字符串型
运算符:
+,-,*,/,//(整数除法),%(模),**(幂)
divmod()除法,获得结果和余数
二进制,八进制,十六进制,10进制
int() 取整
整数可以有多大
int 32位
Long 64位
在python3中整数不做大小限制
获取当前时间
time.time()
逻辑运算符
or and not
is判断是否是同一个对象
is not 判断是不是引用不同对象
整数缓存问题
python仅仅对比较小的树进行缓存([-5,256)),在pycharm或者保存为文件执行时,结果不同范围为[-5,任意正整数)
python字符串是不可变的
没有字符只有字符串
unicode编码
字符换成unicode ord()
数字转字符 chr()
在末尾添加内容
end=任意字符
print("hahah",end="eee")
name=input("请输入名字:")
str()转为字符串
字符串可以通过数组来进行获取
str = "hello"
str[0],str[-1]负号表示反向搜索
字符串不可变,可以使用replace进行修改
a.replace(要替换的字符,替换后的字符);会对该变量进行全局替换
slice(初始偏移量:终止偏移量:步长)
a.slice(:)不写取所有字符
a.slice(2:)从2到末尾
a.slice(:2)从头开始到2
数字为负反向提取
split()分割
如果不传递参数就默认按照空白字符换行
join()
字符串预留:仅保留一份相同且不可变字符串的方法,不同的值被存放在字符串的驻留池中,python支持字符串驻留机制,对于符合标识符规则的字符串(仅包含下划线,字母和数字)会启用字符串驻留机制
==比较的是值是否相等
is比较的是地址
in、not in:判断某个字符串是否在字符串中
常用查找方法:
len(a)
a.startwith('')
a.endwith()
a.find()第一次出现指定字符串的位置
a.rfind()最后一次出现指定字符串的位置
a.count()指定字符串出现的次数
a.isalnum():所有字符是否全是字母或数字
a.strip()去除字符串首尾指定信息,不传去除空格
字符串排版
center(多少个字符,字符内容)在中间添加
ljust(多少个字符,字符内容)在末尾添加
rjust(多少个字符,字符内容)再头部添加
isalnum()
isalpha()
isdigit()
isupper()
islower()
占位符: {0} {1} %
str.format(占位符要显示的内容)
填充和对齐
^,<,> 居中,左对齐,右对齐
{0:*^8}这个占位符需要用*占位到8位
修改原有字符串
这样声明:
io.StringIO("dddd")
|:按位或
&:按位与
^:异或操作
序列:一块用来存放多个值的连续的内存空间
字符串,列表,元组,字典,集合
创建列表:
a = []
list()创建
list(range(10))
range创建整数列表
range(start,end,step)
end结尾数字必选,其他可选,start默认为0,step默认为1
推导式:
a = [x*2 for x in range(5)]
a = [x*2 for x in range(100) if x%9==0]
列表添加
append() 创建新的列表对象
+可以进行列表拼接
extend() 不创建新的列表对象
insert(位置,元素)插入元素
乘法扩展
3*[1,2,3]
列表删除
remove 删除首次出现的指定元素不存在抛出异常
pop 默认删除最后一个元素,返回删除的元素
del 删除指定元素
index(指定元素,开始,结尾)返回指定元素的第一次索引
排序默认正序排列
sort()修改原有的列表顺序
倒序排列
sort(reverse=True)
打乱顺序:
import random
random.shuffle()
sorted()排序不对原列表进行操作,生成一个新的列表
reversed()返回迭代器 不对原数组操作
max()
min()
sum()
元组:不可变序列,不能修改元组中的元素
通过()创建
tube = (1,2,3)
字典:键值对无需可变序列
创建{},dict()
dict = {“name":"array","age":18};
dict = dict(name="array",age=18);
dict = dict([("name","array"),("age",18)])
获取.get(键,不存在时显示什么值)
zip创建
k = ["name","age"]
v = ["array",18]
dict = dict(zip(k,v))
通过fromkeys创建值为空的字典
dict = dict.fromkeys(["name","age"])
a.items()列出所有键值对
dict.keys()
dict.values()
len()
修改字典
dict[key] = 修改的值
字典b覆盖字典a
字典a.update(字典b)
删除
del删除自定键值对
clear删除所有键值对
pop删除钉钉键值对传入key,并返回删除的键值对
popitem()随机删除键值对,并返回删除的键值对
序列解包
x,y,z = (1,2,3)
底层是散列表
空间换时间
循环
while 语句:
xxxx
zip并行迭代
names = {"arr1","arr2"}
ages = {18,19,20}
jobs = {"老师","程序员"}
for name,age,job in zip(names,ages,jobs)
print("{0}---{1}---{2}".format(name,age,job))
列表推导式
表达式 for x in 列表
函数:
def name():
****
``` 定义多行字符串 ```
global 变量名 声明全局变量
locals()输出局部变量
globals()输出全局变量
在python中参数的传递都是引用传递,对于不可变对象传递的时候也是地址传递,当给参数赋值的时候,会断开初始的引用创建一个新的值,将引用指向新的值
可变对象:字典、列表、集合、自定义的对象等
不可变的对象:数字、字符串、元组、函数
copy()浅拷贝
deepcopy()深拷贝
可变参数:
*param:将多个参数放在param元组中
**param:将多个参数放在param字典中
lambda表达式:是一个匿名函数
格式
lambda arg1,arg2....:表达式
eval函数:可以用来执行一个字符串
嵌套函数:函数内部定义函数
nonlocal 声明外层局部变量
在调用类创建对象时调用了两个方法
__new__() 用于创建对象我们不用显示定义
__init__() 构造方法,我们需要自己定义
dir()可以获取对象所有属性方法
isinstance(s,Student) 前面对象是否是后面类的实例
type 模具类 所有的类都是他的子类
类属性
类方法是从属于类对象的方法,类方法通过装饰器 @classmethod来定义
@classmethod
def 类方法名(cls [形参列表]:
函数体
__del__ 析构方法,用于实现对象被销毁时所需的操作,比如释放对象占用的资源
可调用方法 __call__
python中没有方法重载
装饰器
@property可以将一个方法的调用方式变成属性调用
面向对象
封装
隐藏实现的细节,只对外暴露方法
继承
子类具有父类的特性
多态
同一个方法因为调用对象的不同而产生不同的行为
mro()或者属性__mro__可以输出这个类的继承层次结构
super()代表父类的定义 等于父类的类
组合:
在A类的构造函数中传入B类的实例将实例挂载到self上
has用组合,is用继承
工厂模式:根据不同的参数创建不同的类
单例模式:只有一个实例
模块:一个py文件就是一个模块
使用模块:
import 模块1,模块2.。。。
使用:
模块名.变量、函数、类。。。。。
导入模块的相关数据:
from 模块 import 变量,函数,类
__main__ 可以获取当前模块名称 如果是当前执行模块结果为__main__
from 模块 import *
如果添加了全局变量__all__ *就不再是导入全局的功能会导入__all__中的变量 python3 中不太提倡
python中的包:在python中一个文件夹就是一个包,一个文件就是一个模块
文件夹中必须包含__init__.py 初始化模块 导入就会执行
模块发布
1.将模块所在路径,手动加入到sys.path中
2.将自定义模块,发布到系统目录中
1.sys.path.append(绝对路径)
2.
确定要发布的模块目录结构
|--setup.pu
|--package
|
--自定义模块
setup的编辑工作
setup()
构建模块
python setup.py build
发布模块
python setup.py sdist
自定义模块的安装
解压,进入文件夹,然后执行命令 python setup.py install
也可指定安装路径 python setup.py install --prefix=安装路径
暴力安装:
直接复制到site-packages
异常
try:
except ***
except ***
except Exception: 最大异常:BaseException
except (Exception,ValueError,ZeroDivisionError) as e:
print(type(e))
try:
****
except 异常 as 变量:
else:
没有异常,执行的代码
finally:
最终一定要执行的代码
自定义异常
class 异常类(BaseException):
***
抛出异常类
raise 异常类