网站seo基本流程,网站开发建设的步骤,网站栏目功能分析,网站开发项目延期说明目录 #x1f354; 函数的参数进阶
1、函数的参数
2、函数的参数类型(调用)
2.1 位置参数
2.2 关键词参数#xff08;Python特有#xff09;
3、函数定义时缺省参数#xff08;参数默认值#xff09;
4、不定长参数
4.1 不定长元组#xff08;位置#xff09;参数…
目录 函数的参数进阶
1、函数的参数
2、函数的参数类型(调用)
2.1 位置参数
2.2 关键词参数Python特有
3、函数定义时缺省参数参数默认值
4、不定长参数
4.1 不定长元组位置参数
4.2 不定长字典关键字参数 Python拆包元组和字典
1、什么是拆包
2、元组的拆包过程
3、字典的拆包过程
4、拆包的应用案例 使用Python函数编写通讯录系统
1、查看通讯录系统最终效果
2、需求分析
3、功能实现步骤
4、模块化的编程思想面向过程
5、使用Python开发通讯录管理系统 函数的参数进阶
def func(参数1, 参数2, 参数3):
...
func(10, 20, 30)
1、函数的参数
在函数定义与调用时我们可以根据自己的需求来实现参数的传递。在Python中函数的参数一共有两种形式① 形参 ② 实参
形参在函数定义时所编写的参数就称之为形式参数
实参在函数调用时所传递的参数就称之为实际参数
def greet(name): # name就是在函数greet定义时所编写的参数形参return name 您好
# 调用函数
name 老王
greet(name) # 在函数调用时所传递的参数就是实际参数 注意虽然我们在函数传递时喜欢使用相同的名称作为参数名称。但是两者的作用范围是不同的。name 老王代表实参。其是一个全局变量而greet(name)函数中的name实际是在函数定义时才声明的变量所以其实一个局部变量。 2、函数的参数类型(调用)
2.1 位置参数
论上在函数定义时我们可以为其定义多个参数。但是在函数调用时我们也应该传递多个参数正常情况其要一一对应。
def user_info(name, age, address):print(f我的名字{name}今年{age}岁了家里住在{address})# 调用函数
user_info(Tom, 23, 美国纽约) 注意事项位置参数强调的是参数传递的位置必须一一对应不能颠倒 2.2 关键词参数Python特有
函数调用通过“键值”形式加以指定。可以让函数更加清晰、容易使用同时也清除了参数的顺序需求。
def user_info(name, age, address):print(f我的名字{name}今年{age}岁了家里住在{address})# 调用函数使用关键词参数
user_info(nameTom, age23, address美国纽约)
3、函数定义时缺省参数参数默认值
缺省参数也叫默认参数用于定义函数为参数提供默认值调用函数时可不传该默认参数的值注意所有位置参数必须出现在默认参数前包括函数定义和调用。
def user_info(name, age, gender男):print(f我的名字{name}今年{age}岁了我的性别为{gender})
user_info(李林, 25)
user_info(振华, 28)
user_info(婉儿, 18, 女) 谨记我们在定义缺省参数时一定要把其写在参数列表的最后侧 4、不定长参数
不定长参数也叫可变参数。用于不确定调用的时候会传递多少个参数(不传参也可以)的场景。此时可用包裹(packing)位置参数或者包裹关键字参数来进行参数传递会显得非常方便。
4.1 不定长元组位置参数
def user_info(*args):# print(args) # 元组类型数据对传递参数有顺序要求print(f我的名字{args[0]}今年{args[1]}岁了住在{args[2]})
# 调用函数传递参数
user_info(Tom, 23, 美国纽约)
4.2 不定长字典关键字参数
def user_info(**kwargs):# print(kwargs) # 字典类型数据对传递参数没有顺序要求格式要求key value值print(f我的名字{kwargs[name]}今年{kwargs[age]}岁了住在{kwargs[address]})
# 调用函数传递参数
user_info(nameTom, address美国纽约, age23) kw keyword args 综上无论是包裹位置传递还是包裹关键字传递都是一个组包的过程。
Python组包就是把多个数据组成元组或者字典的过程。
案例Python中数据的传递案例
def func(*args, **kwargs):print(args)print(kwargs)
# 定义一个元组也可以是列表
tuple1 (10, 20, 30)
# 定义一个字典
dict1 {first: 40, second: 50, third: 60}
# 需求把元组传递给*args参数字典传递给**kwargs
# ① 如果想把元组传递给*args必须在tuple1的前面加一个*号
# ② 如果想把字典传递给**kwargs必须在dict1的前面加两个**号
func(*tuple1, **dict1) Python拆包元组和字典
1、什么是拆包
Python拆包就是把元组或字典中的数据单独的拆分出来然后赋予给其他的变量。
拆包: 对于函数中的多个返回数据, 去掉元组, 列表 或者字典直接获取里面数据的过程。
2、元组的拆包过程
def func():# 经过一系列操作返回一个元组return 100, 200 # tuple元组类型的数据
# 定义两个变量接收元组中的每个数组拆包
num1, num2 func()
# 打印num1和num2
print(num1)
print(num2)
3、字典的拆包过程
记住字典拆包只能把每个元素的key拆出来
dict1 {name:小明, age:18}
# 拆包的过程字典
a, b dict1
print(a)
print(b)
# 获取字典中的数据
print(dict1[a])
print(dict1[b])
4、拆包的应用案例
案例1使用至少3种方式交换两个变量的值
c1 10
c2 2
经过一系列的相关操作
c1 2
c2 10
第一种方式引入一个临时变量
c1 10
c2 2
# 引入临时变量temp
temp c2
c2 c1
c1 temp
print(c1, c2) 第二种方式使用加法与减法运算交换两个变量的值不需要引入临时变量
c1 10
c2 2
c1 c1 c2
c2 c1 - c2
c1 c1 - c2
print(c1, c2) 第三种方法只有Python才具有的特性叫做拆包
c1 10
c2 2
c1, c2 c2, c1
原理
第一步把c2和c1组成一个元组c2c1
第二步使用拆包特性把元组中的两个元素分别赋值给c1和c2 使用Python函数编写通讯录系统
1、查看通讯录系统最终效果 2、需求分析
需求进入系统显示系统功能界面功能如下
① 添加学员信息
② 删除学员信息
③ 修改学员信息
④ 查询学员信息(只查询某个学员)
⑤ 遍历所有学员信息
⑥ 退出系统
系统共6个功能用户根据自己需求选取
3、功能实现步骤
① 显示功能界面
② 用户输入功能序号
③ 根据用户输入的功能序号执行不同的功能(函数)
☆ 定义函数
☆ 调用函数
4、模块化的编程思想面向过程
模块化的编程思想是最早期的编程思想其强调把一个系统分解为若干个功能每个功能就是一个模块函数。当所有功能开发完毕后则系统就完成了。
5、使用Python开发通讯录管理系统
① 显示功能界面
② 提示用户输入要操作的功能编号
③ 根据用户输入的序号执行相关功能 if...elif...else
④ 如何让程序一直执行下去而不是选择某个功能后程序就退出了 while True
⑤ 根据用户输入的序号完成系统中的每一个功能
所有功能都有使用前提必须共享一套数据 info [{}, {}, {}]
# 定义一个全局变量结构[{}, {}, {}]
students []
# 封装一个menu函数用于打印功能菜单
def menu():print(- * 40)print(传智教育通讯录管理系统V1.0)print(1、添加学员信息)print(2、删除学员信息)print(3、修改学员信息)print(4、查询学员信息)print(5、遍历所有学员信息)print(6、退出系统)print(- * 40)
# 封装一个函数add_student()添加学员信息
def add_student():# 提示用户要输入学员的信息name、age、mobilename input(请输入学员的姓名)age input(请输入学员的年龄)mobile input(请输入学员的电话)
# 声明全局变量global students
student {}student[name] namestudent[age] agestudent[mobile] mobile
students.append(student)print(信息已添加成功)
# 封装一个del_student()函数删除学员信息
def del_student():# 提示用户输入要删除学员的姓名name input(请输入要删除学员的姓名)# 声明全局变量global studentsfor student in students:if student[name] name:# 找到了要删除的学员students.remove(student)print(信息已删除成功)breakelse:print(暂未查询到任何相关信息...)
# edit_student()函数修改学员信息
def edit_student():# 提示用户输入要修改学员的姓名name input(请输入要修改学员的姓名)# 声明全局变量global students
for student in students:if student[name] name:# 找到了要修改的学员信息student[age] int(input(请输入要修改学员的年龄))student[mobile] input(请输入要修改学员的电话)print(信息已更新成功)breakelse:print(暂未查询到任何相关信息...)
# 封装一个show_students()函数遍历所有学员信息
def show_students():# 声明全局变量global students
for student in students:print(student)
# 编写一个while死循环
while True:menu()
# 提示用户输入要操作的功能编号num int(input(请输入要操作的功能编号))
# 编写if多条件分支语句可以根据用户的输入执行相应的功能if num 1:# 添加学员信息add_student()elif num 2:# 删除学员信息del_student()elif num 3:# 修改学员信息edit_student()elif num 4:# 查询学员信息(作业)find_student()elif num 5:# 遍历所有学员信息show_students()elif num 6:# 5、退出系统print(感谢您使用传智教育通讯录V1.0系统欢迎下次继续使用)breakelse:print(您输入的信息有误请重新输入) 若能为您的学习之旅添一丝光亮不胜荣幸 期待您的宝贵意见让我们共同进步共同成长