Python进阶教程之函数参数的多种传递方法攻略
Python中的函数参数传递方式有多种,下面将对这些传递方式进行详细讲解。
1. 位置参数传递
位置参数是最常见的一种参数传递方式,当我们调用函数时,传递的实参会按顺序一一对应函数定义时的形参,如下所示:
def print_info(name, age, gender):
print("Name:", name)
print("Age:", age)
print("Gender:", gender)
print_info("John", 25, "male")
以上代码的输出结果为:
Name: John
Age: 25
Gender: male
这里,我们指定了三个形参 name
、 age
和 gender
,并在调用函数时传入了三个实参 "John"
、 25
和 "male"
,这些实参按照传入的顺序依次赋值给对应的形参。
2. 关键字参数传递
关键字参数是指在函数调用时,通过指定形参名称来传递实参值。在使用关键字参数时,我们不需要考虑形参的顺序,只需要指定对应的形参名称即可。以下代码演示了如何使用关键字参数:
def print_info(name, age, gender):
print("Name:", name)
print("Age:", age)
print("Gender:", gender)
print_info(name="John", age=25, gender="male")
以上代码的输出结果与上例相同。这里,我们使用了关键字参数来指定每个形参所对应的实参值。
3. 默认参数传递
默认参数是指在函数定义时为某些形参指定默认值,在函数调用时如果不传递该形参,则使用其默认值。以下代码演示了如何使用默认参数:
def print_info(name, age, gender="male"):
print("Name:", name)
print("Age:", age)
print("Gender:", gender)
print_info("John", 25)
以上代码的输出结果为:
Name: John
Age: 25
Gender: male
我们可以看到,上述代码中的 gender
形参指定了默认值 "male"
,在函数调用时我们只传递了 name
和 age
两个实参,但是输出结果中也打印了 "male"
,这是因为我们没有为 gender
形参传递实参,此时 Python 会使用其默认值。
4. 可变参数传递
可变参数是指在函数定义时使用 *args
和 **kwargs
分别接收不定数量的位置参数和关键字参数。以下代码演示了如何使用可变参数:
def add_nums(*args):
result = 0
for num in args:
result += num
return result
total = add_nums(1, 2, 3, 4, 5)
print(total)
以上代码的输出结果为:
15
这里,我们在函数定义时使用了 *args
,表示可以接收任意数量的位置参数。在函数调用时,我们使用了 1, 2, 3, 4, 5
这几个实参传递给 add_nums
函数,这些实参都被收集到了 args
参数元组中。
类似地,我们也可以使用 **kwargs
可变参数来接收任意数量的关键字参数。以下代码演示了如何使用 **kwargs
:
def print_info(**kwargs):
for key, value in kwargs.items():
print(key, ":", value)
print_info(name="John", age=25, gender="male")
以上代码的输出结果为:
name : John
age : 25
gender : male
示例1
下面是一个函数接收位置参数和默认参数的示例:
def bmi(height, weight, unit='metric'):
if unit == 'metric':
bmi = weight / (height ** 2)
else:
bmi = weight / (height ** 2) * 703
return bmi
print(bmi(1.75, 70)) # 使用默认参数计算BMI
print(bmi(68, 154, 'imperial')) # 使用自定义参数计算BMI
以上代码的输出结果为:
22.857142857142858
23.39641010447985
在以上示例中,我们定义了一个名为 bmi
的函数,该函数接收三个参数:身高、体重和单位(默认为 metric
)。当我们不传递单位参数时,函数会使用默认值进行计算;当我们调用函数时自定义了单位参数时,则使用该参数进行计算。
示例2
下面是一个函数接收可变参数和关键字参数的示例:
def generate_string(*args, separator=' '):
return separator.join(args)
print(generate_string('hello', 'world')) # 使用默认分隔符连接字符串
print(generate_string('hello', 'world', separator='')) # 使用空字符串连接字符串
以上代码的输出结果为:
hello world
helloworld
在以上示例中,我们定义了一个名为 generate_string
的函数,该函数接收任意数量的位置参数,并且还有一个可选的关键字参数 separator
,表示使用什么分隔符将位置参数连接为字符串。当我们不传递 separator
参数时,函数会使用默认的空格符号;当我们传递 separator
参数时,则使用该参数指定的分隔符进行连接。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:python进阶教程之函数参数的多种传递方法 - Python技术站