P133 确定目标
模块就是提供函数的一个工具包,函数就是工具包中的一种工具
P134 函数的概念
将之前已经写过的功能封装起来,构成一个函数,在以后想使用的时候可以随时调用,不用重复的编写(也叫 重用)
P136 函数的定义
函数名要做到见名知义
P137 函数调用
注意:定义好函数之后,只表示这个函数封装了一段代码而已,如果不主动调用函数,函数是不会执行的
调用函数很简单,通过“ 函数名()”即可完成对函数的调用
P140 调试小技巧
如果要执行的代码是一个我们编写的函数,在调试时点击step over,会直接执行完这个函数,而点击step into 可以进入函数内部,单步执行函数内部的代码,方便知道函数内部的执行状况
step into 这里进入的函数,需是我们自己编写的函数
P141 函数的注释文档 (官方给的方式)
1、在定义函数的下方,使用三对引号添加注释
2、在调用函数时,鼠标放在函数名上,点击左上角的View>Quick Documentation,可以查看注释内容
函数定义上方空两行:PEP8标准要求的
P142 没有参数的函数过于死板
P143 函数参数的使用及作用
P144 形参与实参
形参:在定义函数时,小括号内的变量,它有两个作用,一是:告诉外界能够传送的实参的数量,二是:在函数内部当做变量使用,进行计算
实参:在调用函数时,传送的实实在在的数据,实实在在的数据就是实参
P145 函数的返回值
什么时候需要返回值?
一个函数执行结束后,我们需要知道一个结果,并对这个结果进行后续的处理
使用 变量 = 函数名 来接收函数结果
在return 下面的代码(且在定义函数的内部的)不会执行
P148 函数的嵌套调用
易错:在用实参传递字符char时,实参要用引号括起来,char 可以是多个字符的 ,不一定是单字符
P151
在大型项目中,需求改变,也不要轻易改变原有函数!可能会影响其他正常工作的功能,而是在原有基础上,添加新的函数
P153 函数注释小技巧
在定义的函数名上单击,过一会儿会出现一个小灯泡,再点击插入文档字符串注释,即可添加以下注释
P154
简单来说:就是所有以.py结尾的Python源文件都是一个模块,并且在这个模块中定义的变量或者函数,都可以在外界直接使用,但是,使用前要提前用import导入这个模块
P155
模块的使用,先打出模块名,再带个点,然后想使用函数就使用函数,要使用变量就使用变量
P156
1、项目名称可以以数字开头
2、项目下的文件名不能以数字开头,同时项目名就是模块名,模块名也是一个关键字
(即文件名=模块名=关键字) 以数字开头的文件名,不能当做模块导入其它模块了
P157 pycache文件 (了解即可)
在一个项目中,有自己写的模块,被其它模块导入时,会生成一个pycache文件,用c语言提前将这个导入的模块编译好(而不是Python一般的解释一行执行一行那种形式),下次使用时,可以提高这个导入模块的执行速度,这些导入的模块,编译后,都被放在pycache文件下
P158 高级变量
P159 列表
就是用一个变量,存储多个数据的,数据与数据之间用逗号隔开
下面这个叫做变量名的方法,与函数类似,调用方法如下,在ipython中如何查询方法有哪些
index 就是索引的意思,也叫下标
在pycahrm中,不知道方法的具体用法,可以鼠标点击,再按control+Q 查看使用文档
P166 del 关键字(delete)
1、del关键字本质上用来将一个变量从内存中删除的,即使用del删除后,就相当于未声明这个变量 , 后续使用这个变量名,会告诉这个变量未定义 ,后续不能再使用这个变量
2、在日常的开发中,要从列表删除元素,建议使用列表提供的方法
P167 列表的统计
1、在不确定方法的使用时,鼠标点击方法名,再按control+Q查看说明文档
2、注意区分:函数不等于方法,使用方法也不同
注意 函数的位置和方法的位置
P169 关键字、函数、方法的特点和区别
1、函数可以直接调用,需要死记硬背
2、而方法需要通过对象来调用,后面加点,就可以查看有哪些,control+Q就可以查看功能,不用死记硬背
3、调用函数和方法后面都需要一对小括号,而关键字不需要,目前为止,学了一半的关键字了,关键字也需要死记硬背
P170 循环遍历
1、name 是我们依次从已有列表my_list中取出数据保存的变量名称,也是在循环体内部希望使用的变量名称
2、my_list 是列表名称,我们依次从中取出数据,然后赋值给name
P171 列表和循环遍历常一起使用
存储相同的数据类型,通过循环遍历,进行统一的处理
Python中也允许在列表中存储不同的数据类型,但是实际中很少使用
P172 元组
元组和列表有2点不同:用小括号定义,不能修改元素(但是获取元组中的数据仍用中括号)
应用场景:用于保存不同的元素类型
元组中只包含一个元素时,元素后面不加逗号,会被认为是其他类型,而不是元组类型
P175 元组的循环遍历
P176 元组的使用场景
P177 元组和列表之间的转换
用list或者tuple函数转换后要用新的变量名来接收
num_list = [1, 2, 3, 4]
例如: num_tuple = tuple(name_list)
原来的name_list仍是列表类型的
P179 字典
P180 字典
字典是用来存储和一个物体相关的信息的
用{}定义
键,值之间用:隔开
键值对之间用,隔开
键是索引,必须是唯一的,值是数据,可以有重复
键是程序员自己定义的,最常用的数据类型就是字符串
P182 字典的常用操作
P183 字典的循环遍历
P185 字符串的定义
P187 字符串的常用操作
P196 公共方法——内置函数
del有两种使用方式: 关键字或者函数即del a[1]或者 del(a[1])
容器:可以存放列表、元组、字典等等
P197 切片:在中括号里用索引值来限制范围进行切片
对字符串的切片,对列表或者元组进行切片
但是不可以对字典进行切片
P198 运算符
字典不能使用 * 号,因为字典中的元素是以键值对来呈现的,键值对中的键是唯一的
注:extend和append方法的不同
extend会把列表中的参数,合并到原有列表中
append会将整个列表看成一个独立的元素,追加到原列表末尾
P199 成员运算符 in /not in
P200 完整的for 循环语法
P201 for-else的使用场景
常常用于搜索字典列表,遍历完成时,控制想要输出的结果
P202 名片管理系统
P208 技巧:
P209 TODO注释
P212 数据结构的确定
在主框架构建完成后,应该首先确定我们的程序怎么处理每一个名片记录,而不要着急编写一个又一个功能,当数据确定之后,后续的代码再编写起来,就会相对容易很多
P214 pycharm重命名技巧
重命名的小技巧:单击变量名>右键>refactor>rename>选中所有
P225 如何在Linux上通过文件名直接启动程序
1、查到解释器的路径,在主程序文件的第一行加上:#! 解释器的路径地址
2、给主程序文件加上可执行权限
3、在文件所在目录下,输入文件名即可执行程序
Python语法进阶
P226
“引用”可以理解为“别名”
“指针”可以理解为“地址”
P227 id函数可以查看变量保存数据的地址
在Python中函数的传递,实际上传的是实参地址的引用,而不是实参的值
这一点与C语言不同
P228 函数的参数、函数的返回值 都是通过变量的引用传递的(地址不变)
P229 可变和不可变类型
列表和字典可以通过方法的调用,改变内存中的内容,而地址不发生变化
注意:对列表的重新赋值,是在改变变量的引用地址,而不是修改内存中的值
通过方法调用的方式,才是只修改内容
可变类型:列表、字典(需要记住)
P330 hash
字典的key不能是列表或者字典,其他都可以
P231 局部变量和全局变量
局部变量:在某个函数内部定义的,
全局变量:不在任何函数内定义的
P233 局部变量
1、在函数内部定义的变量,只能在函数内部使用,其他位置统统不能使用
P234 局部变量的生命周期
出生:局部变量那条语句在执行时,被创建
死亡:函数执行结束,局部变量死亡,内存会被系统回收
P235 全局变量
函数内遇到变量时,首先查找函数内部,若没有,再查找函数外部是否有
P238 在函数内部,是无法修改全局变量的值的(同名,不是通过参数传递)
希望修改全局变量的值 ,在Python中,是不允许直接修改全局变量的值 ,在函数内部,如果使用赋值语句,只是重新在函数内部,定义了一个同名的局部变量而已,可以通过调试功能观察
上图说明:在函数和模块中,各有一个num变量,说明两个不是同一个变量
P240 global关键字声明全局变量
使用global关键字后,在函数内,赋值语句就不会创建局部变量了,赋值语句会直接改变全局变量的值
P241 全局变量的位置:在所有函数的上方
在开发时,应该把模块中的每一个全局变量都定义在所有函数的上方,就可以保证所有的函数都能够正常的访问到每一个全局变量了
P242 全局变量的命名
P243 什么时候使用参数/返回值?
1、内部处理的数据不确定时,使用参数
2、需要向外界汇报执行结果时,使用返回值
P244 函数执行后返回多个结果
# 元组可以返回多个数据,因此可以使用元组让函数依次返回多个值
# 如果函数返回的类型是元组,小括号可以省略
# return (temp, wetness)
P245
P247 函数的参数(通过函数参数传递变量的引用,但是无法修改外面变量的值)
不论是可变还是不可变类型,在函数内,针对参数使用赋值语句,会在函数内部修改局部变量的引用,不会影响到外部变量的引用
在函数内部的修改,会开辟一个新的内存,然后函数的形参变量指向这块内存
P248 函数的参数
在函数内调用参数(或者叫形参)的方法时,是没有智能提示的,需要手动输入方法的名字
注意:对于可变类型的参数,在函数内调用方法,是会影响外部数据的,但是使用赋值语句是不会影响外部数据
P249 对列表的加等于(面试题)
列表的 “+=” 等于调用extend方法,不等于先相加再赋值
+=和extend方法会影响外部列表变量,而先相加再赋值,不影响外部变量
P250 缺省参数
P251 如何指定函数的缺省参数
P252 使用缺省参数的注意事项
1、缺省值必须放在多个参数的末尾
2、中间的缺省值项使用默认参数时,后面的缺省参数要补齐名称,不能只写“True”,这样写,系统分不清
P253 多值参数:函数需要处理的参数个数不确定时,使用
依次输出整数1、元组、字典
注意这里字典的格式
P255 元组和字典的拆包
P256 递归
1、函数自己调用自己
2、函数执行的代码是相同的,只是参数不同
3、当满足某个条件时,函数使用return跳出递归(break跳出循环)
P257 递归求和