Python入门第十天-函数进阶

day10-函数进阶

一、函数的参数

1、位置参数和关键字参数

实参按照传递方式的不同分为位置参数和关键字参数

(1)位置参数
  • 调用函数时让形参和实参一一对应(第一个实参给第一个形参赋值,第二个实参给第二个形参赋值)
  • 格式:数据1,数据2,数据3,…
(2)关键字参数
  • 让实参和形参通过关键字(形参名)对应
  • 格式:形参名1 = 数据1(实参),形参名2 = 数据2,…
(3)关键字参数和位置参数混用
  • 混用时位置参数必须在关键字参数前面
def func1(x, y, z):
    print(f'x:{x}, y:{y}, z:{z}')

# 关键字参数
func1(10, 20, 30)    # x:10, y:20, z:30
func1(10, 30, 20)    # x:10, y:30, z:20
# 关键字参数(位置不影响调用结果)顺序是没有关系的
func1(x=100, y=200, z=300)    # x:100, y:200, z:300

# 混用
func1(10, z=30, y=20)    # x:10, y:20, z:30
# func1(x=20, 40, z=40)    # 报错:SyntaxError: positional argument follows keyword argument
# 原因:位置参数必须在关键字参数前面

2.参数默认值

定义函数的时候可以以“形参名 = 数据”的形式给参数赋默认值,调用函数的时候有默认值的参数可以不赋值

  • 可以给每个形参都赋个默认值
  • 当参数有了默认值之后,可以给他附一个新的值也可以不给他赋值
  • 如果有的有默认值,有的没有默认值,有默认值的形参必须放在最后,放在没有默认值的参数后面
  • 如果想跳过前面的参数,直接给后面的参数赋值,就可以使用默认值参数和关键字参数
def func2(x, y, z):
    print(f'x:{x}, y:{y}, z:{z}')
# 参数默认值
def func3(x, y, z=100):   # 可以给z赋值,也可以不给他赋值
    print(f'x:{x}, y:{y}, z:{z}')

func3(10, 20, 3)   # x:10, y:20, z:3
func3(10, 20)      # x:10, y:20, z:100
#
# def func4(x, y= 30, z):
#     print(f'x:{x}, y:{y}, z:{z}')
# 报错:SyntaxError: non-default argument follows default argument

def func4(x=10, y=100, z=30):
    print(f'x:{x}, y:{y}, z:{z}')
# 如果只想让y的值有变化,a和z的值依旧是10和30
func4(y=200)   # x:10, y:200, z:30

3.参数类型说明

  • 定义函数时可以对参数类型进行说明
  • 赋默认值,默认值是什么类型,参数类型说明就是什么类型
  • 形参名:数据类型
# 赋默认值
def func5(x=''):
    pass
# 形参名:数据类型
def func6(x: list):
    x.append()

4.不定长参数 - 主要用于参数个数不确定时

  • 在形参前加*或者加**,就可以让这个参数变成不定长参数,不定长参数的形参可以同时接受多个实参
(1)带*的不定长参数
  • 带*的参数会变成一个元组,元组中的元素就是对应的实参
  • 注意:a.一个函数可以同时存在带*和不带的参数,如果不带的在带星号的后面,不带的参数必须使用关键字参数;b.在调用不定长参数时,即使用带星号的参数时只能用位置参数传参
  • 带**的不定长参数后面必须使用关键字参数
(2)带**的不定长参数
  • 带**的不定长参数会变成一个字典,调用的时候用关键字参数传参,每个关键字及时字典的key,关键字后面的数据就是字典的value
  • 不带双星号的定长参数必须放在带**不定长参数的前面,否则会报错
  • 带*的不定长参数和带**的不定长参数可以同时出现,带一个星号的不定长参数必须在前面
  • 两个同时出现可以使函数调用时更加灵活
def 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值