Python中的函数基础

本文深入探讨了Python中的函数概念,强调了函数的定义、调用和重用。讲解了模块的使用,强调了模块作为代码组织单位的重要性。此外,详细阐述了Python的数据结构,如列表、元组和字典的操作,以及变量的可变性和不可变性。还介绍了递归、默认参数、可变参数和关键字参数等高级编程概念。
摘要由CSDN通过智能技术生成

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 递归求和

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

#学习的路上

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值