python函数传递参数的几种方法整理

本文整理了Python中函数参数的多种传递方式,包括位置实参、关键字实参、默认值、可选实参、任意数量的实参(*args和**kw)。通过示例详细解释了如何使用这些参数类型,帮助读者深入理解Python函数的参数机制。
部署运行你感兴趣的模型镜像

形参:函数定义使用的参数
实参:函数调用使用的参数

1、位置实参:参数的先后顺序很重要

def func(first, last):
    print("fisrt: " + first, ",last: " + last + "\n")


func('a', 'b')
func('b', 'a')
fisrt: a ,last: b

fisrt: b ,last: a

2、关键字实参:在传参数的时候,将实参指定给形参,和参数顺序无关

def func(first, last):
    print("fisrt: " + first, ",last: " + last + "\n")


func(last = 'a', first = 'b')
func(first = 'b', last = 'a')
fisrt: b ,last: a

fisrt: b ,last: a

默认值:
在编写函数的时候,可以给形参指定一个默认值,当这个函数被调用时没用传递该形参,那么这个形参的值就是默认值。

def func(first, last='c'):
    print("fisrt: " + first, ",last: " + last + "\n")


func(first = 'b')
func('b')
func('a', 'b')
func(first = 'b', last = 'a')
fisrt: b ,last: c
fisrt: b ,last: c
fisrt: a ,last: b
fisrt: b ,last: a

3、传递可选的实参:将可选的那个形参放到参数最后并赋值为空字符串

def get_name(first_name, last_name, middle_name=''):
    if middle_name:
        full_name = first_name+" "+middle_name+" "+last_name
    else:
        full_name = first_name+" "+last_name
    return full_name.title()

name1 = get_name('wang', 'xiao', 'ming')
name2 = get_name('wang', 'ming')

print(name1 + '\n' + name2)
Wang Ming Xiao
Wang Ming

4、传递任意数量的实参

def func(*args):
    print(args)

func('a')
func('b')
func(1)
func('a', 'b')
func('a', 'b', 'c')
func('a', 'b', 'c', 'd')
('a',)
('b',)
(1,)
('a', 'b')
('a', 'b', 'c')
('a', 'b', 'c', 'd')

其中 *args 让python创建一个名为args的空元组,并将接受到的所有实参都放到这个元组中

5、位置实参&&任意数量实参

如果让函数接受不同类型的实参,必须在 函数定义中将接纳任意数量实参的形参放在最后
python先匹配位置实参和关键字实参,然后把其余参数放到最后一个形参里

def message(age, *other):
    print("age: "+str(age))
    for i in other:
        print(i)

message(18, 'c cup')
message(100)
message(20, 'red', 'blue', 'white')
age: 18
c cup
#
age: 100
#
age: 20
red
blue
white

6、关键字实参&&任意数量
当需要接受任意数量的实参,但是预先不知道传递给函数的是什么信息
接受带有参数名的参数,组成一个字典

def person(name, age, **kw):
    print('name: '+name, 'age: '+str(age), 'kw: '+str(kw))


person('Monica', 18)
person('Monica', 19, city='BeiJing')
person('Monica', 20, city='BeiJing', job='Teacher')

name: Monica age: 18 kw: {}
name: Monica age: 19 kw: {'city': 'BeiJing'}
name: Monica age: 20 kw: {'city': 'BeiJing', 'job': 'Teacher'}

**形参 kw 中的两个 * 让python创建一个名为kw的空字典,并将所有的键值对都封装到这个字典当中。

7、组合使用

def person(name, age, height=170, *args, **kw):
    print('name: '+name, 'age: '+str(age), 'args: '+str(args), 'kw: '+str(kw))


person('Monica', 15)
person('Monica', 16, 180)
person('Monica', 17, 'a', 'b')
person('Monica', 18, city='BeiJing')
person('Monica', height=160, age=19)
person('Monica', 20, 'a', 'b', 'c', city='BeiJing', job='Teacher')
name: Monica age: 15 args: () kw: {}
name: Monica age: 16 args: () kw: {}
name: Monica age: 17 args: ('b',) kw: {}
name: Monica age: 18 args: () kw: {'city': 'BeiJing'}
name: Monica age: 19 args: () kw: {}
name: Monica age: 20 args: ('b', 'c') kw: {'city': 'BeiJing', 'job': 'Teacher'}

您可能感兴趣的与本文相关的镜像

AutoGPT

AutoGPT

AI应用

AutoGPT于2023年3月30日由游戏公司Significant Gravitas Ltd.的创始人Toran Bruce Richards发布,AutoGPT是一个AI agent(智能体),也是开源的应用程序,结合了GPT-4和GPT-3.5技术,给定自然语言的目标,它将尝试通过将其分解成子任务,并在自动循环中使用互联网和其他工具来实现这一目标

Python中,函数参数有两种基本的传递方式: 1. **位置参数**(Positional Arguments):这是最常见的传参方式,按照函数定义时参数的顺序直接传递值。例如: ```python def greet(name): print(f"Hello, {name}!") greet("Alice") # Alice会被作为name参数接收 ``` 2. **关键字参数**(Keyword Arguments):允许你在调用函数时指定参数名,这使得你可以按任意顺序传递参数,并且可以在定义函数时添加新的参数而不会影响已有的调用。例如: ```python def greet_again(greeting, name): print(f"{greeting}, {name}!") greet_again(greeting="Hola", name="Bob") # "Hola" 和 "Bob" 分别对应于 greeting 和 name 参数 ``` 3. **默认参数**(Default Arguments):如果函数定义中某些参数有默认值,那么如果没有提供值,就使用这些默认值。当需要保持函数行为的一致性时很有用。 ```python def calculate(base, exponent=2): # exponent 为默认参数 return base ** exponent result = calculate(5) # 默认 exponent 是 2 ``` 4. **可变数量参数**(*args 和 **kwargs):允许函数接受任意数量的位置参数(*args)或关键字参数(**kwargs)。这些在处理不确定数量的输入时非常有用。 - *args 用于收集所有位置参数到一个元组中: ```python def sum_all(*numbers): return sum(numbers) ``` - **kwargs 用于收集所有关键字参数到一个字典中: ```python def print_info(**kwargs): for key, value in kwargs.items(): print(f"{key}: {value}") ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值