Python 基础语法
2018-09-11 23:47:40 1 举报
AI智能生成
python基础语法
作者其他创作
大纲/内容
基本数据类型[9种]
数值类型[5种]
整数类型
整数
无取值范围
print(pow(2,pow(2,10)))
4种进制表示形式
十进制:123,-321,0
二进制:以0b或0B开头:0b101,0B10
八进制:以0o或0O开头:0o456,0O789
十六进制:以0x或0X开头:0x1A,-0X2B
整数的位运算
浮点数
有取值范围
import sys
print(sys.float_info)
print(sys.float_info)
精度及不确定尾数问题
一般精度为e-16
round(x,d)
对x四舍五入,d是小数截取位数
用于浮点数运算不确定尾数规范
科学计数法
12.34即1.234e1
大精确浮点数运算
需求:浮点数科学计算,要求精确到小数点后几百位
解决方法:将浮点数运算转化为整数运算:数值整数与小数位整数
eg:1.2e-3 + 0.01
01、统一转化
12,4 和 1,2
02、小数位对齐
12,4和100,4
计算
112,4即0.0112
复数
与数学中一致
z= a+bj
z.real
z.imag
字节类型
字符串
字节串
数值运算函数与方法
操作符:+ - * / //等等
x+y
加
x-y
减
x*y
乘
x/y
除:3.33
x//y
整除:3
+x
x本身
-y
y的负值
x%y
余数,模运算余数
x**y
幂运算
x op=y
x +=y,x-=y,x*=y等等
Pyhton没有x++
函数:Python解释器提供的内置函数
abs(x)
绝对值,x的绝对值
divmod(x,y)
商余,(x//y,x%y),同时输出商和余数
pow(x,y[,z])
幂余,(x**y)%z,[..]表示参数z可省略
round(x[,d])
max(x1,x2,x3..xn)
min(x1,x2,x3...xn)
int(x)
float(x)
complex(x)
方法:数值类型在Python解释器内部都是类(class),类的方法
组合类型[4种+3]
概述
组合数据类型:包含一组数据且作为单一管理结构的数据类型
顺序性:一组数据以无序或有序方式组织
一致性:一组数据以相同或不同的类型组织
索引性:一组数据能否以及采用序号或自定义索引方式组织
可变类型与不可变类型
有些类型创建后其值不能被改变,有些却可以随时被修改
可变类型:列表、字典
不可变类型:数值类型、字符、字串、元组等
可哈希性和hash()函数
hash(x)函数返回x的一个哈希值
不是所有类型都可以被哈希,不可变类型可以被哈希
eg:数值类型、字符串、元组可以被哈希
eg:列表和字典不能被计算哈希值
集合(无序、非一致、无索引)
可变集合(set)
集合元素的个数可以不断增加或减少
创建方法
A = {"P","Y",123}
A = set("PYppy123")
不可变集合(frozenset)
集合创建后不可改变
创建方法
A = frozenset("pypy123")
表现形式:frozenset({'y', '3', 'p', '1', '2'})
特性
无序:元素间没有顺序,因此,要求元素不能相同,元素必须是不可变类型
非一致:元素类型可以不同
无索引:不能对某个元素进行定点索引,可以遍历或随机获取元素
序列(有序、非一致、一致、序号索引)
特性
有序:元素间存在顺序,因此,可以存在值相同的多个元素
非一致:元组和列表中元素类型可以不同
一致:字符串和字节串元素类型必须相同
序号索引:采用正向递增或反向递减方式索引,根据序号精确访问单个元素
元组
创建后一般不能被修改
a= (123,456)
a = tuple("1234")
('1', '2', '3', '4')
列表
创建后可以随时被修改
a = [123,"3456"]
a = list("pypy123")
['p', 'y', 'p', 'y', '1', '2', '3']
字符串
字节串
字典(无序、非一致、自定义索引)
字典类型:一组包含映射关系的数据组合
特性
无序:元素间不存在顺序,因此,字典所包含“键值对”元素不能相同
非一致:每个元素是一个键值对,其键和值类型均可不同
自定义索引:键值对相当于对“值”建立了新的以“键”为方式的索引
创建方法
d= {"中国":"北京", "美国":华盛顿}
d = dict()
d= {}创建空字典
常用函数和方法
round(x,d)
对x四舍五入,d是小数截取位数
用于浮点数运算不确定尾数规范
eval()
range()
import
常用算法
大精确浮点数运算
需求:浮点数科学计算,要求精确到小数点后几百位
解决方法:将浮点数运算转化为整数运算:数值整数与小数位整数
eg:1.2e-3 + 0.01
01、统一转化
12,4 和 1,2
02、小数位对齐
12,4和100,4
计算
112,4即0.0112
常用场景
文件处理
常见库例子
中文分词
面向对象语法精讲[OOP]
class
类的构建
实例对象
实例属性
实例方法
类对象
类属性
类内部定义的变量
类方法
类定义完成后,默认生成一个类对象,用于储存这个类的基本信息,type类型
__init__(self, <参数列表>)
从类创建实例对象的过程
__del__(self)
析构函数在真实删除对象实例时被调用
当对象的引用数为0或当前程序退出(垃圾回收)
sys.getrefcount(<对象名>)获得对象的引用次数
返回值为被引用值+1
sys.getrefcount(<对象名>)生成时候也进行了引用所以为真实引用值+1
类方法[@classmethod]
至少包含一个参数,表示类对象,一般用cls
必须有@classmethod装饰器装饰
只能操作类属性和其他类方法,不能操作实例属性和实例方法
实例方法[def - self]
由各个实例对象独享,最常用的形式
自由方法[def]
类中的一个普通方法,有类所在命名空间管理,类对象独享
不能操作实例属性和实例方法
只能使用<类名>.方法()
静态方法[@staticmethod]
类中的一个普通函数,由类对象和实例对象共享
必须有@staticmethod装饰器装饰
不能操作实例属性和实例方法
只能使用<类名>.方法和<对象吗>.方法
小结
保留方法和保留属性
保留方法[__XX__]
obj.__init__()
obj = ClassName()
初始化实例对象的函数逻辑
obj.__del__()
del obj
删除实例对象的函数逻辑
obj.__repr__()
repr(obj)
定义对象可打印字符串的函数逻辑
obj.__str__()
str(obj)
定义对象字符串转换操作的函数逻辑
obj.__bytes__()
bytes(obj)
定义对象字节串转化操作的函数逻辑
obj.__format__()
obj.format()
定义对象格式化输出的函数逻辑
obj.__hash__()
hash(obj)
定义对象哈希操作的函数逻辑
obj.__bool__()
bool(obj)
定义对象布尔运算的函数逻辑
obj.__len__()
len(obj)
定义对象长度操作的函数逻辑
obj.__reversed__()
obj.reversed()
定义对象逆序的函数逻辑
obj.__abs__()
abs(obj)
定义对象绝对值操作的函数逻辑
obj.__int__()
int(obj)
定义对象整数转换的函数逻辑
对象间比较操作的保留方法
obj.__lt__()
obj < obj2
obj.__le__()
obj <= obj2
obj.__eq__()
obj == obj2
obj.__ne__()
obj != obj2
obj.__gt__()
obj1 > obj2
obj.__ge__()
obj1 >= obj2
保留属性
仅用<类名>访问的保留属性
__name__
类的名称
__qualname__
以.分隔从模块全局命名空间开始的类名称
__bases__
类所继承的基类名称
<类名>和<对象>来访问保留属性
<类>.__dict__
包含类成员信息的字典,key是属性和方法名称,value是地址
<对象>.__dict__
包含对象属性信息的字典,key是属性名称,value是值
__class__
对象所对应的类信息,即type信息
__doc__
类描述,写在类定义下的首行字符串,不能继承
__module__
类所在模块的名称
类的封装
类
公开类属性
私有类属性
私有方法
共有方法
实例
公开实例属性
私有实例属性
私有方法
共有方法
私有:在前面增加__<属性名>,如__name,限定在该类中。类似C++ private。但是只是一种程序员约定。还是可以访问的。如私有实例属性,<实例对象>._<类名>__<属性>来访问
私有和公开是程序员逻辑,不是安全逻辑,重视约定
类的继承
Python采用深度优先、从左至右的方法实施多继承
包括属性、方法的使用和构造函数
多继承 基类的顺序是关键
class <类名>(<基类名1>,<基类名2>,...<基类名3>)
关联内置函数
isinstance(obj, cls)
判断对象obj是否是类cls的实例或子类实例,返回True/False
issubclass(cls1, cls2)
判断类cls1是否是类cls2的子类,返回True/False
id(x)
返回x的标识,Cpython用内存地址标识
x is y
判断x和y的标识是否相等,返回True/False,不判断值
最基础类object
object是Python最基础类,所有类定义时默认继承object
保留属性和保留方法本质上是object类的属性和方法
python对象的三个要素
标识identity:对象一单构建不会改变,用id()获得,一般是内存地址
类型type:对象的类型,用type()获得
值value:分为可变mutable与不可变immutable两种
属性重载
最近覆盖原则
优先使用派生类的属性和方法,然后找基类,再找超类
方法重载
完全重载
增量重载
super().<基类方法名>(<参数列表>)
super()调用父类若子类中有覆盖父类的属性,则在super(中也时子类的特有属性)
类的多态
其他
类的运算
对象的引用
高级话题
名词说明
基类
派生类
父类
子类
超类
重载
命名空间:类中定义的普通函数在该命名空间中
构造和析构
类描述:定义类class后的第一行''''''说明文本,通过<类名>.__doc__或<实例>.__doc__访问
概念
OOP本质是把问题解决抽象为一对象为中心的计算机程序
对象
独立性:对象都存在清晰的边界,重点在于划分边界
功能性:对象都能表现出一些功能、操作或行为
交互性:对象之间存在交互,如:运算和继承
Python语言中万物皆对象
所有类都继承于最基础的object
所有数据类型都是对象
函数也都是对象
模块也都是对象
数据类型的操作功能都是类方法的体现
特征
封装:属性和方法的抽象,用数据和操作数据的方法来形成对象逻辑
封装对象的属性和动作
继承:代码复用的高级抽象,用对象之间的继承关系来形成代码复用
继承别的类,代码复用和逻辑高级抽象
多态:方法灵活性的抽象,让对象的操作更加灵活、更多复用代码
类似C++多态
Python天然支持多态,不需要特殊语法,C++中为virtual
例子
初步认识OOP
收藏
0 条评论
下一页