python3 python基础知识
2021-03-19 14:55:00 5 举报
AI智能生成
Python3基础知识梳理
作者其他创作
大纲/内容
内置函数
通用函数
help(buildtins)在交互模式下打印提示信息
input()读取键盘输入
input('请输入:')
open(filename, mode)打开文件返回文件对象
dir()
列表形式返回当前模块中定义的所有名称
运算函数
abs(x)返回x的绝对值
对浮点、整数、复数均有效
对浮点、整数、复数均有效
abs(-1)输出1
round(x[,n])返回x的四舍五入值
,保留n位小数;n默认值为0
注:若n为负值,则输出0
修约规则:4舍6入5看右,5后有数进上去
,尾数为0向左看,左数奇进偶舍弃
,保留n位小数;n默认值为0
注:若n为负值,则输出0
修约规则:4舍6入5看右,5后有数进上去
,尾数为0向左看,左数奇进偶舍弃
round(2.235,2)输出2.24
round(2,2)输出2
round(2,2)输出2
max(x,y,z,....)返回最大值,
参数可为序列
参数可为序列
max(1,2,3)输出3
max('abc')输出'c'
max((1,2,3))输出3
max(['a','b'])输出'b'
max('abc')输出'c'
max((1,2,3))输出3
max(['a','b'])输出'b'
min(x,y,z,....)返回最小值,
参数可为序列
参数可为序列
min(1,2,3)输出1
pow(x,y[,z])输出x的y次幂,
如果x存在,再对结果取模。
注:结果为整型
如果x存在,再对结果取模。
注:结果为整型
pow(2,2)输出4
pow(2,2,2)输出0
pow(2,2,2)输出0
数据类型转换函数
int(x[,base])
将x以指定的进制
转换为整数
将x以指定的进制
转换为整数
int('110',2)输出6
float(x)
转换为浮点数
转换为浮点数
float(2)输出2.0
complex(real [,imag])
创建复数
创建复数
complex(1,2)输出1+2j
str(x)转换为字符串
str(1)输出"1"
repr(obj)将对象转化为
解释器易读的字符串形式
解释器易读的字符串形式
eval(repr(obj)) == obj
eval(str)执行一个字符串
表达式,并返回表达式的值
表达式,并返回表达式的值
eval('pow(2,2)')输出4
tuple(s)将序列 s 转换为一个元组
tuple(['a','1','c'])输出('a','1','c')
list(s)将序列 s 转换为一个列表
list({1,2,3})输出[1,2,3]
set(s)转变为集合
set('abcde')输出{'a','b','c','e','d'}
dict(d)转变为字典
dict([('a', 1), ('b', 2), ('c', 3)])输出{'a':1,'b':2,'c':3}
frozenset(s)转变为不可变集合
frozenset('runoob')输出
frozenset({'b', 'n', 'u', 'r', 'o'})
frozenset({'b', 'n', 'u', 'r', 'o'})
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模块
描述:提供了一个函数用于从目录通配符搜索中生成文件列表
示例:
>>> glob.glob('*.py')
['primes.py', 'random.py', 'quote.py']
>>> glob.glob('*.py')
['primes.py', 'random.py', 'quote.py']
math模块
常量
圆周率(pi)
自然常数(e)
数值计算函数
ceil(x)返回x的上入整数
math.ceil(2.1)输出3
math.ceil(-2.1)输出-2
math.ceil(-2.1)输出-2
exp(x)返回e的x次幂
math.exp(1)输出
2.718281828459045
2.718281828459045
fabs(x)返回x的绝对值
仅对浮点数与整数有效
仅对浮点数与整数有效
math.fabs(-1)输出1.0
floor(x)返回x的下舍整数
math.floor(2.6)输出2
log(x)返回x的自然对数,x>0
math.log(math.e)输出1.0
math.log(100, 10)输出2.0
math.log(100, 10)输出2.0
log10(x)返回以10为
基数的x的对数,x>0
基数的x的对数,x>0
math.log10(100)输出2.0
modf(x)返回x的整数部分与小数部分,
整数部分用浮点型表示,两部分符号与x相同
整数部分用浮点型表示,两部分符号与x相同
math.modf(1)输出(0.0,1.0)
pow(x,y)输出x的y次幂
注:结果为浮点型
注:结果为浮点型
math.pow(2,2)输出4.0
sqrt(x)返回x的平方根值
math.sqrt(4)输出2.0
三角函数
pickle模块
描述:数据序列化与反序列化
random模块
choice(sequence)从序列的
元素中随机挑选一个元素
元素中随机挑选一个元素
random.choice('abcde')输出'd'
randrange([start,]stop[,step])
在指定范围内,按指定基数递增的集合中
获取一个随机数,基数缺省值为1
start:开始值,包含; stop:结束值,不包含
step:指定递增基数
在指定范围内,按指定基数递增的集合中
获取一个随机数,基数缺省值为1
start:开始值,包含; stop:结束值,不包含
step:指定递增基数
random.randrange(100)
random.randrange(0,100,2)
random.randrange(0,100,2)
random()返回[0,1)范围内的一个随机数
random.random()
seed([x])改变随机数生成器的种子
random.seed(10)
shuffle(sequence)将
序列的所有元素随机排序
序列的所有元素随机排序
uniform(x, y)生成一个在[x,y]范围内的随机实数
randint(x,y)生成一个在[x,y]范围内的随机整数
sample(sequence,length)
从序列中截取指定长度的片段
从序列中截取指定长度的片段
re模块
描述:为高级字符串处理提供正则表达式工具
match(pattern, string, flags=0)
字符串的模式匹配模块
字符串的模式匹配模块
网络模块
urllib.request
描述:处理HTTP通讯的数据
smtplib
描述:处理电子邮件相关
datetime模块
描述:丰富的日期和时间处理函数
zlib模块
描述:数据压缩、解压工具
timeit模块
描述:性能度量工具
基本语法
核心理念
万物皆对象
多态:操作符的意义取决于被操作的对象
标识符
首字符是字母或_
数字、字母、_
大小写敏感
注释
单行注释:#
多行注释:''' '''、""" """
书写
缩进区分代码块
\ 续行符,连接多行语句
交互模式中,最后输出的表达式结果被赋值给变量 _
包
包含__init__.py文件的目录
__init__.py文件中的__all__变量
from xxx import *
会依据__all__的值将特定内容导入当前模块
会依据__all__的值将特定内容导入当前模块
模块
通过import语句被的导入其他命名空间中
__name__属性标识模块名称
'__main__'表示当前模块作为主模块在运行
关键字
import
导入模块,即将模块名称放入当前模块的符号列表中
import xxx
import xxx as xxx
导入模块并为其设置别名
不论有多少个import语句,
相同模块只会被导入一次
相同模块只会被导入一次
from...import
from xxx import xxx, xxx
从包、模块中导入模块/子包、内容
到当前命名空间中
到当前命名空间中
from xxx import *
导入包、模块中的所有内
容到当前的名称空间中
容到当前的名称空间中
from xxx import xxx as xxx
导入内容并为其设置别名
def
定义函数
del
删除对象:del obj
删除列表元素:del a[0]
清空列表:del a[:]
pass
占位符,不做任何操作,
为了保持语法的完整性
为了保持语法的完整性
变量
无需提前声明,在第一次赋值时被创建
无类型声明
使用前需赋值
赋值后才创建对象
多变量赋值
a = b = c = 1;
a, b, c = 1, 2, "runoob";
作用域
作用域范围
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等价
这分别与特殊的变量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
True、False的值为1、0;
0、""('')为False,其余为True
布尔与(and)
x and y,若x为False,
则返回False,否则返回y的值
则返回False,否则返回y的值
布尔或(or)
x or y,若x为True,
则返回x的值,否则返回y的值
则返回x的值,否则返回y的值
布尔非(not)
not x,若x为True,
则返回False,否则返回True
则返回False,否则返回True
位运算符
负数的二进制表示为其正值的反码形式;
反码,按位取反加1;如010反码为110
反码,按位取反加1;如010反码为110
按位与(&)
两个二进位都为1,则该位的结果为1,否则为0
两个二进位都为1,则该位的结果为1,否则为0
按位或(|)
两个二进位任一为1,则该位的结果为1,否则为0
两个二进位任一为1,则该位的结果为1,否则为0
按位异或(^)
两个二进位相异,则该位的结果为1,否则为0
两个二进位相异,则该位的结果为1,否则为0
按位取反(~)
对每个二进位取反,~x 类似于 -x-1
对每个二进位取反,~x 类似于 -x-1
左移N位(<<N)
数的二进位左移N位,高位弃位,低位补0
数的二进位左移N位,高位弃位,低位补0
右移N位(>>N)
数的二进位右移N位,高位补0,低位弃位
数的二进位右移N位,高位补0,低位弃位
成员运算符
测试实例中是否包含某成员
,成员囊括字符串、列表、元组
,成员囊括字符串、列表、元组
in
x in y,若x在序列y中,
则返回True,否则返回False
则返回True,否则返回False
not in
x not in y,若x不在序列y中,
则返回True,否则返回False
则返回True,否则返回False
身份运算符
比较两个对象的存储单元地址
is
x is y,判断x、y是否引用自相同对象,
是则返回True,否则返回False
是则返回True,否则返回False
is not
x is not y,判断x、y是否引用自不同对象,
是则返回True,否则返回False
是则返回True,否则返回False
结构语句
if语句
if
if xxx:
xxx
else:
xxx
xxx
else:
xxx
if ...:
xxx
elif xxx:
xxx
else:
xxx
xxx
elif xxx:
xxx
else:
xxx
for语句
for x in x:
xxx
xxx
while语句
while xxx:
xxx
xxx
try-except-else语句
try:
xxx
except xxx:
xxx
else:
xxx
xxx
except xxx:
xxx
else:
xxx
try语句块执行成功后执行else否则不执行else
try:
xxx
except xxx:
xxx
xxx
except xxx:
xxx
break跳出循环体
continure结束当前一轮循环
函数
定义规范
函数代码块以def关键字开头,后跟函数标识符名与():
在()中定义函数的可传入参数
函数体的首句可编写函数注释作为函数说明
通过`函数标识符(参数)`调用函数
使用return xxx返回数值给调
用方,其他情况默认返回None
用方,其他情况默认返回None
参数传递类型
不可变类型数据
值传递:理解为传递副本,不影响原始对象
可变类型数据
引用传递:传递的是对象的地址值,对对象的修改会相互影响
参数传递方式
位置化参数
调用函数时必须以正确的顺序与数量传入函数的参数
关键字参数
通过参数关键字与值对应的k-v形式传递参数,可以变换参数的顺序
带默认值参数
调用函数时,若某参数没有赋值并且其有默
认值则使用默认值。如:def func(a, b = 'xx')
认值则使用默认值。如:def func(a, b = 'xx')
有默认值的函数参数,调用时可不传递参数
不定长参数
def function([args,] *args_tuple)
加了*的参数变量会以元组的形式
接收所有未命名的变量参数
接收所有未命名的变量参数
def function([args,] **args_dict)
加了**的参数变量会以字典的形式
接收所有未命名的变量参数
接收所有未命名的变量参数
def function(arg0, *, arg1, arg2)
参数列表中单独出现*号,则*号后
的参数需以关键字形式传入
的参数需以关键字形式传入
返回值
return语句返回函数值
无参的return语句默认返回None
通过元组的形式返回多个返回值
lambda函数
简单小函数
function = lambda arg0[, arg1...]: expression
面向对象
基础概念
类(Class): 用来描述具有相同的属性和方法的对象的集合。
它定义了该集合中每个对象所共有的属性和方法。
它定义了该集合中每个对象所共有的属性和方法。
类变量:类变量的值在该类的实例化的对象中是公用的。类变量
定义在类中且在函数体之外。类变量通常不作为实例变量使用
定义在类中且在函数体之外。类变量通常不作为实例变量使用
方法重写:对从父类继承的方法进行改写
方法重载:对类的专有方法进行重载(参考Java的重载)
局部变量:定义在方法中的变量,只作用于当前实例的类。
实例变量:示例变量的值在该类的实例化的对象
中是不共用的。示例变量定义在类中且在函数体之外。
中是不共用的。示例变量定义在类中且在函数体之外。
继承:即派生类(derived class)继承基类(base class)的属性和方法。
继承允许把一个派生类的对象作为一个基类对象对待(参考Java的多态)。
继承允许把一个派生类的对象作为一个基类对象对待(参考Java的多态)。
实例化:创建一个类的实例,类的具体对象。
对象:通过类定义的数据结构实例。对象包括两个数据成员(类变量和实例变量)和方法。
多继承:类的继承机制允许多个基类,派生类可以覆盖
基类中的任何方法,方法中可以调用基类中的同名方法。
基类中的任何方法,方法中可以调用基类中的同名方法。
类定义
class ClassName():
xxxx
xxxx
构造器
__init__(): 方法
def __init__(self, realpart, imagpart):
self.r = realpart
self.i = imagpart
self.r = realpart
self.i = imagpart
如果重写了__init__()方法,实例化子类时,就不会调用父类已经定义的 __init__()方法;
如果在子类中需要调用父类的构造方法就需要显示的调用父类的构造方法
如果在子类中需要调用父类的构造方法就需要显示的调用父类的构造方法
使用 super() 函数显式调用父类的构造器:
super().__init__(参数1,参数2,....)
或
父类名称.__init__(self,参数1,参数2,...)
super().__init__(参数1,参数2,....)
或
父类名称.__init__(self,参数1,参数2,...)
属性
类属性
实例属性
私有属性
__privateAttrs:两个下划线开头,声明该属性为私有,不能在类的
外部被使用或直接访问。在类内部的方法中使用时 self.__privateAttrs
外部被使用或直接访问。在类内部的方法中使用时 self.__privateAttrs
方法
类方法的第一个参数必须是对自身实例的引用,通常名称为self
定义
def prt(self):
print(self)
print(self.__class__)
print(self)
print(self.__class__)
私有方法
__privateMethod:两个下划线开头,声明该方法为私有方法,
只能在类的内部调用 ,不能在类地外部调用。self.__privateMethods。
只能在类的内部调用 ,不能在类地外部调用。self.__privateMethods。
专有方法
__init__ : 构造函数,在生成对象时调用
__del__ : 析构函数,释放对象时使用
__repr__ : 打印,转换
__setitem__ : 按照索引赋值
__getitem__: 按照索引获取值
__len__: 获得长度
__cmp__: 比较运算
__call__: 函数调用
__add__: 加运算
__sub__: 减运算
__mul__: 乘运算
__truediv__: 除运算
__mod__: 求余运算
__pow__: 乘方
__del__ : 析构函数,释放对象时使用
__repr__ : 打印,转换
__setitem__ : 按照索引赋值
__getitem__: 按照索引获取值
__len__: 获得长度
__cmp__: 比较运算
__call__: 函数调用
__add__: 加运算
__sub__: 减运算
__mul__: 乘运算
__truediv__: 除运算
__mod__: 求余运算
__pow__: 乘方
重写
重载
继承/多继承
class DerivedClassName(Base1, Base2, Base3):
<statement-1>
<statement-1>
class DerivedClassName(BaseClassName1):
<statement-1>
<statement-1>
class DerivedClassName(modname.BaseClassName):
<statement-1>
<statement-1>
IO
打开的文件需要关闭,通过with关键字打开的文件会自动关闭
文件打开模式
w:覆盖写模式
r:读模式
a:尾部写模式
读取文件
file_object = open('file_path', )
执行完需手动关闭
with open('file_path') as file_object:
执行完自动关闭
写入文件
file_object = open('file_path', 'w')
with open('file_path', 'w') 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
长整型,无 python2中的 Long
bool(布尔)
True值为1,False值为0
float(浮点)
由整数部分与小数部分组成,可用
科学计数法2.5e2 = 2.5 x 102 = 250.0
科学计数法2.5e2 = 2.5 x 102 = 250.0
complex(复数)
a + bj或complex(a,b)表示
,实部a和虚部b都是浮点型
,实部a和虚部b都是浮点型
字符串(str)
字符串不可改变
字符
无字符类型,长度为
1的字符串即是字符
1的字符串即是字符
' 与 " 作用相同
''' 与 """指定多行字符串
\ 转义字符
r或R 阻止反斜杠转义
r"a line with \n"会
显示\n,不换行
显示\n,不换行
级联字符串
"this " "is " "string"被
自动转换为this is string
自动转换为this is string
+ 拼接字符串
* 复制字符串
"hello"*2输出hellohello
索引子串
从右往左,起始下标为0
从左往右,起始下标为-1
变量[头下标:尾下标]
str[1:-1] 第二个到
倒数第二个的所有字符
倒数第二个的所有字符
列表(list)
有序的对象集合
在if子句中,空列表([])为False,非空列表为True
[ ]包裹,‘,’分隔
['a',2,'b']
元素类型可以不同
可以嵌套列表
列表内容可以改变
a[2:5] = [13, 14, 15];
索引子列表
列表被截取后返回一个包含所取元素的新列表
从右往左,起始下标为0
从左往右,起始下标为-1
变量[头下标:尾下标]
+ 拼接列表
['a',1]+['b',2]输出新列表['a',1,'b',2]
* 复制列表
['a',1]*2输出新列表['a',1,'a',1]
增删改查
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)
理解为不可变的列表
( )包裹,‘,’分隔; 括号可以省略
('a', 2, ['b', 1, 'c'])
元素类型可以不同
可以嵌套元组
元组内容不可变
空元组
()
单元素元组(末尾需要加',')
('a',)
索引子元组
元组被截取后返回一个所取元素的新元组
从右往左,起始下标为0
从左往右,起始下标为1
变量[头下标:尾下标]
+ 拼接元组
(''a, 1) + (2, 'b')输出新元组('a', 1, 2, 'b')
* 复制元组
('a', 1) * 2输出新元组('a', 1, 'a', 1)
集合(set)
无序不重复元素的集合
{ }包裹,‘,’分隔
作用:成员关系测试和删除重复元素
{ }或者set()创建集合
使用set()创建空集合,{ }创建空字典
逻辑运算
-
a - b,a和b的差集
|
a | b,a和b的并集
&
a & b,a和b的交集
^
a ^ b,a和b中不同时存在的元素
字典(dict)
映射类型,无序的键(Key)值(Value)对集合
{ }包裹,‘,’分隔,元素为key : value
元素为键值对
值可以改变
可以嵌套字典
键(Key)
必须为不可变类型
不重复
初始化
{} 空字典
{'a':1, 'c':2}
dict([('a', 1), ('b', 2)])输出{'a':1, 'b':2}
增删改查
dictionary['new_key'] = new_value
del dictionary['key']
dictionary['key'] = new_value
dictionary['key']
欢迎点赞~👍
0 条评论
下一页