一、准备工作
1、安装Python(注意选择一个稳定的版本,方便学习和使用)
Python官网:https://www.python.org/
2、安装一个anaconda
anaconda官网:https://www.anaconda.com/
安装完成之后在cmd里面输入conda -V
检测,如果出现版本号,则证明安装成功
二、基本语句
1、进入
在cmd中输入Jupyter Notebook
然后回车,就可以进入
2、常用语句(pip和conda相关语句在此不做赘述)
0)magic指令和辅助操作:
magic指令分为两种,一种叫line magic(以一个百分号%开头,作用于一行),另一种叫cell magic(以两个百分号%%开头,作用于整个单元格;输入help(magic)
,magic?
均可查看关于该指令的一些释义和使用指导,dir(magic)
可以查看该指令的一些方法和属性
1)whos语句:
whos
可用于查看当前各变量的类型和值
2)reset语句:
reset
可用于重置当前各变量,即清除全部变量
3)pwd语句:
pwd
可用于查看当前工作的文件夹路径
4)cd语句:
cd path
可用于切换当前工作的文件夹路径,一个英文点‘.
’表示当前文件夹,两个英文点‘..
’表示上级文件夹
5)mkdir语句:
mkdir xxx
可用于在当前工作的文件夹路径下新建一个指定名称的文件夹
6)rmdir语句:
rmdir xxx
可用于在当前工作的文件夹路径下删除指定文件夹
7)writefile语句:
writefile xxx.txt
可用于向指定文件写入内容,如果没有该指定文件,则创建一个新文件然后写入
8)ls语句:
ls
可以用于查看当前工作的文件夹的内容
9)run语句:
run xxx.py
可用于运行指定脚本
10)hist语句:
hist
可用于查看运行过的全部指令
11)import语句:
import module
可用于导入指定模块,也可以从指定模块中导入部分内容(from module import xxx
)
12)timeit语句:
timeit xxx
可用于计算执行后面代码所需要的平均时间
13)autosave语句:
autosave xxx
可用于设定自动保存的时间间隔
14)config语句:
config
可用于查看系统的配置,也可用于修改系统的配置(config xxx
)
15)capture语句:
capture
可用于捕获系统信息,如捕获所有timeit的结果(capture timeit_results,print(timeit_results)
)
16)HTML语句:
HTML可用于仿照前端的代码编写html语言,显示一个类似网页编排的界面
三、关键字,标识符,变量
1、关键字
关键字是python中的保留字,不能将关键字用作变量名、函数名或任何其他标识符,先导入模块import keyword
,然后可以查看关键字的全部内容print(keyword.kwlist)
,可以使用len(keyword.kwlist)
查看关键字的总数,可以使用dir(keyword)
查看关键字的相关函数和属性,可以使用print(keyword.__doc__)
可以查看关键字内部的注释,使用keyword.iskeyword('xxx')
可以查看某字符是否为关键字
2、标识符
标识符是python中类、函数、变量等实体的名称,有助于区分一个实体于另一个实体,编写标识符的规则:标识符只可以字母数字和下划线的组合;不能以数字开头;不能是关键字。可以使用'xxx'.isidentifier()
查看某个字符串是否作标识符。
3、变量
变量是内存中用于存储某些数据(值)的位置,它们具有唯一的名称,以区分不同的内存位置,编写变量名的规则与编写标识符的规则相同,不同于其编程语言,python中不需要声明变量,在python中我们只是为变量赋值,它就会存在,甚至不必声明变量的类型,系统会在内部根据我们赋给变量的值分配类型。可以使用type(xxx)
可查看某个变量的数据类型,使用print(xxx)
可以输出指定变量,使用id(xxx)
可以查看指定变量的存储位置
四、注释,数据类型
0、缩进
其他编程语言使用{}来定义代码块,python使用缩颈,缩进量可由自己规定,但是整个代码块中必须保持一致,通常是四个空格,即tab
1、注释
注释可用于表述编写代码过程的思路,便于后期的理解和更新,使用# xxx
可以开始编写一行注释
2、数据类型
数据类型分为四种:数字,序列,字典,None
1)数字:
数字分为四种:整数,浮点数,复数,布尔代数
可以使用type(xxx)
来查看数据的类型,数据类型之间可以转换,注意复数在数学中是x = a + bi,但是在python是x = a + bj
,可以使用complex(a,b)
利用两个整数或浮点数来生成复数。集合是大括号,列表是中括号,元组是小括号,字典也是大括号
2)序列:
序列分为五种:集合,列表,元组,字符串,范围对象
集合:是任何顺序的项目集合
列表:是可以通过所引访问的任何类型的项或对象的集合,提供了搜索、排序和操作列表的方法,在分配元素之后可以更改元素
元组:是有序且不可更改的集合,类似于列表,但分配元素之后不可以更改元素
字符串:是一个或多个字符的集合
范围对象:可以使用range(xxx)
生成为列表
3)字典:
字典是一个无序的项集合,字典有一个键key:值value,这些项用逗号分隔,键在字典中是唯一的,而值可以不是,字典的值可以是任何类型
4)None:
如果未为变量分配任何值,在其他编程语言中,使用的是null,但是在python中使用的是none
五、数字
0、基础操作
1)可以使用type(xxx)
来查看数字的具体类型:整型,浮点型,复数型,布尔型。
2)可以使用abs(xxx)
查看数字的绝对值。
3)可以使用round()
来取整数字。min(xxx,yyy,zzz)
和max(xxx,yyy)
分别可以取部分数字的最小最大值。
4)不同进制:1e-6(指数);0xFf(十六进制);0o77(八进制);0b1101(二进制)
hex(xxx)
,oct(xxx)
,bin(xxx)
分别用于转为对应的进制
5)关系运算符:>
,<
,>=
,<=
,==
,!=
6)算术运算符可以混合在一起使用,但存在优先级(从高到低):()
;**
;*
,/
,//
(整除,返回比结果小的最大整数),%
;+
,-
7)算术运算符可以缩减使用,xxx += a(xxx=xxx+a)
;xxx *= b(xxx=xxx*b)
;xxx %= c(xxx=xxx%c)
8)位元运算符:&
(按位与),|
(按位或),^
(按位异或),~
(否定,取反-1),>>
(逻辑右移),<<
(逻辑左移)
9)可以使用chr(xxx)
将ASCII码转为字符,ord('char')
可将字符转为ASCII码
1、整型
在64位系统中,一个整型8个字节,最小值为-2**63
,最大值为2**64-1
,+加,-减,*乘,/除,**幂指数,%取余
2、浮点型
整型与浮点型进行运算时,返回的仍然是浮点型,浮点型的计算结果会存在一点误差
3、复数型
复数在python中用j来表示虚部,用xxx.real
可以查看复数的实部,xxx.imag
可以查看复数的虚部,xxx.conjugate()
可以查看共轭复数
4、布尔型
布尔型可以堪称特殊的二值变量,其取值为True和False
六、字符串
0、定义
字符串是有序的基于文本的数据,通过将其包含在单引号' xxx '
,双引号" xxx "
,三引号''' xxx \n xxx '''
,可以使用len(xxx)
计算长度
1、基本操作
+加,*乘
2、分割
可以使用xxx.split(symbol)
根据括号内特定的内容对字符串相同的内容进行分割,生成并返回一个列表
3、连接
可以使用'symbol'.jion(xxx)
使.jion前特定的内容将字符串中的每个字符连接起来,生成并返回一个新的字符串
4、替换
可以使用xxx.replace(part,symbol)
使用symbol替换字符串中的part,并返回新的字符串,原字符串不受影响
5、大小写转换
可以使用xxx.upper()
和xxx.lower()
返回一个将字符串中小写字母全转大写或大写字母全转小写的新字符串,原字符串不受影响
6、去除两端多余内容
可以使用xxx.strip('symbol')
返回一个将字符串两端含有的symbol消除了的新字符串,xxx.lstrip()
和xxx.rstrip()
分别是消除左右端,原字符串不受影响
7、其他类型转字符串
可以使用str(xxx)
将其他类型转为字符串类型
8、居中
可以使用xxx.center(num,'symbol')
使用指定的symbol来填补然后使得能居中在num位空间里面
9、修改间距
可以使用xxx.expandtabs(num)
将\t改为指定的空格数
10、定位
可以使用xxx.index('symbol')
返回找到的第一个symbol的下标
11、检查结尾
可以使用xxx.endswith('symbol')
检查字符串是否以提供的symbol结尾
12、统计
可以使用xxx.count('symbol')
可以计算字符串中symbol的数量,可以定义始末下标
13、字符串转进制数字
可以使用int('xxx',num)
将传入的字符串视为num进制数字,返回对应十进制的整数;float('xxx')
返回对应的十进制的浮点数
14、格式化
可以使用.format()
方法来将字符串格式化
七、列表
0、定义
列表是最常见的数据结构,数据用逗号分割,可以通过调用索引来访问每一个数据
1、生成
空列表可以用 []
或 list( )
生成
2、复制
复制有两种方法:listb = lista
,这样类似于指针指向同个地址,修改lista,listb也会改变;listb = lista [strat : end : num]
,这样即使修改了lista,listb不会发生改变,当num为-1时可以等同反向
3、长度
可以使用len(xxx)
来得到列表的长度,即元素个数
4、加法和乘法
类似于字符串的加法和乘法
5、索引
可以使用xxx.num[num]
来获得指定下标的元素,也可以获得一段连续或不连续的元素(xxx.[start : end : num]
)
6、修改
可以对对应下标的元素直接修改,可以对一段连续或不连续的元素进行修改
7、删除
可以直接删除对应下标的元素,可以删除一段连续或不连续的元素
8、测试从属关系
可以使用yyy in xxx
来判断yyy是否属于xxx,yyy not in xxx
判断是否不属于,同样适用于字符串
9、统计
可以使用xxx.count(symbol)
来获得指定symbol在列表中出现的次数
10、定位
可以使用xxx.index(symbol)
来获得指定symbol在列表中的下表,如果不存在则会抛出异常
11、移除和弹出
可以使用xxx.remove(symbol)
和xxx.pop(num)
来移除对应symbol的元素或对应下标的元素,弹出还会返回被弹出的元素的值
12、排序与反向
排序有两种方法:一种是xxx.sort()
,另一种是sorted(xxx)
,差别在会否改动原列表,前者会后者不会。可以使用xxx.reverse()
来将原列表的元素反向
13、增加和插入
可以使用xxx.append(symbol)
和xxx.extend([symbol1,symbol2])
来在原列表的末尾加入指定symbol,extend可以将传入列表中的symbol依次加入。插入可以使用xxx.insert(num,symbol)
来在指定下标位置插入symbol
八、可变和不可变的数据类型
1、列表
列表是可变的数据类型,xxx.[num]
可以改变元素值,xxx.insert(num,symbol)
可以插入元素,xxx.sort()
可以按顺序排序列表
2、字符串
字符串是不可变的数据类型,xxx.replace('symbol1','symbol2')
只是返回一个新的字符串,并不改变原字符串
九、元组
0、定义
元组类似于列表,但元组一旦分配了元素就无法更改
1、建立
当建立长度为1且元素为字符串(或数字)的元组时,需要在字符串(或数字)后面加一个逗号,用来区分不是定义字符串(或数字)
2、索引
可以使用xxx[num]
来获得指定下标的元素
3、嵌套
元组的元素可以是列表,此时可以使用xxx.[num1][num2]
来改变列表指定下标元素的值
4、删除
元组无法删除单个元素,但可以使用del xxx
来删除整个元组
5、统计
可以使用xxx.count(symbol)
来统计指定symbol在元组中出现的次数
6、定位
可以使用xxx.index(symbol)
来定位symbol在元组中第一次出现的下标
7、检测从属关系
可以使用yyy in xxx
,yyy not in xxx
来判断yyy是否是元组的元素
8、列表转元组
可以使用tuple(xxx)
来将列表转换为元组
9、长度
可以使用len(xxx)
来获得元组的长度,即元素个数
10、排序
由于元组不可变,所以不能使用xxx.sort()
,但可以使用yyy = sorted(xxx)
来获得原元组排序后的列表
11、加法和乘法
与列表的加法和乘法有较大不同
十、列表与元组的速度比较
0、指令
可以使用%timeit
来计算改行代码执行的平均时间,元组的生成速度会比列表快很多,迭代速度快一点,索引速度差不多
1、生成速度
2、遍历速度
3、索引速度
十一、字典
0、定义
字典是一个无序的类集合,而且有一对{键:值},即{key:value},键不可相同,值可以相同
1、建立
python使用 {}
或者 dict()
來建立一个空的字典
注意由于浮点数的精度问题,一般不用浮点数作为键
也可以使用xxx = {}.fromkeys(list,value)
建立一个字典
2、插入
可以使用xxx['key'] = value
来插入键和值
3、查看
可以使用xxx['key']
来查看对应的值,也可以使用xxx.get('key')
,后者还可以指定找不到时返回的内容(xxx.get('key','message')
),注意此时不能使用索引来查看值,因为数字本身也可能是键
4、修改值
可以使用xxx['key'] = new_value
来修改值
5、弹出
可以使用xxx.pop('key')
来删除并返回指定键对应的值,还可以指定删除失败时返回的内容(xxx.pop('key','message')
)
6、删除
可以使用del xxx['key']
来删除字典中指定键和对应的值,也可以直接删除整个字典(del xxx
)(或者使用xxx.clear()
清空字典)
7、更新
可以使用xxx.update(yyy)
将yyy中的键和值更新到xxx中
8、检测从属关系
可以使用'key' in xxx
和'key' not in xxx
来判断字典中是否有指定的键
9、输出
可以使用xxx.keys()
,xxx.values()
和xxx.items()
来输入一个由字典的键,值,键值对组成的列表
10、复制
可以使用xxx = yyy.copy()
将字典xxx的内容替换为字典yyy
十二、集合
0、定义
集合时无序的项目集合,每个元素都是唯一的,没有重复的元素,集合时可变的,可用于执行数学集合运算
1、建立
可以使用 set()
來建立一个空集合,也可以使用xxx = set(list)
生成一个集合,且建立时会自动去重,注意不能使用 {}
来生成空集合(生成的会是字典)
2、并集
可以使用xxx.union(yyy)
返回两个集合的并集
3、交集
可以使用xxx.intersection(yyy)
返回两个集合的交集
4、差集
可以使用xxx.difference(yyy)
返回a-b
的结果,注意此时a-b
不一定等于b-a
5、对称差集
可以使用xxx.symmetric_difference(yyy)
返回两个集合的对称差集
6、检测包含关系
可以使用xxx.issubset(yyy)
来判断xxx是否为yyy的子集,也可以使用yyy.issuperset(xxx)
来判断xxx是否为yyy的子集,也可以直接用操作符来判断子集和真子集(<=
,<
)
7、添加
可以使用xxx.add(symbol)
向集合中添加新的元素,如果不是新元素,则不改变,也可使用xxx.update(list)
将列表中的元素添加到集合中
8、删除
可以使用xxx.remove(symbol)
从集合中删除指定元素,如果不存在会抛出异常,也可以使用xxx.discard(symbol)
如果不存在也不会抛出异常,或者使用xxx.difference_update(yyy)
删除集合xxx中属于集合yyy的元素
9、弹出
可以使用xxx.pop()
来弹出第一个元素,如果集合为空,则抛出异常
十三、不可变集合
1、建立
可以使用xxx = frozenset(iterable)
返回一个新的frozenset对象,如果不提供任何参数,默认会生成空集合(iterable指的是一个可以迭代的对象)
不可变集合的一个主要应用是用来作为字典的键,例如用一个字典来记录两个城市之间的距离
十四、赋值
十五、if判断语句
十六、循环语句
1、while循环
2、for循环
3、break和continue
4、列表推导
十七、列表推导式
十八、函数
1、系统函数
1)all()函数
return all(iterable)
函数的值,True :如果 iterable 中的所有元素都为 true;False:如果 iterable 中的有一个元素为 false
2)dir()函数
dir()
尝试返回对象的有效属性列表。如果对象具有__dir__()
方法,则将调用该方法并且返回属性列表。如果对象没有__dir__()
方法,则此方法尝试从__dict__
属性(如果已定义)和类型对象中查找信息。在这种情况下,从dir()返回的列表可能不完整。
3)divmod()函数
接受两个数字并返回一对由商和余数组成的元组
4)enumerate()函数
enumerate(iterable, start)
,将计数器添加到 iterable 并返回它
5)filter()函数
filter(function, iterable)
,从函数返回 true 的 iterable 元素构造迭代器
6)isinstance()函数
isinstance(object, classinfo)
,检查对象(第一个参数)是否时classinfo类的实例或子类(第二个参数)
7)map()函数
map(function_to_apply, list_of_inputs)
,将list_of_inputs中的所有项应用到function_to_apply
8)reduce()函数
用于对列表执行某些计算并返回结果
2、自定义函数
1)加减乘除
2)格式
十九、模块和包
1、模块
模块指的是包含python语句定义的文件,例如文件abc.py,成为模块,其模块的名称为abc,我们可以在模块中定义最常用的函数并导入它
2、包
包含多个文件的文件夹,可以使用from package.test1 import func
导入位于package文件夹下的test1.py文件中的func函数
二十、文件读写
1、print()
print (text)
输出文件的全部内容,将数据输出到标准输出设备
2、input()
从用户那里获取输入
3、open()
f = open('test.txt')
打开文件
4、f.read()
f.read(num)
读入文件中的光标之后num位内容,置空则读之后全部内容
5、f.readline()
读取文件中当前一行的内容
6、os.remove()
os.remove(test.txt)
删除文件
7、f.write()
f.write('hello world')
向文件写入内容
8、f.seek()
f.seek(num)
光标移动到文件的第num个字符前面,并返回当前读取位置
9、os.urandom()
os.urandom(num)
随机产生num个字节的字符串
10、f.tell()
返回当前读取位置
11、f.close()
关闭文件
12、os.rename()
os.rename('test.txt','sample.txt')
修改文件名
13、os.getcwd()
以字符串形式返回当前的工作目录
14、os.chdir()
os.chdir("C:\\Users\\86138\\Desktop\\python-1")
更改当前的工作目录
15、os.listdir()
以列表形式返回当前工作目录中的所有文件和子目录
16、os.mkdir()
os.mkdir('test')
在当前工作目录下建立一个新的文件夹
17、os.rmdir()
os.rmdir('test')
在当前工作目录下删除一个文件夹
18、格式
19、with
二十一、异常
0、定义
在编写程序时,不遵循语言的正确结构(语法)而导致的作物,称为语法错误或解析错误;错误也可能在运行时发生,称为异常。每当发生这种类型的运行时错误时,python都会创建一个异常对象,如果处理不当,它就会打印该错误的回溯以及有关错误发生原因的一些详细信息。python有许多内置异常,这些异常会强制程序在出现错误时输出错误,会发生这些异常时,它会导致当前进程他停止并将其传递给调用进程,知道处理完为止,如果不处理,我们的程序将停止,例如,如果函数A调用函数B,函数B又调用函数C并且在函数C中发生异常,如果它不在C中处理,则异常传递给B然后传递给A,如果从未处理过,则会出现错误消息并且我们的程序会突然意外停止
1、try语句
python中,可以使用try语句处理异常,可以引发异常的关键操作放在try子句中,处理异常的代码写在except子句中
except(xxx)
还可以捕获指定类型的异常,try语句可以有一个可选的finally子句,无论如何都执行此子句,并且通常用于释放外部资源
2、自定义异常
我们使用raise关键字来抛出异常
raise语句:python编程中,当在运行时发生相应的错误时会引发异常,但我们可以使用关键字raise强制提升它,我们还可以选择将值传递给异常,以阐明引发异常的原因
二十二、警告
0、定义
出现了一些需要让程序设计者知道的问题,但又不想停止程序,这时候我们可以使用警告
1、warnings.filterwarnings()
warnings.filterwarnings(action = 'ignore', category = RuntimeWarning)
有时候我们想要忽略特定类型的警告,输入这个语句就可以忽略指定类型的警告
2、pdb.set_trace()
pdb实现了python程序的交互式调试环境,它包含的功能可以暂停程序,查看变量值,并逐步观察程序执行
3、pdb