Python函数传参位置关系总结

本文总结了Python函数参数传递的规则:默认参数需置于左侧,不定长参数中,*args在前,**kwargs在后。优先级为:普通参数>默认参数>可变长度参数>变量关键字参数。

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

一般传参的函数

def print_Info(name,age):
    print('Name: %s' % name)
    print('Age: %s'%age)

print_Info("ljj",15)
带有默认值的传参函数,有默认值的放在后面

def print_Info(name,age=15):
    print('Name: %s' % name)
    print('Age: %s'%age)

print_Info("ljj",15)
数量可变参数

def add(*a):
    i=0
    for temp in a:
       i+=temp
    print(i)
add(1,2,3,4,5,6,7,8,9,10)
*a是以元组的形式展示的

变量名和变量值可变的函数参数

def print_info(name,age,sex,**kwargs):
    print('Name: %s' % name)
    print('Age: %s' % age)
    print('Sex: %s' % sex)
    for i in kwargs:
        print('%s:%s'%(i,kwargs[i]))
print_info('ljj',18,'female',job='IT',hobby='girls',height=188)
**kwargs以字典的形式展示的

可变长度的和变量名和变量值可变的函数参数组合函数

def f(*args,**kwargs):
    for temp in args:
        print(temp)
    for i in kwargs:
        print('%s:%s' % (i, kwargs[i]))

f(1,2,3,4,5,'1212',[1,2,5],name='alvin',age=23)
各种参数形式的组合

def func(name,age=22,*args,**kwargs):
    print('Name: %s' % name)
    print('Age: %s' % age)
    for temp in args:
        print(temp)
    for i in kwargs:
        print('%s:%s' % (i, kwargs[i]))
func('lj',21,3,4,5,'1212',[1,2,5],name1='alvin',age1=23)

总结

1,如果有默认参数,放在左边,默认参数

2,关于不定长参数的位置:*args放在左边,**kwargs放在右边

优先级顺序为:一般函数参数>有默认值的函数参数>可变长度的函数参数>变量值可变的函数参数

### 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、付费专栏及课程。

余额充值