Python-2.2 函数里位置参数与关键字参数

博客介绍了Python函数的参数类型。包括位置参数,其形参在定义阶段按顺序定义,实参调用时按顺序传值,必须传值;关键字参数,默认形参定义时已赋值,调用可不传,关键字实参按key=value传值,不按顺序。还提及位置形参与默认形参混用规则。

一、位置参数:按照从左到右的顺序依次定义的参数称之为位置参数

  1. 位置形参:在函数定义阶段,按照从左到右的顺序直接定义的‘变量名’
    特点:必须被传值,多一个不行少一个也不行

  2. 位置实参:在函数调用阶段, 按照从左到右的顺序依次传入的值
    在这里插入图片描述
    二、关键字参数

  3. 默认参数(默认形参):在定义函数阶段,就已经被赋值的形参,称之为默认参数
    特点:在定义阶段就已经被赋值,意味着在调用阶段可以不用为其赋值
    在这里插入图片描述

  4. 关键字实参:在函数调用阶段,按照key=value的形式传入的值
    特点:指名道姓给某个形参传值,可以完全不参照顺序
    在这里插入图片描述

三、位置形参与默认参数(默认形参)混用

  1. 位置形参必须在默认形参的左边
    在这里插入图片描述

  2. 默认参数的值是在函数定义阶段被赋值的,准确地说被赋予的是值的内存地址

示例1:

a = 7


def func(x, b=a):b=>7的内存地址
    print(x, b)


a = 8
func(1)

结果:

1 7

示例2:

a = [1, 3]


def func(x, y=a):   # y=>[1,]的内存地址
    print(x, y)


a.append(9)
func(2)

结果:

2 [1, 3, 9]
  1. 默认值可以被指定为任意数据类型,但是最好不要使用可变类型,函数最理想的状态:函数的调用只跟函数本身有关系,不受外界代码的影响
a = [1, 2, 3]


def func(x, y=a):
    print(x, y)


a.append(4)
a.append(5)
a.append(6)

func(11)
func(22)
func(33)
def func(x, y, z, l=None):
    if l is None:
        l = []
    l.append(x)
    l.append(y)
    l.append(z)
    print(l)


func(1, 2, 3)
func(11, 22, 33)
list_1 = [111, 222]
func(1, 2, 3, list_1)

结果:

[1, 2, 3]
[11, 22, 33]
[111, 222, 1, 2, 3]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值