python 参数 —— 位置参数、关键字参数、二者混用、形参默认值

1、位置参数

函数调用时,根据函数定义的参数(形参)的 位置 来传递参数。第1个实参赋值给第1个形参,第1个实参赋值给第2个形参 。

def mul(a,b,c):
    print(a*b*c)
    
def welcome(username):
    print('欢迎',username,'光临')    
    
# 调用时,根参数的位置传递参数
mul(1,2,3)
welcome('郭靖')

运行结果:

6
欢迎 郭靖 光临

2、关键字参数

函数调用时,通过 键-值 方式为函数形参传值,不用按照位置的顺序为函数形参传值。

def fn (a ,b,c):
    print('a =',a)
    print('b =',b)
    print('c =',c)

# 调用时,使用 键-值 方法为函数指定每个形参的参数 
fn( b=2 , c=3 , a=1)

运行结果:

a = 1
b = 2
c = 3

3、给形参指定默认值

指定了默认值以后,如果用户传递了参数,则默认值没有任何作用;如果用户没有传递,则默认值就会生效。

def fn (a = 1 ,b = 2 ,c = 3):
    print('a =',a,',b =',b,',c =',c)
fn( 2 , 4 , 6)   # a = 2 ,b = 4 ,c = 6

fn(2) # a = 2 ,b = 2 ,c = 3

4、 位置参数和关键字参数混用

1)混合使用时,必须将 位置参数 写到前面,关键字参数 不用按照顺序来指定。

def fn(a = 1 ,b = 2 ,c = 3):
    print('a =',a)
    print('b =',b)
    print('c =',c)

调用方式:

fn(1,2,c=3)

fn(1,c=3,b=2)  # 位置参数的值在前面,关键字参数的值在后面

2)混用使用时,每个参数只能接收一个值,不可重复。

fn(1,a=3)   # 参数 a 接收到两个值,所以报错:multiple values for argument 'a'

在这里插入图片描述

5、函数形参的重新赋值

示例1:(修改变量)
在函数中对形参进行重新赋值,不会影响其他的变量。(修改变量)

def fn(a) :
    a=20
    print('a =',a)

c = 10
fn(c)
print('c =',c)

运行结果:

a = 20
c = 10

示例2:(修改对象)

a是一个列表,尝试修改列表中的元素,
如果形参执行的是一个对象,当我们通过形参去修改对象时,
会影响到所有指向该对象的变量。

def fn(a) :
    a[0]=50
    print('a =',a)

c = [10,20,30]
fn(c)
print('c =',c)

运行结果:

a = [50, 20, 30]
c = [50, 20, 30]

说明,
修改列表 c 中的数据,则函数内 和 函数外 对c的引用都同时改变。

参数是可变对象

示例3:
当参数是可变对象, 为了防止函数内对形参的对象进行修改,在调 用时,传入对象的复本,或对象的切片。

def fn(a) :
    a[0]=50
    print('a =',a)

c = [10,20,30]

fn(c.copy())    # 复本
fn(c[:])        # 切片

print('c =',c)   

运行结果:

a = [50, 20, 30]       # 函数内,形参值发生变化
a = [50, 20, 30]
c = [10, 20, 30]       # 函数外,形参值未发生变化
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值