python3 python基础知识
2021-03-19 14:55:00 5 举报
AI智能生成
登录查看完整内容
Python3基础知识梳理
作者其他创作
大纲/内容
Python3
内置函数
通用函数
help(buildtins)在交互模式下打印提示信息
input()读取键盘输入
input('请输入:')
dir()
列表形式返回当前模块中定义的所有名称
运算函数
abs(x)返回x的绝对值对浮点、整数、复数均有效
abs(-1)输出1
数据类型转换函数
float(x)转换为浮点数
float(2)输出2.0
str(x)转换为字符串
str(1)输出\"1\"
repr(obj)将对象转化为解释器易读的字符串形式
eval(repr(obj)) == obj
eval(str)执行一个字符串表达式,并返回表达式的值
tuple(s)将序列 s 转换为一个元组
list(s)将序列 s 转换为一个列表
set(s)转变为集合
dict(d)转变为字典
frozenset(s)转变为不可变集合
chr(x)用一个范围在 range(256)内(即0~255)的整数作参数,返回一个对应的字符
chr(48)输出'0'
bool(x)计算x的布尔值
bool('')输出False
ord(x)将一个字符转换为它的整数值
ord(\"1\")输出\"1\"
bin(x)将整数转换为二进制字符串
bin(2)输出'0b10'
oct(x)将一个整数转换为一个八进制字符串
oct(20)输出'0o24'
hex(x)将一个整数转换为一个十六进制字符串
hex(20)输出'0x14'
对象函数
type()不会认为子类是一种父类类型
isinstance()会认为子类是一种父类类型
id()获取对象的内存地址
常用模块
os模块
描述:提供与操作系统相关联的函数,例如处理文件和目录
os.path模块
获取文件的属性信息
sys模块
描述:命令行相关的函数
glob模块
描述:提供了一个函数用于从目录通配符搜索中生成文件列表
math模块
常量
圆周率(pi)
自然常数(e)
数值计算函数
ceil(x)返回x的上入整数
math.ceil(2.1)输出3math.ceil(-2.1)输出-2
exp(x)返回e的x次幂
math.exp(1)输出2.718281828459045
fabs(x)返回x的绝对值仅对浮点数与整数有效
math.fabs(-1)输出1.0
floor(x)返回x的下舍整数
math.floor(2.6)输出2
log(x)返回x的自然对数,x>0
log10(x)返回以10为基数的x的对数,x>0
math.log10(100)输出2.0
modf(x)返回x的整数部分与小数部分,整数部分用浮点型表示,两部分符号与x相同
sqrt(x)返回x的平方根值
math.sqrt(4)输出2.0
三角函数
pickle模块
描述:数据序列化与反序列化
random模块
choice(sequence)从序列的元素中随机挑选一个元素
random.choice('abcde')输出'd'
random.random()
seed([x])改变随机数生成器的种子
random.seed(10)
shuffle(sequence)将序列的所有元素随机排序
re模块
描述:为高级字符串处理提供正则表达式工具
网络模块
urllib.request
描述:处理HTTP通讯的数据
smtplib
描述:处理电子邮件相关
datetime模块
描述:丰富的日期和时间处理函数
zlib模块
描述:数据压缩、解压工具
timeit模块
描述:性能度量工具
基本语法
核心理念
万物皆对象
多态:操作符的意义取决于被操作的对象
标识符
首字符是字母或_
数字、字母、_
大小写敏感
注释
单行注释:#
多行注释:''' '''、\"\"\" \"\"\"
书写
缩进区分代码块
\\ 续行符,连接多行语句
交互模式中,最后输出的表达式结果被赋值给变量 _
包
包含__init__.py文件的目录
__init__.py文件中的__all__变量
from xxx import *会依据__all__的值将特定内容导入当前模块
模块
通过import语句被的导入其他命名空间中
__name__属性标识模块名称
'__main__'表示当前模块作为主模块在运行
关键字
import
导入模块,即将模块名称放入当前模块的符号列表中
import xxx
import xxx as xxx
导入模块并为其设置别名
不论有多少个import语句,相同模块只会被导入一次
from...import
从包、模块中导入模块/子包、内容到当前命名空间中
from xxx import *
导入包、模块中的所有内容到当前的名称空间中
from xxx import xxx as xxx
导入内容并为其设置别名
def
定义函数
del
删除对象:del obj
删除列表元素:del a[0]
清空列表:del a[:]
pass
占位符,不做任何操作,为了保持语法的完整性
变量
无需提前声明,在第一次赋值时被创建
无类型声明
使用前需赋值
赋值后才创建对象
多变量赋值
a = b = c = 1;
作用域
作用域范围
Local -> Encosing -> Global -> Built-in
if/elif/else/、try/except、for/while不引入新的作用域
作用域分类
局部作用域(Local)
定义在函数中
封闭作用域(Enclosing)
定义在嵌套函数的外层函数中
nonlocal关键字生命对封闭变量的访问
nonlocal var0
全局作用域(Global)
模块中定义
global关键字声明对全局变量的访问
global var0
内置作用域(Built-in)
运算符
运算符优先级
1、幂运算符:**
2、一元运算符:按位取反(~)、正(+)、负(-)
3、算数运算符:乘(*)、除(/)、取模(%)、取整除(//)
4、算数运算符:加(+)、减(-)
5、位运算符:按位左移(<<)、按位右移(>>)
6、位运算符:按位与(&)
7、位运算符:按位异或(^)、按位或(|)
8、关系运算符:<=、<、>、>=
9、关系运算符:==、!=
10、赋值运算符:=、%=、/=、//=、-=、+=、*=、**=
11、身份运算符:is、is not
12、成员运算符:in、not in
13、逻辑运算符:and、or、not
算术运算符
混合运算,Python会把整型转换为浮点型
加(+)
减(-)
乘(*)
两个数相乘
返回内容重复N次的字符串、列表、元组;集合、字典不支持该操作
浮点除(/)
2 / 2,得1.0
取整除(//)
5 // 2.0,得2.0
取模(%)
幂(**)
2 ** 5,得32
关系运算符
所有比较运算符返回1表示真,返回0表示假。这分别与特殊的变量True和False等价
等于(==),比较对象值是否相等
不等于(!=),比较对象值是否不相等
大于(>),比较大小
小于(<),比较大小
大于等于(>=),比较大小
小于等于(<=),比较大小
赋值运算符
赋值(=)
c = a + b;
加法赋值(+=)
c + = a即c = c + a;
减法赋值(-=)
c -= a即c = c - a;
乘法赋值(*=)
c *= a即c = c * a;
除法赋值(/=)
c /= a即c = c /a;
取模赋值(%=)
c %= a即c = c % a;
幂赋值(**=)
c **= a即c = c**a;
取整除赋值(//=)
c //= a即c = c // a;
逻辑运算符
从左至右计算表达式的值;True、False的值为1、0;0、\"\"('')为False,其余为True
布尔与(and)
x and y,若x为False,则返回False,否则返回y的值
布尔或(or)
x or y,若x为True,则返回x的值,否则返回y的值
布尔非(not)
not x,若x为True,则返回False,否则返回True
位运算符
负数的二进制表示为其正值的反码形式;反码,按位取反加1;如010反码为110
按位异或(^)两个二进位相异,则该位的结果为1,否则为0
按位取反(~)对每个二进位取反,~x 类似于 -x-1
左移N位(<<N)数的二进位左移N位,高位弃位,低位补0
右移N位(>>N)数的二进位右移N位,高位补0,低位弃位
成员运算符
测试实例中是否包含某成员,成员囊括字符串、列表、元组
in
x in y,若x在序列y中,则返回True,否则返回False
not in
x not in y,若x不在序列y中,则返回True,否则返回False
身份运算符
比较两个对象的存储单元地址
is
x is y,判断x、y是否引用自相同对象,是则返回True,否则返回False
is not
x is not y,判断x、y是否引用自不同对象,是则返回True,否则返回False
结构语句
if语句
if
if xxx: xxxelse: xxx
if ...: xxxelif xxx: xxxelse: xxx
for语句
for x in x: xxx
while语句
while xxx: xxx
try-except-else语句
try: xxxexcept xxx: xxxelse: xxx
try语句块执行成功后执行else否则不执行else
try: xxxexcept xxx: xxx
break跳出循环体
continure结束当前一轮循环
函数
定义规范
函数代码块以def关键字开头,后跟函数标识符名与():
在()中定义函数的可传入参数
函数体的首句可编写函数注释作为函数说明
通过`函数标识符(参数)`调用函数
使用return xxx返回数值给调用方,其他情况默认返回None
参数传递类型
不可变类型数据
值传递:理解为传递副本,不影响原始对象
可变类型数据
引用传递:传递的是对象的地址值,对对象的修改会相互影响
参数传递方式
位置化参数
调用函数时必须以正确的顺序与数量传入函数的参数
关键字参数
通过参数关键字与值对应的k-v形式传递参数,可以变换参数的顺序
带默认值参数
有默认值的函数参数,调用时可不传递参数
不定长参数
加了*的参数变量会以元组的形式接收所有未命名的变量参数
加了**的参数变量会以字典的形式接收所有未命名的变量参数
参数列表中单独出现*号,则*号后的参数需以关键字形式传入
返回值
return语句返回函数值
无参的return语句默认返回None
通过元组的形式返回多个返回值
lambda函数
简单小函数
function = font color=\"#0076b3\
面向对象
基础概念
类(Class): 用来描述具有相同的属性和方法的对象的集合。它定义了该集合中每个对象所共有的属性和方法。
类变量:类变量的值在该类的实例化的对象中是公用的。类变量定义在类中且在函数体之外。类变量通常不作为实例变量使用
方法重写:对从父类继承的方法进行改写
方法重载:对类的专有方法进行重载(参考Java的重载)
局部变量:定义在方法中的变量,只作用于当前实例的类。
实例变量:示例变量的值在该类的实例化的对象中是不共用的。示例变量定义在类中且在函数体之外。
继承:即派生类(derived class)继承基类(base class)的属性和方法。继承允许把一个派生类的对象作为一个基类对象对待(参考Java的多态)。
实例化:创建一个类的实例,类的具体对象。
对象:通过类定义的数据结构实例。对象包括两个数据成员(类变量和实例变量)和方法。
多继承:类的继承机制允许多个基类,派生类可以覆盖基类中的任何方法,方法中可以调用基类中的同名方法。
类定义
class ClassName(): xxxx
构造器
__init__(): 方法
如果重写了__init__()方法,实例化子类时,就不会调用父类已经定义的 __init__()方法;如果在子类中需要调用父类的构造方法就需要显示的调用父类的构造方法
属性
类属性
实例属性
私有属性
__privateAttrs:两个下划线开头,声明该属性为私有,不能在类的外部被使用或直接访问。在类内部的方法中使用时 self.__privateAttrs
方法
类方法的第一个参数必须是对自身实例的引用,通常名称为self
定义
def prt(self): print(self) print(self.__class__)
私有方法
__privateMethod:两个下划线开头,声明该方法为私有方法,只能在类的内部调用 ,不能在类地外部调用。self.__privateMethods。
专有方法
__init__ : 构造函数,在生成对象时调用__del__ : 析构函数,释放对象时使用__repr__ : 打印,转换__setitem__ : 按照索引赋值__getitem__: 按照索引获取值__len__: 获得长度__cmp__: 比较运算__call__: 函数调用__add__: 加运算__sub__: 减运算__mul__: 乘运算__truediv__: 除运算__mod__: 求余运算__pow__: 乘方
重写
重载
继承/多继承
class DerivedClassName(BaseClassName1): <statement-1>
class DerivedClassName(modname.BaseClassName): <statement-1>
IO
打开的文件需要关闭,通过with关键字打开的文件会自动关闭
文件打开模式
w:覆盖写模式
r:读模式
a:尾部写模式
读取文件
执行完需手动关闭
with open('file_path') as file_object:
执行完自动关闭
写入文件
错误和异常
语法错误
异常
运行时检测到的错误
raise关键字抛出异常
例如:raise NameError('HiThere')
一个简单的 raise 语句就可以再次把异常抛出
迭代器
迭代集合元素
StopIteration:用于标识迭代的完成
__iter__函数
__next__函数
生成器
定义:使用了yield的函数被称为生成器(generator)
通过推导生成生成器:(func(x) for x in sequence)
返回迭代器的函数
基本数据类型
序列类型特性
索引
sequence[x]
切片
sequence[:x]
拼接
sequence0 + sequence1
重复
sequence * 2
数字(Number)
数字类型不可改变,改变数字数据类型值将重新分配内存空间
int(整数)
仅一种整数类型 int,为长整型,无 python2中的 Long
bool(布尔)
True值为1,False值为0
float(浮点)
由整数部分与小数部分组成,可用科学计数法2.5e2 = 2.5 x 102 = 250.0
complex(复数)
字符串(str)
字符串不可改变
字符
无字符类型,长度为1的字符串即是字符
' 与 \" 作用相同
''' 与 \"\"\"指定多行字符串
\\ 转义字符
r或R 阻止反斜杠转义
r\"a line with \\"会显示\,不换行
级联字符串
\"this \" \"is \" \"string\"被自动转换为this is string
+ 拼接字符串
* 复制字符串
\"hello\"*2输出hellohello
索引子串
从右往左,起始下标为0
从左往右,起始下标为-1
变量[头下标:尾下标]
str[1:-1] 第二个到倒数第二个的所有字符
列表(list)
有序的对象集合
在if子句中,空列表([])为False,非空列表为True
元素类型可以不同
可以嵌套列表
列表内容可以改变
索引子列表
列表被截取后返回一个包含所取元素的新列表
变量[头下标:尾下标]
+ 拼接列表
* 复制列表
增删改查
list.append(element)
list.extend(iterable)
list.pop(index)等效于del list[index]
list.remove('xxx')
del list[index]
list[index] = new_value
list[index]
列表推导(list comprehension)
names = [s + 'a' for s in 'hahaha']
元组(tuple)
理解为不可变的列表
可以嵌套元组
元组内容不可变
空元组
()
索引子元组
元组被截取后返回一个所取元素的新元组
从左往右,起始下标为1
+ 拼接元组
* 复制元组
集合(set)
无序不重复元素的集合
作用:成员关系测试和删除重复元素
{ }或者set()创建集合
使用set()创建空集合,{ }创建空字典
逻辑运算
-
a - b,a和b的差集
|
a | b,a和b的并集
&
a & b,a和b的交集
^
a ^ b,a和b中不同时存在的元素
字典(dict)
映射类型,无序的键(Key)值(Value)对集合
元素为键值对
值可以改变
可以嵌套字典
键(Key)
必须为不可变类型
不重复
初始化
{} 空字典
dictionary['new_key'] = new_value
del dictionary['key']
dictionary['key'] = new_value
dictionary['key']
欢迎点赞~👍
0 条评论
回复 删除
下一页