python函数传参的四种方式及四种形参定义方式

本文深入讲解了Python函数的参数类型,包括位置参数、序列参数、关键字参数和字典关键字参数的使用方法,以及如何定义缺省参数。同时,介绍了四种形参定义方式,即位置形参、星号元组形参、命名关键字形参和双星号字典形参,探讨了它们的语法和应用场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

位置传参

序列传参

关键字传参

字典关键字传参

1、位置传参

定义函数时的形参与调用函数时的实参按照位置一一对应

例子:

def fun1(a,b,c):
    print(a,b,c)
fun1(1,2,3)

输出结果:1 2 3

 

2、序列传参

调用函数时用*号将序列拆解开,再通过位置传参一一对应

例子:

def fun2(a,b,c):
    print(a,b,c)
l=[1,2,3]
t=(4,5,6)

fun2(*l)
fun2(*t)

输出结果:

E:\install\python3.7.3\python.exe F:/pycharm_workspace/day01/canshu.py
1 2 3
4 5 6

Process finished with exit code 0

3、关键字传参

是指在调用函数时,给形参赋值作为实参

例子:

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

输出结果:1 2 3

4、字典关键字传参

实参为字典,用**符号将字典拆解,再通过关键字传参

例子:

def fun4(a,b,c):
    print(a,b,c)

d={'a':1,'b':2,'c':3}
fun4(**d)

输出:1 2 3

综合传参:

函数的传参方式在能确定实参和形参一一对应的情况下,可以任意组合

注:综合传参和序列传参先传递,然后是关键字传参,字典关键字传参

缺省参数

语法:

def 函数名(形参名1=值1,形参名2=值2,形参名3=值3):

          函数内容

例子:

def fun1(a=10,b=53,c=86):
    print(a,b,c)

fun1(20)

输出:20 53 86

 

四种形参定义方式

1、位置形参

2、星号元组形参

3、命名关键字形参

4、双星号字典形参

 

1、位置形参

语法:

def 函数名(形参1,形参2.。。)

       语句块

2、星号元组传参

语法:

def 函数名(*元组形参名):

           语句块

作用:收集多余的位置传参

例子:

def fun1(*args):
    print(args)

fun1(10,20,30,40)
fun1(*[1,2,3,4,5])

输出结果:

E:\install\python3.7.3\python.exe F:/pycharm_workspace/day01/quesheng.py
(10, 20, 30, 40)
(1, 2, 3, 4, 5)

Process finished with exit code 0

3、命名关键字形参

在调用函数时,调用者实参必须是关键字传参或者字典关键字传参

因为命名关键字跟在*号元组传参后面,*号传参是不定数量的参数,所以后面的参数如果不指定,无法确定参数到底是传给谁

语法:

def fun(*args,a,b):

          语句块

例子:

def fun1(a,b,*args,c):
    print(a,b,args,c)
l=[60,70]
fun1(10,20,*l,c=30)

输出结果:

E:\install\python3.7.3\python.exe F:/pycharm_workspace/day01/quesheng.py
10 20 (60, 70) 30

Process finished with exit code 0

4、双*号字典形参---------》收集多余的关键字参数

语法:

def fun(**kwagrs):

              语句块

例子:

def fun1(**kwargs):
    print(kwargs)

d={'name':'shangsan','age':18}
fun1(**d)

输出结果:

E:\install\python3.7.3\python.exe F:/pycharm_workspace/day01/quesheng.py
{'name': 'shangsan', 'age': 18}

Process finished with exit code 0

函数参数说明

位置形参、星号元组形参、命名关键字形参、字典关键字形参可以混合使用,顺序如下:

1、位置形参

2、星号元组形参

3、命名关键字形参

4、字典关键字形参

 

 

 

              

 

 

### Python 函数参数传递方式与规则 #### 值传递引用传递的区别Python中,当函数被调用时,实参会按照特定的规则传递给形参。对于不可变类型的变量(如整型、字符串等),采用的是值传递;而对于可变类型的变量(列表、字典等),则是引用传递[^1]。 - **值传递**:如果传入的是一个不可变对象,则该对象的一个副本会被创建并赋值给对应的形参,在函数内部对该形参的操作不会影响到原始的对象。 - **引用传递**:如果是可变对象的话,那么实际上传递的就是这个对象本身而不是它的拷贝,因此任何修改都会反映回原对象上。 #### 参数匹配原则 为了使程序更加灵活方便,Python支持多种不同的参数定义方法: - 定位参数:这是最基础也是最常见的形式,它要求调用者按位置依次给出相应数量的实际参数,并且这些参数的数量要严格等于声明时所指定的形式参数数目以及它们之间的相对次序保持一致[^4]。 ```python def greet(name, message): print(f"Hello {name}, {message}") greet("Alice", "how are you?") ``` - 关键字参数:允许使用者通过关键字来指明具体哪个形式参数应该接收哪一个实际参数,这样即使改变输入项的位置也不会造成混乱。 ```python def describe_pet(animal_type='dog', pet_name=''): print(f"I have a {animal_type} named {pet_name}") describe_pet(pet_name="Buddy") # 使用关键字参数 ``` - 可变长度参数:利用`*args`可以接受不定量的位置参数集合成为一个元组供后续处理;而`**kwargs`则用来收集额外的关键字参数形成字典结构[^5]。 ```python def make_pizza(*toppings): """打印顾客点的所有配料""" print("\nMaking pizza with the following toppings:") for topping in toppings: print("- " + topping) make_pizza('pepperoni') make_pizza('mushrooms', 'green peppers', 'extra cheese') def build_profile(first, last, **user_info): profile = {} profile['first name'] = first profile['last name'] = last for key, value in user_info.items(): profile[key] = value return profile user_profile = build_profile('albert', 'einstein', location='princeton', field='physics') print(user_profile) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值