运算符:
message = "python大数据学科,北京%s期,毕业平均工资:%s" % (class_num, avg_salary)数字精度控制:使用辅助符号“m.n”来控制数据的宽度和精度
字符串格式化:f"{}"
print(f"我是{name}, 我现在{status}, 想要睡{hour}小时")input语句:获取键盘输入的数据
input(提示信息):用以在使用者输入内容之前显示提示信息。布尔类型:
判断语句:python是根据缩进来决定语句之间的层次关系。
if 条件1:
执行语句
elif 条件2:
执行语句
...
else:
for循环:
for 临时变量 in 序列类型:
循环满足条件时执行的代码
range
range(num):获得从0开始到num的数字序列,不包括num。range(num1, num2):获得从num1开始到num2的数字序列,不包括num2。range(num1, num2, step):获得从num1开始到num2的数字序列,不包括num2,数字之间的字长以step为准(step默认为1)。函数的定义:
def 函数名(传入参数):
函数体
return 返回值
关键字参数:函数调用时通过“键=值”形式传递参数。作用:可以让函数更加清晰、容易使用,同时也清除了参数的顺序要求。ps:函数调用时,如果有位置参数时,位置参数必须在关键字参数的前面,但关键字参数之间不存在先后顺序。
缺省参数:用于定义函数,为参数提供默认值,调用函数可不传该默认参数的值。所有位置参数必须出现在默认参数前,包括函数定义和调用。函数调用时,如果为缺省参数传值则修改默认参数值,否则使用这个默认值。
不定长参数:用于不确定调用的时候会传递多少个参数(不传参也可以)。类型分为:
*args。传进的参数都会被args变量接收,它会根据传递参数的位置合并成一个元组tuple,args是元组类型。**kwargs。参数是“键=值”的情况下,所有的参数被kwargs接受,最后组成字典。函数也可以作为参数传递。
lambda匿名函数:定义匿名函数,只能临时使用一次。语法:lambda 传入参数: 函数体(一行代码)。
数据容器:一种可以容纳多份数据的数据类型,容纳的每一份数据称之为1个元素,每个元素可以是任意类型的数据。它分为5类:
列表的定义:列表内的每一个数据,称之为元素。
# 定义变量
变量名称 = [元素1, 元素2, 元素3, ...]
# 定义空列表
变量名称 = []
变量名称 = list()
常用方法:
.index(元素):查找在列表中该元素的下标索引,不存在该元素就会报错。列表[下标] = 值:修改特定下标索引值。.insert(下标, 元素):在指定的下标位置插入指定的位置。.append(元素):将指定的元素加入到列表尾部。.extend(其他数据容器):在尾部追加一批元素。del 列表[下标].pop(下标):可以得到删除的元素。.remove(元素):删除某元素在列表中的第一个匹配项(从前向后)。.clear():清空列表。count(元素):统计某元素在列表中的数量。len(列表):统计列表中全部的元素数量。元组:一旦定义完成,就不可修改。当我们需要在程序内封装数据,又不希望封装的数据被篡改,使用元组就很合适。
变量名称 = (元素, 元素, ...)
# 定义空元组
变量名称 = ()
变量名称 = tuple()
.index(元素)、.count(元素)、len(元组)可以用,跟list使用一样。.replace(字符串1, 字符串2):将字符串内的全部:字符串1替换成字符串2。ps:不是修改字符串本身,而是得到一个新的字符串。.split(分割符字符串):按照指定的分隔符字符串,将字符串划分为多个字符串,并存入列表对象中。ps:字符串本身不变,而是得到一个列表对象。.strip():去除前后空格。.strip(字符串):去除前后指定字符串。序列支持切片,切片:从一个序列中,取出一个子序列。
语法:序列[起始下标:结束下标:步长]表示从序列中,从指定位置开始,依次取出元素,到指定位置结束,得到一个新序列。
集合:无重复元素,无序,不支持下标索引访问。
变量名称 = {元素, 元素, ...}
变量名称 = set()
常见操作:
.add(元素):添加元素。.remove(元素):移除元素。.pop():随机取出一个元素。.clear():清空集合。集合1.difference(集合2):取出集合1和集合2的差集(集合1有而集合2没有)。得到的是一个新集合,集合1和集合2不变。集合1.difference_update(集合2):在集合1中,删除和集合2相同的元素。集合1被修改,集合2不变。集合1.union(集合2):将集合1和集合2合并成新集合。集合1和集合2都不变。变量名称 = {key:value, key:value, ...}
变量名称 = {}
变量名称 = dict()
常用操作:
字典[key] = value:如果没有key就是新增键值对,如果有key就是更新value。字典.pop(key):删除指定key的数据,也可以获取这个value。字典.clear():清空字典。字典.keys():获取全部的key。编码技术:翻译规则,记录了如何将内容翻译成二进制,以及如何将二进制翻译回可识别内容。不同的编码,将内容翻译成二进制也是不同的。要使用正确的编码,才能对文件进行正确的读写操作。
使用open()函数,可以打开一个已经存在的文件,或者创建一个新文件。语法如下:open(name, mode, encoding)。
只要是在同一个程序里调用下面方法,都相当于有个指针一样,会从上一次那开始读取。
.read(num):num表示从文件中读取的数据的长度(单位是字节),如果没有传入num,那么就表示读取全部数据。
.readlines():可以按照行的方式把整个文件中的内容进行一次性读取,并且返回的是一个列表,其中每一行的数据为一个元素。.readline():一次读取一行内容。.close():关闭文件对象。
with open语法
with open(name, mode, encoding) as f:
f.readlines()
.write():文件写入。
.flush():内容刷新。
异常捕获:
try:
可能发生错误的代码
except(异常类型) as e:
# 捕获全部的异常 except Exception as e:
如果出现异常执行的代码
else:
没有异常执行的代码
finally:
都会执行的代码
模块就是一个python文件,里面有类、函数、变量等,我们可以导入模块使用。模块在使用前要先导入,导入的语法是:[from 模块名] import [模块 | 类 | 变量 | 函数 | *] [as 别名]。
if_main_=="_main_"表示只有当程序是直接执行的才会进入if内部,如果是被导入的则if无法进入。python包就是一个文件夹,里面包含了多个模块文件。
python数据和json数据相互转化:
import json
# 准备符合json格式的python数据
data = [{"name":"wld", "age":20}, {"name":"xz", "age":25}]
# 通过json.dumps把python数据转化成json
data = json.dumps(data)
# 通过json.loads把json数据转化成python
data = json.loads(data)
ensure_ascii=False表示不按照Ascii码值显示,即显示正常的内容。如果想要做出数据可视化效果图,可以借助pyecharts模块来完成。
from pyecharts.charts import Line
from pyecharts.options import TitleOpts, LegendOpts, ToolboxOpts, VisualMapOpts
# 创建一个折线图对象
line = Line()
# 添加x轴的数据
line.add_xaxis(["中国", "日本", "韩国"])
# 添加y轴的数据
line.add_yaxis("GDP", [30, 20, 10])
# 设置全局配置项set_global_opts来设置
line.set_global_opts(
title_opts=TitleOpts(title="GDP展示", pos_left="center", pos_bottom="1%"),
legend_opts=LegendOpts(is_show=True),
toolbox_opts=ToolboxOpts(is_show=True),
visualmap_opts=VisualMapOpts(is_show=True)
)
# 通过render方法,将代码生成为图像
line.render()
from pyecharts.charts import Map
from pyecharts.options import *
# 准备地图对象
map = Map()
# 准备数据
data = [
("北京", 99),
("上海", 139),
("四川", 277),
("重庆", 439),
("厦门", 589)
]
# 添加数据
map.add("测试地图", data, "china")
# 设置全局选项
map.set_global_opts(
visualmap_opts=VisualMapOpts(
is_show=True,
is_piecewise=True,
pieces=[
{"min": 1, "max": 9, "label": "1-9", "color": "#ccffff"},
{"min": 10, "max": 199, "label": "10-199", "color": "#ff6666"},
{"min": 200, "max": 600, "label": "200-600", "color": "#990033"}
]
)
)
# 绘图
map.render()
from pyecharts.charts import Bar
from pyecharts.options import *
bar = Bar()
# 添加x轴
bar.add_xaxis(["中国", "美国", "英国"])
# 添加y轴 label_opts=LabelOpts(position="right"):数值标签在右侧显示
bar.add_yaxis("GDP", [30, 20, 10], label_opts=LabelOpts(position="right"))
#翻转xy轴
bar.reversal_axis()
bar.render("基础柱状图.html")
from pyecharts.charts import Bar, Timeline
from pyecharts.options import *
from pyecharts.globals import ThemeType
bar1 = Bar()
bar1.add_xaxis(["中国", "美国", "英国"])
bar1.add_yaxis("GDP", [30, 20, 10], label_opts=LabelOpts(position="right"))
bar1.reversal_axis()
bar2 = Bar()
bar2.add_xaxis(["中国", "美国", "英国"])
bar2.add_yaxis("GDP", [50, 40, 30], label_opts=LabelOpts(position="right"))
bar2.reversal_axis()
bar3 = Bar()
bar3.add_xaxis(["中国", "美国", "英国"])
bar3.add_yaxis("GDP", [90, 80, 70], label_opts=LabelOpts(position="right"))
bar3.reversal_axis()
# 构建时间线对象 主题设置
timeline = Timeline({"theme": ThemeType.LIGHT})
# 在时间线内添加柱状图对象
timeline.add(bar1, "点1")
timeline.add(bar2, "点2")
timeline.add(bar3, "点3")
# 自动播放设置
timeline.add_schema(
play_interval=1000,
is_timeline_show=True,
is_auto_play=True,
is_loop_play=True
)
# 绘图是用时间线对象绘图,而不是bar对象
timeline.render("基本时间线柱状图.html")
列表的sort方法:
# 扩展列表的sort方法 来对列表进行自定义排序
my_list = [["a", 33], ["b", 77], ["c", 11]]
# 排序 基于带名函数
# def choose_sort_key(element):
# return element[1]
# my_list.sort(key=choose_sort_key, reverse=True)
# 基于lambda匿名函数
my_list.sort(key=lambda element: element[1], reverse=True)
print(my_list)
在类中定义成员方法和定义函数基本一致,但是仍有区别:def 方法名(self, 形参1, 形参2, ...): 方法体。有一个关键字:self,在成员方法定义的时候必须填写。
python类可以使用:__init__()方法,称之为构造方法。可以实现:
魔术方法
__str__:类转换成字符串。__lt__:小于符号比较方法,即可同时完成:小于符号和大于符号2种比较。__le__:可用于<=、>=两种运算符上。__eq__:可用于==上。
__eq__是基于自己写的逻辑来判断类的对象是否相等。定义私有成员的方式:私有成员变量(方法),名称以__开头(2个下划线)。
继承只需要class 类名(父类1, 父类2, ...):类内容体。
父类名.成员变量super().成员变量父类名.成员方法(self)super().成员方法()