Python
2020-07-02 10:30:49 0 举报
AI智能生成
Python编程:从入门到实践的知识点梳理及扩充
作者其他创作
大纲/内容
基础知识
数据结构
变量和简单的数据类型
变量
一般采用小写字母、下划线和数字组合
使用描述性的名称,name比n要好
字符串
合并字母串:直接引号+/-
使用方法改变字符串字母的大小写
首字母:方法title()
所有字母大写:方法upper()
所有字母小写:方法lower()
删减空白
删除所有空白:方法strip()
删除开头空白:方法lstrip()
删除末尾空白:方法rstrip()
避免语法错误
变量名不对应
单/双引号使用不正确
附录C
数字
整数
浮点数
函数str(),避免类型错误:age=23
str(age)
str(age)
注释
单行注释#
多行注释''' or """
列表:元素的有序集合
2个重要的概念
索引:访问列表中单个元素
切片:处理列表中的部分元素
修改、添加和删除元素
修改元素:指定列表名和要修改的元素的索引,list[i]=n
添加元素
末尾:方法append('元素')
任意位置:方法insert(索引, '元素')
删除元素
del语句:del list_name[索引]
方法pop():listi_name.pop() 删除列表末尾元素
list_name.pop(索引) 删除列表任意索引处的元素
list_name.pop(索引) 删除列表任意索引处的元素
方法remove():list_name.remove('元素')根据值删除元素
只删除第一个指定的元素值,多个相同的元素值删除需要用循环
只删除第一个指定的元素值,多个相同的元素值删除需要用循环
组织列表
永久排序:方法sort()
临时排序:函数sorted()
永久反转列表元素顺序:方法reverse()
打印列表长度:函数len()
避免索引错误
索引是从0开始的,超出索引数会出现错误
索引-1处指向最后一个元素,此时仅当列表为空时会出现错误
发生索引错误找不到解决办法时,可将列表或其长度打印出来
操作列表
遍历列表:for循环
适用:对列表的每个元素执行相同的操作
基本语法:for a in a_list:
print(a)
print(a)
临时变量命名:单(元素名)复(列表名)数的形式有利于理解列表元素
缩进:在for语句后,每一行缩进的代码都是循环的一部分,
且针对列表中的每一个循环元素执行相同的操作
且针对列表中的每一个循环元素执行相同的操作
避免缩进错误
Python根据缩进来判断代码行与前一个代码行的关系
语法错误:忘记缩进紧跟for语句行的代码、for语句行遗漏冒号和不必要的缩进等等
逻辑错误:忘记缩进额外的代码行、循环后不必要的缩进等等
创建数值列表:函数range()
函数range(n,m,i):生成一系列数字,i为步长
函数list(range()):将range()的结果直接转成列表
统计计算:min(list),max(list),sum(list)
列表解析:将for循环和创建列表元素的代码合并,此时for语句后面无冒号
squares = [value**2 for value in range(1,11,2)]
squares = [value**2 for value in range(1,11,2)]
切片:使用列表的一部分
创建切片:提供制定使用的第一个元素和最后一个元素的索引list[n:m]
遍历切片:list[:], list[n:], list[:m]
复制列表-创建副本:list1=list[:]
元组:不可用索引修改元素的列表,但可重新赋值
用圆括号定义元组list1(a,g,..m),列表是方括号
遍历元组语法同遍历列表
修改元组变量,重新赋值即可(无法用索引修改)
元组数据结构较列表简单,适用于存储一组在整个程序生命周期内都不变化的值
代码格式:PEP8(Python Enhancement Proposal)
缩进:四空格(制表符需转换为空格)
行长:代码不超过80字符;注释不超过72字符
空行:尽量少;合理划分代码块的功能
PEP 8 :请访问https://python.org/dev/peps/pep-0008/
字典:一系列健-值对
基本使用
结构:dictionary_name = {'key1': 'value1', ... ,'keyN': 'valueN'}
空字典:ditc_none = {}
空字典:ditc_none = {}
访问:variables = dictionary_name['keyN']
添加键-值对:dicitonary_name['keyN'] = 'valueN'
修改字典中的值:dict_name['keyN'] = 'modified_valueN'
删除健-值对:del语句,del dict_name['keyN']
格式:一对健-值占1行
遍历
所有的键-值对:方法items()
说明:items()返回一个健-值对列表
用法:for key, value in dict_name.items():
print(key)
print(value)
print(key)
print(value)
所有的健
方法keys():for key_name in dict_name.keys():
for语句中直接用单变量即可:for key_name in dic_name:
按顺序:函数sorted(), for key_name in sorted(dict_name.keys()):
所有的值
方法values(): for value_name in dict_name.values():
剔除重复项-所有不重复的值:函数-集合set()
for value_name in set(dict_name.values()):
for value_name in set(dict_name.values()):
嵌套:一系列字典存储在列表中
/列表作为值存储在字典中
/字典作为值存储在字典中
/列表作为值存储在字典中
/字典作为值存储在字典中
字典嵌套在列表中:list_name = [dict_0, dict_1, dict_2]
列表嵌套在字典中:dict_name = {
'key1':'value1'
'key2':[variables1,variables2]
}
'key1':'value1'
'key2':[variables1,variables2]
}
字典嵌套在字典中:dict_name = {
'key1':{},
'key2':{}
}
'key1':{},
'key2':{}
}
代码复杂
被嵌套的所有字典的结构应相同
可拆分为字典嵌套在列表中
函数:带名字的代码块
定义函数: def function_name(形参):
调用函数: function_name(实参)
调用函数: function_name(实参)
形参:函数完成工作所需的一项信息
实参:调用函数时传递给函数的信息
传递实参的方式
位置实参:基于实参的顺序
关键词实参:传递给函数的“名称-值”对
形函数中指定形参默认值,调用时Python默认为位置实参
避免实参-形参数不匹配错误
传递任意2数量的实参
定义函数的元组形参:def funvtion_name(*tuple_name):
定义函数的字典形参:def function_name(**dict_name):
上述2种形参在定义和调用时应在其他形参之后
def function_name(parameter, dict_name):
def function_name(parameter, dict_name):
函数返回值:return语句将值返回到
调用函数的代码行
调用函数的代码行
调用返回值的函数时,需要提供一个变量来存储返回的值
variables1 = function_name(实参)
variables1 = function_name(实参)
实参可选:Python将非空字符解释为True,可使用if语句实现
返回字典
传递列表
def function_name(list_name1,List_name2):
禁止函数修改列表-传递其切片副本即可:function_name(list_name[:]):
函数存储于模块中及调用
模块:扩展名为.py的文件
导入模块:import module_name
导入模块中的所有函数; from module_name import *
句号调用模块中的函数:module_name.function_name()
导入特定的函数:from module_name import function_0, funtion_1
调用时直接调用函数名既可,无需句号
调用时直接调用函数名既可,无需句号
as-指定别名
函数:from module_name import function_name as fn
模块:import module_name as mn
函数编写指南
给函数指定描述性的名称,且只使用小写字母和下划线
每个函数都应简要地阐述其功能的注释,该注释应紧跟函数定义后面,并采用文档字符串格式"""
给形参指定默认值时,等号两边不要有空格:def function_name(parameter_0, parameter_1='default value')
如果程序或模块中包含多个函数时,可使用2个空行将相邻的函数分开
所有的import语句都应放在文件开头,唯一例外-文件开头使用注释来描述整个程序
类:创建对象,实例化
方法:类中的函数称之为方法
函数和方法唯一重要的区别是调用方式不同
方法__init__(),其形参self必不可少,且居于首位
原因:每个与类关联的方法调用都自动传递实参self
且以self为前缀的变量可供类中所有方法使用
原因:每个与类关联的方法调用都自动传递实参self
且以self为前缀的变量可供类中所有方法使用
方法的编写指南可参考函数的参考指南
创建
类:class ClassName():
实例
属性:类中定义的变量,以'self.variable_name=variable_name'进行初始化
访问属性:句号表示法
调用方法:句号表示法
使用
给属性指定默认值后,无须给此属性提供初始值的形参
修改属性的值
通过实例直接访问并修改
通过在方法修改,设置形参
继承
子类的方法__init__()
创建子类时,父类必须包含在当前文件中
且位于子类前面,或在文件开头将父类导入
且位于子类前面,或在文件开头将父类导入
定义子类时,必须括号内指定父类的名称:
class SubClassName(ClassName):
class SubClassName(ClassName):
函数super():帮助Python将父类和子类关联起来
给子类定义属性和方法:父类并不包含的
重写父类的方法:与重写的父类方法同名
细化属性和方法,并作为独立类提取出来
原类中方法内设置属性调用新类
self.attribute_0 = Attribute0()
self.attribute_0 = Attribute0()
实例中调用语法
variable_0.attribute_0.method()
variable_0.attribute_0.method()
模拟复杂的实物-重写类
导入
以父类的名称命名文件
从一个模块导入单个类:from module_name import ClassName
从一个模块中导入多个类:from module_name import ClassName0, ClassName1
导入整个模块,使用句点表示法访问需要的类:import module_name
导入模块中所有的类:from module_name import *
一个模块中导入另一个模块
自定义工作流程
先在一个文件中完成所有的工作,确定正常
运行后,再将类移到独立的模块中
运行后,再将类移到独立的模块中
模块与文件的交互方式,在项目开始
就尝试将类存储到模块中
就尝试将类存储到模块中
Python标准库
https://pymotw.com/3/
下载外部模块-实际项目
编码风格
驼峰命名法:类名中每个单词首字母大写,不使用下划线
实例名和模块名小写,且单词间加下划线
实例名和模块名小写,且单词间加下划线
每个模块开头也应包含一个文档字符串,对其中的类可用于做什么进行描述
每个类,都应紧跟在类定义后面包含一个文档字符串来简要描述类的功能
类中,1个空行来分隔方法;模块中,2个空行来分割类。此点类似于函数。
需要同时导入标准库中的模块和其他模块(外部or个人编写)时,
先编写导入标准库模块的import语句,然后空1行,再导入其他的模块
先编写导入标准库模块的import语句,然后空1行,再导入其他的模块
控制语句
for循环:参照遍历列表/字典-针对同一对象多次执行相同的操作
if语句:条件测试-判断
条件测试:True/False
比较运算符
相等:==
不相等:!=
其他: <, <=, >, >=
求模运算符:%,求余数
检查多个条件:为增加可读性,
可将每一个测试放在()内
可将每一个测试放在()内
(条件测试) and (条件测试)
(条件测试) or (条件测试)
检查特定值
关键字:in
关键字:not in
布尔表达式:条件测试的别名
if语句
基本语法:if conditional_test:
do something
do something
if-else语句:else语句指定条件测试未通过时要执行的操作
if-elif-else语句:检查超过2个的情景
多个elif代码块
末尾else代码块可省略
测试多个条件:多个if语句(if-elif-else仅测试一个条件)
if 语句处理列表
检查特殊元素
确定列表非空:列表为空时返回False
调用多个列表进行条件测试
PEP8语句格式:在诸如== 、>= 和<= 等比较运算符两边各添加一个空格
while循环:指定条件不满足时停止
输入:input(),输入后变量类型是字符串
语法:while conditional_test:
2种退出循环方式
使用标志退出:active = True
while active:
循环中包括一条语句:active = False即可退出
while active:
循环中包括一条语句:active = False即可退出
break退出循环,不在运行循环中的余下代码
也不管条件测试的结果如何
也不管条件测试的结果如何
continue:返回循环开头,并根据条件测试结果决定是否继续执行循环
while循环处理列表和字典
在列表间移动元素
删除包含特定值的所有列表元素
使用用户输入来填充字典
文件处理
从文件中读取数据
读取整个文件:函数open()
文件路径
相对路径:同父目录
绝对路径
逐行读取
使用文件
将数据写入文件
open(filename,'w/r/a')三种模式
w:写入模式:会覆盖文件原来的内容
r只读模式
a附加模式
Python只能将字符串类型的数据写入文本
写入多行\n
程序运行异常:try-except-else代码块
ZeroDivisionError异常
FileNotFoundError异常
分析文本:方法split()-以空格为分隔符将字符串分拆成多个部分
并将这些部分都储存到一个列表中,虽然有些单词可能包含标点
并将这些部分都储存到一个列表中,虽然有些单词可能包含标点
使用多个文件:创建一个文件列表,for循环调用
存储数据
JOSN格式-import json
存储数字列表:json.dump()
读取列表:json.load()
重构
测试代码
高级编程
实践项目
数据可视化
web应用程序
收藏
收藏
0 条评论
下一页