Python学习第4日

1.函数

函数是组织好的,可以重复使用的,用来实现特定功能的代码片段

例如:input()和print()函数

1.1 函数定义

注意:函数定义时的参数列表和返回值语句是可有可无的;函数必须先定义后调用(函数定义时,内部函数体并未执行,在调用时才会执行)

1.2 函数的参数与返回值

注意:

  • 函数定义时如果有多个参数,过个参数间用逗号 (,)分隔;
  • return 语句只有返回功能,而没有输出打印的功能,如果要输出,需要配合print()语句来实现
  • 在调用函数时,传入实参时的顺序要和定义时的形参的数据保持一致
  • round(数据,保留几位小数)

1.3 函数的说明文档

函数的说明文档是写在函数开头,用三个引号包裹的字符串,用于解释函数的功能,参数,返回值等信息,方便调用者清楚函数的具体作用及细节

使用 Ctrl + 鼠标点击函数 可以跳转到该函数的定义位置

1.4 函数的嵌套调用

函数的嵌套调用指的是在一个函数中,又调用了另外一个函数

函数调用遵循栈结构,最后被调用的函数最先返回 LIFO(后进先出)

2.函数的进阶

2.1 函数变量的作用域

变量的作用域指的是变量的作用范围(标识这个变量在哪里可以使用,在哪不可以使用)

变量的分类:

  • 全局变量:函数之外定义的变量,称之为全局变量,在整个文件中(包括函数内)都可以使用(通常定义在函数的顶部)
  • 局部变量:函数内部定义的变量,称之为局部变量,只能在该函数内部使用,外部无法访问(函数执行完毕后,会自动销毁其内部局部变量)

global 关键字:

global 关键字用于明确的告诉Python解释器,在函数中要使用全局变量,使得可以在函数内部修改全局变量的值

在基于 global 关键字声明全局变量时,要先声明,再使用

2.2 函数参数详解

2.2.1 函数传参方式

传参方式是指:在调用函数时,传递实参的方式

1.位置参数 :调用函数时根据函数定义时的位置来传递参数

要求:调用函数时参数顺序与定义函数时参数顺序完全一致

2.关键字参数: 调用函数时以函数定义时形参名称作为关键字,以 "键 = 值" 的形式来传递参数(不要求顺序)

要求:如果位置参数与关键字参数混用,关键字参数必须在位置参数之后(关键字参数之间没有顺序要求)

3. 位置参数 VS 关键字参数

2.2.2 默认参数

默认参数也称为缺省参数,用于在定义函数时,为参数提供默认值,调用函数时,可以不传递有默认值的参数

注意:

  • 默认参数必须放在没有默认值的参数列表的后面,一个函数在定义时是可以设置多个默认参数的
  • 函数调用时,如果为默认参数传递了值,则会修改默认的参数值;如果没有传递该参数,则直接使用默认值

2.2.3 不定长参数

不定长参数也叫可变参数,用于函数定义及调用时参数个数不确定(0个或多个)的场景

类型:

  • 位置传递
  • 关键字传递

1. 不定长参数------位置传递

注意:

  • 传递的所有匹配的位置参数都会被 args 变量收集,这些参数会合并封装为一个元组, args 是元组类型(注意并不会封装关键字参数)
  • args 只是约定俗成的变量名,并不是关键字,这里可以使用任何合法的变量名(如 *data)

2. 不定长参数------关键字传递

注意:

  • 参数是以 "键 = 值" 形式传递的关键字参数, 这些 "键 = 值" 参数都会被 kwargs 接收,并封装为一个字典类型
  • kwargs 只是约定俗成的变量名,并不是关键字,这里可以使用任何合法的变量名(如 **options)

3. 小结

当不定长位置参数和不定长关键字参数同时存在的情况下,要先定义不定长位置参数,再定义不定长关键字参数

2.2.4 参数的类型

  • 普通参数:数字,布尔,字符串,列表,元组,集合,字典等
  • 特殊参数:函数

2.3 匿名函数

命名函数:定义的函数都有名字

匿名函数:指的是没有名称的函数 ,需要通过 lambda 表达式来声明函数,可以简化简单函数的编写**(单行表达式)**

注意:

  • 由于 lambda 表达式是一个单行表达式,因此只能用于一些简单函数的定义
  • 由于 lambda 表达式定义的匿名函数没有名字,因此需要在定义时将函数赋值给一个变量,这个变量本质就是一个简易函数
  • 匿名函数中可以返回结果,也可以不返回结果。返回结果时,不需要写 return ,表达式的运行结果就是要返回的结果

匿名函数的使用场景: 函数逻辑比较简单(单行表达式)且只在一个地方使用时,可以考虑使用匿名函数,简化书写(通常作为高阶函数的参数使用),如下所示:

小结:

相关推荐
你有哈莫吗1 小时前
CMake构建学习笔记-iconv库的构建
笔记·学习
小弥儿3 小时前
GitHub今日热榜 | 2026-08-01:硬件安全工具与AI教育并行
人工智能·学习·开源·github
秋雨梧桐叶落莳3 小时前
计算器仿写总结
学习·macos·ios·objective-c·cocoa
统计学小王子4 小时前
《数学少年-从正负号到几何原本》(第一章:“刻度之上,零为分界“)--1.2 电梯与账单里的相反数字
学习·初中数学·初中数学科普·数学科普
流云鹤4 小时前
03Java学习day(3)
java·学习
我命由我123455 小时前
棘轮效应极简理解
经验分享·学习·职场和发展·产品运营·求职招聘·职场发展·学习方法
tt5555555555555 小时前
电工证学习笔记(二)
笔记·学习·电力
wc885 小时前
微软EDGE浏览器功能学习
前端·学习·edge
hPw0eKIqD5 小时前
一步一步学习使用FireMonkey动画() 使用动画组件为窗体添加动态效果
学习