Python
Chapter1
运算符:
- // 整除
- ** 次方
字符串拼接:
- 字符串%s
- 整数%d
- 浮点数%f
- eg:
message = "python大数据学科,北京%s期,毕业平均工资:%s" % (class_num, avg_salary)
数字精度控制:使用辅助符号“m.n”来控制数据的宽度和精度
- m:控制宽度,要求是数字,设置的宽度小于数字自身则不生效
- n:控制小数点精度,要求是数字,会进行小数的四舍五入
字符串格式化:f"{}"
- 不理会类型
- 不能精度控制
- eg:
print(f"我是{name}, 我现在{status}, 想要睡{hour}小时")
input语句:获取键盘输入的数据
input(提示信息):用以在使用者输入内容之前显示提示信息。- ps:无论键盘输入什么类型的数据,获取到的都是str类型。
Chapter2
布尔类型:
- True:1
- False:0
判断语句: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)。
Chapter3
函数的定义:
def 函数名(传入参数):
函数体
return 返回值
- 参数可以省略,返回值可以省略,默认是None。
- 必须先定义再使用。
- 使用global关键字,可以在函数内部声明变量为全局变量。
关键字参数:函数调用时通过“键=值”形式传递参数。作用:可以让函数更加清晰、容易使用,同时也清除了参数的顺序要求。ps:函数调用时,如果有位置参数时,位置参数必须在关键字参数的前面,但关键字参数之间不存在先后顺序。
缺省参数:用于定义函数,为参数提供默认值,调用函数可不传该默认参数的值。所有位置参数必须出现在默认参数前,包括函数定义和调用。函数调用时,如果为缺省参数传值则修改默认参数值,否则使用这个默认值。
不定长参数:用于不确定调用的时候会传递多少个参数(不传参也可以)。类型分为:
- 位置传递:
*args。传进的参数都会被args变量接收,它会根据传递参数的位置合并成一个元组tuple,args是元组类型。 - 关键字传递:
**kwargs。参数是“键=值”的情况下,所有的参数被kwargs接受,最后组成字典。
函数也可以作为参数传递。
lambda匿名函数:定义匿名函数,只能临时使用一次。语法:lambda 传入参数: 函数体(一行代码)。
- lambda是关键字,表示定义匿名函数。
- 传入参数表示匿名函数的形式参数。
- 函数体只能写一行代码,无法写多行代码。
数据容器:一种可以容纳多份数据的数据类型,容纳的每一份数据称之为1个元素,每个元素可以是任意类型的数据。它分为5类:
- 列表list
- 元组tuple
- 字符串str
- 集合set
- 字典dict
列表list
列表的定义:列表内的每一个数据,称之为元素。
# 定义变量
变量名称 = [元素1, 元素2, 元素3, ...]
# 定义空列表
变量名称 = []
变量名称 = list()
- 以[]作为标识。
- 列表每一个元素之间用逗号隔开。
- 可以存储不同的数据类型,允许数据重复,支持嵌套。
- 有序存储,列表[下标索引],从前向后从0开始,从后向前从-1开始。
常用方法:
.index(元素):查找在列表中该元素的下标索引,不存在该元素就会报错。列表[下标] = 值:修改特定下标索引值。.insert(下标, 元素):在指定的下标位置插入指定的位置。.append(元素):将指定的元素加入到列表尾部。.extend(其他数据容器):在尾部追加一批元素。- 删除元素
del 列表[下标].pop(下标):可以得到删除的元素。.remove(元素):删除某元素在列表中的第一个匹配项(从前向后)。
.clear():清空列表。count(元素):统计某元素在列表中的数量。len(列表):统计列表中全部的元素数量。
元组tuple
元组:一旦定义完成,就不可修改。当我们需要在程序内封装数据,又不希望封装的数据被篡改,使用元组就很合适。
变量名称 = (元素, 元素, ...)
# 定义空元组
变量名称 = ()
变量名称 = tuple()
- 元组只有一个数据,这个数据后面要添加逗号。
- 常用方法:
.index(元素)、.count(元素)、len(元组)可以用,跟list使用一样。 - 可以嵌套,如果数据里面有list,则可以修改list的元素。
字符串str
- 字符串不能修改。
.replace(字符串1, 字符串2):将字符串内的全部:字符串1替换成字符串2。ps:不是修改字符串本身,而是得到一个新的字符串。.split(分割符字符串):按照指定的分隔符字符串,将字符串划分为多个字符串,并存入列表对象中。ps:字符串本身不变,而是得到一个列表对象。.strip():去除前后空格。.strip(字符串):去除前后指定字符串。
序列的切片
序列支持切片,切片:从一个序列中,取出一个子序列。
语法:序列[起始下标:结束下标:步长]表示从序列中,从指定位置开始,依次取出元素,到指定位置结束,得到一个新序列。
- 起始下标表示从何处开始,可以留空,留空表示从头开始。
- 结束下标(不含)表示何处结束,可以留空,留空表示截取到结尾。
- 步长表示依次取元素的间隔,默认是1。步长为负数表示反过来取,ps:起始下标和结束下标也要反向标记。
集合set
集合:无重复元素,无序,不支持下标索引访问。
变量名称 = {元素, 元素, ...}
变量名称 = 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都不变。
字典dict
变量名称 = {key:value, key:value, ...}
变量名称 = {}
变量名称 = dict()
- key和value可以是任意类型,key不可为字典。
- key不能重复。
常用操作:
字典[key] = value:如果没有key就是新增键值对,如果有key就是更新value。字典.pop(key):删除指定key的数据,也可以获取这个value。字典.clear():清空字典。字典.keys():获取全部的key。
Chapter4
编码技术:翻译规则,记录了如何将内容翻译成二进制,以及如何将二进制翻译回可识别内容。不同的编码,将内容翻译成二进制也是不同的。要使用正确的编码,才能对文件进行正确的读写操作。
open()
使用open()函数,可以打开一个已经存在的文件,或者创建一个新文件。语法如下:open(name, mode, encoding)。
- name:要打开的目标文件名的字符串(可以包含文件所在的具体路径)。
- mode:设置打开文件的模式(访问模式):只读、写入、追加等。
- r:以只读方式打开文件,文件的指针将会放在文件的开头。
- w:打开一个文件只用于写入。如果已存在则打开文件,并从头开始编辑,原有内容会被删除。如果不存在,就创建新文件。
- a:打开一个文件用于追加。如果存在该文件,新的内容将会被写入到已有内容之后。如果不存在,就创建新文件写入。
- encoding:编码格式(推荐使用utf-8)。ps:encoding的顺序不是第三位,所以不能用位置参数,用关键字参数直接指定。
读
只要是在同一个程序里调用下面方法,都相当于有个指针一样,会从上一次那开始读取。
.read(num):num表示从文件中读取的数据的长度(单位是字节),如果没有传入num,那么就表示读取全部数据。- 在程序中多次调用read,下一次read会从上一次截取末尾开始截取。
.readlines():可以按照行的方式把整个文件中的内容进行一次性读取,并且返回的是一个列表,其中每一行的数据为一个元素。.readline():一次读取一行内容。- for循环读取文件行,临时变量line就记录了文件的一行数据。``for line in 文件对象:`
关闭
.close():关闭文件对象。
- 如果不调用close,同时程序没有停止运行,那么这个文件就会一直被python程序占用。
with open语法
with open(name, mode, encoding) as f:
f.readlines()
- 通过在with open的语句块中对文件进行操作。
- 可以在操作完成后自动关闭close文件,避免遗忘掉close方法。
写 追加写
.write():文件写入。
.flush():内容刷新。
- 直接调用write,内容并非真正写入文件,而是会积攒在程序的内存中,称之为缓存区。
- 当调用flush的时候,内容才会真正写入文件,这样做是避免频繁的操作硬盘,导致频率下降(攒一堆,一次性写入磁盘)。
- w:文件不存在就创建文件,存在就会覆盖原来的内容。a:文件不存在就创建文件,存在就会在原来的内容追加新内容。
- close()内置了flush的功能。
Chapter5
异常捕获:
try:
可能发生错误的代码
except(异常类型) as e:
# 捕获全部的异常 except Exception as e:
如果出现异常执行的代码
else:
没有异常执行的代码
finally:
都会执行的代码
模块就是一个python文件,里面有类、函数、变量等,我们可以导入模块使用。模块在使用前要先导入,导入的语法是:[from 模块名] import [模块 | 类 | 变量 | 函数 | *] [as 别名]。
- 可以自定义模块,就是正常在一个python文件里写函数,导入该文件即可。
if_main_=="_main_"表示只有当程序是直接执行的才会进入if内部,如果是被导入的则if无法进入。
python包就是一个文件夹,里面包含了多个模块文件。
Chapter6
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)
- 在json.dumps后面加上参数
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)
Chapter7
在类中定义成员方法和定义函数基本一致,但是仍有区别:def 方法名(self, 形参1, 形参2, ...): 方法体。有一个关键字:self,在成员方法定义的时候必须填写。
- 它表示类对象自身的意思。
- 当我们使用类对象调用方法,self会自动被python传入。
- 在方法内部,想要访问类的成员变量,必须使用self。
- 传参列表必须有,但是使用时可以忽略它。
python类可以使用:__init__()方法,称之为构造方法。可以实现:
- 在创建类对象(构造类)的时候,会自动执行。
- 在创建类对象(构造类)的时候,将传入参数自动传递给_init_方法使用。
魔术方法
__str__:类转换成字符串。__lt__:小于符号比较方法,即可同时完成:小于符号和大于符号2种比较。__le__:可用于<=、>=两种运算符上。__eq__:可用于==上。- 直接用==是比较的内存地址,用了
__eq__是基于自己写的逻辑来判断类的对象是否相等。
- 直接用==是比较的内存地址,用了
定义私有成员的方式:私有成员变量(方法),名称以__开头(2个下划线)。
继承只需要class 类名(父类1, 父类2, ...):类内容体。
- 对于同名的变量,按照优先级来,谁先被继承就用谁的。
- 在定义函数时,如果什么都不写会报错,写pass即可。
- 需要的话就复写父类成员,但如果想要调用父类的成员:
- 使用成员变量:
父类名.成员变量super().成员变量
- 使用成员方法:
父类名.成员方法(self)super().成员方法()
- 使用成员变量:
本章介绍了Python的基础知识,包括运算符、字符串拼接、数字精度控制和格式化输出。深入讲解了input语句、布尔类型、if...else...判断、for循环和range函数。接着探讨了函数的定义、参数传递方式,如关键字参数、缺省参数和不定长参数。还详细阐述了数据容器如列表、元组、字符串、集合和字典的操作方法。最后,讲解了文件的读写操作,异常捕获机制,以及编码技术在文件操作中的应用。
6245

被折叠的 条评论
为什么被折叠?



