Python基础学习
导学
python官网:https://www.python.org
简单使用py(单行):win+R打开cmd,输入python出现三个方向标即可
cmd中可以用python打开文本:pyhton+(空格)+文件绝对路径
PyCharm下载:www.jetbrains.com
基础知识
字符串需要用双引号包住
字面量
代码中,被卸载代码中的固定值,称之为字面量
注释
单行注释 # ;多行注释 ### 。。。 ### (代码规范上,注释符号#后需空格一个)
想要输出多个内容时,用逗号,隔开
如 print(“hello”,”world”,3)
数据类型
变量是没有类型的,但是变量存储的内容有类型。
**type( )**可以查看某个变量或者字面量的数据类型,可以用其他变量接收type( )函数结果,如 name_type = type(“zhw”)。
类型转换
其他类型都可以转字符串,但是想将字符串转成数字要求字符串内容都是数字
浮点转整数会丢失精度!!!
标识符
编写代码时,对变量、类、方法等编写的名字,叫做标识符。
命名规则:1.内容限定,仅允许英文、中文、数字、下划线(_)
另外数字不可开头;
2.大小写敏感 ;
3.不可使用关键字:
运算符
字符串拓展
实际上可以使用单引号(‘ ‘)、双引号(“ “)、三引号(‘’’ ‘’’)
三引号如果没有变量接收,就是注释
引号内部可以嵌套,双引号内部嵌套单引号,单引号内部嵌套双引号,也可以使用\转义
字符串拼接用 + 拼接,如print(“我是” + name),如果用逗号隔开,会有个空格。
!!!不能将其他类型(如数字)和字符串用 + 拼接,会报错
字符串格式化
占位符还有%d,%f分别表示整数和浮点数
!!注意拼接的字符串别忘了要加引号,否则如name = zhw会报错,判定zhw为一个变量而不是字符串
如果是多个变量的话,需后置( ),如:
1 | name = "zhw" |
当然也可以用Python的格式化字符串(f-string)方法,在字符串前加一个 f 或 F 前缀,然后用 花括号 {} 包裹变量名或表达式,如:
1 | name = "zhw" |
这种方法不用分辨变量类型,但不能控制精度。两个方法可以搭配混合使用
如果m<len(本身),那么不会生效。
数据输入
input( ) ,需要用变量接收,无论输入什么,都按照字符串存储
可以用int(input( ))来转换为整数及其他
Python判断语句
布尔类型(bool)实质存储是1/0
1 | age = 19 |
循环语句
while语句
九九乘法表:
1 | i = 1 |
与while不同,for无法定义循环条件
1 | for 临时变量 in 待处理数据集(序列): |
只能从处理的数据集中,依次取出内容进行处理!!!
理论上,py中for循环不会无限,因为数据集不会无限
临时变量规范上不能在循环外使用,但是实际上可能可以访问到
break/continue
range
语法1:range(num)得到[0,1,2,…,num-1]
语法2:range(num1,num2)得到左闭右开,如range(5,10)为[5,6,7,8,9]
语法3:range(num1,num2,step),step默认为1
函数(function)
1 | def 函数名(传入参数): |
若没有申明返回值,则返回内容是 None,类型是 NoneType,表示空的、无意义的
在 if 判断上,None等同于False
函数说明文档
多行注释,包括函数说明,形参说明,return说明
变量作用域
全局变量/局部变量
函数内部直接操作全局变量会生成一个局部变量,不会对全局变量产生影响
如果需要影响全局变量,则需要 global 声明,如:
1 | num=1 |
返回值
1 | #支持多个返回值,多个数据类型 |
传参
可以将函数作为参数传入函数,此时为传入计算逻辑并非传入数值
lambda匿名函数
只能临时使用一次
数据容器(对应数据结构相关内容)
一个可以容纳多份数据的数据类型,没份数据数据类型可以不同
列表 (list)
1 | 变量名称 = [元素1,元素2,元素3] |
下标索引从左到右是0,1,2…
从右到左是-1,-2,-3…
存储有上限2**63 -1即 9223372036854775807个
查询功能(方法)
1 | mylist = ['nihao','woshi','zhw'] |
修改功能(方法)
pop实际上是将元素取出,可以赋值给变量
列表的遍历
通过while遍历
1 | index = 0 |
通过for遍历
1 | list = [1,2,3,4,5] |
sort方法
元组 (tuple)
与列表不同的是,元组元素一旦定义无法修改,无法增删,操作会报错
但如果元组中有列表元素,列表里的元素可以修改
!!注意:如果元组只有一个元素,数据后面要添加逗号,如
1 | t1 = ("hello",) |
元组相关操作
!!index查不了嵌套里的元素
字符串(str)
同元组一样,是无法修改的数据容器
如果必须修改,只能得到新字符串,老字符串无法修改
index方法
与上述同
replace方法
split方法
strip方法
无传入值时默认移除收尾空白字符,包括空格(),制表符(\t),换行符(\n),回车符(\r),垂直制表符(\v),换页符(\f)
count、len方法,同
序列
内容连续、有序、可使用下表索引的一类数据容器,包括但不限于列表、元组、字符串
切片操作(取出子序列)
1 | str[::-1][9:14] 不等价于 str[14:9:-1] |
集合(set)
特征:内部无序,元素不重复(即便定义时有重复内容,输出时会自动去重,且不支持下标所以访问),允许修改
add方法
1 | set.add("python") #加入python元素,本身被修改 |
remove方法
1 | set.remove("python") #移除,本身被修改 |
pop方法
1 | set.pop() #随机取出一个元素,本身被修改 |
clear方法
1 | set.clear() #清空 |
difference方法
union方法
len方法
1 | num = len(set) #统计集合中元素数量 |
遍历
不支持下标索引,故不能用while循环
但可以用for循环
字典(dict)
类似struct结构体
和集合一样,不可用下标索引,且不可重复定义,重复则输出后面的key对应的value,相当于重新赋值
字典的key和value可以为任意数据类型(key不能为字典)
1 | #定义嵌套字典 |
字典修改操作
pop方法
1 | score = score_dict.pop("周杰伦") #通过key移出value |
keys方法
1 | keys = score_dict.keys() #获取全部key |
字典遍历
1 | for key in score_dict: |
数据容器总结
5类数据容器都支持for循环遍历
列表、元组、字符串支持while循环,集合、字典不支持(无法下标索引)
字符串转列表、元组会把每个字符都作为一个元素
字典转列表、元组则把每个key作为元素
所有容器转列表时都是字面量加左右双引号
转集合时元素会 <u>无序 </u>
reverse默认为false,从小到大(升序)排序,若给定true则从大到小(降序)
但排完序后是新生成一个列表对象
文件操作
文件编码
一种规则集合,记录内容和二进制建进行转换的逻辑
最常用的,默认用UTF-8格式进行文件编码
文件读取
open()打开函数
!!!注意此处encoding不是第三位,需要用键值对传参
常用三种读取模式
读操作相关方法
注意多次调用read时,会从上次调用read内容后开始输出
同时num单位是字符数不是字节
1 | line1=f.readline() |
close()方法
打开文件后需要关闭,否则会一直占用
文件写入
close方法内置了flush功能的,同样会将内容写入磁盘中
注意如果用w模式打开文件,则会创建/重置一个新文件进行
a模式可以为文件追加内容
文件备份
1 | fr = open("file address","r",encoding="UTF-8") |
异常(bug)
异常处理(捕获异常)
提前假设某处会出现异常,做好提前准备,当真的出现异常时可以有后续手段
1 | #捕获指定单个异常: |
1 | #捕获多个异常,可定义元组 |
1 | #捕获所有异常,对象是Excepetion,是最顶级的异常,包含所有异常 |
else是except情况不满足就会做的,与try不冲突,并行
else和finally是选写的,try和except是绑定的
异常是具有传递性的,函数内部出现异常会在主函数显示
模块(Module)
实际是个python文件,以,py结尾,能定义函数,类和变量,模块里也能包含可执行代码,一般在开头导入
按住CTRL+左键点击模块可进入代码,按CTRL+F可检索内容
1 | import time |
*是全部的意思
1 | from time import * |
自定义模块
自己写一个py文件,import导入即可,注意文件名称规范
1 | if __name__ == "__main__": |
all变量相当于模块文件内有公开与不公开的内容,import * 会作用在all内的全部内容,但此时手动导入非all内的内容也是允许的,all仅影响import *。
python包
物理上是个文件夹,逻辑上还是个模块
导入包与导入模块相似,可导入包(不建议),子模块,子模块内的函数
在init文件内可以定义al l变量,也可以在init文件内导入子模块内的函数
安装第三方包
1 | pip install 包名称 #此时是国外官方源,下载可能比较慢 |
自定义包
详见my_utils文件夹
案例开发
Json
json格式数据转化
可以看做python的列表或者字典,如果是列表,里面需要嵌套字典
1 | #注意直接用dumps会使中文编码错误,需加ensure_ascii参数,表示不用ASCII码,直接输出 |
转换为json数据后为字符串对象
pyecharts模块
Echarts框架下针对python开发的
官网:pyecharts - A Python Echarts Plotting Library built with love.
画廊网站(图表模版):中文简介 - Document
三个学习案例(本地文件)
所用数据在可视化案例数据
入门
可设置全局配置项
Json格式化工具链接:懒人工具-json在线解析-在线JSON格式化工具-json校验-程序员必备
(劣,无视图)https://www.lazytools.com.cn/tool/jsonformat.html
创建时间线
1 | from pyecharts.charts import Timeline |
每个时间点需要提供一个图表对象