详解Python函数中的几种参数

  • Post category:Python

当我们编写Python程序时,函数是非常常用的一种工具,同时也是Python语言最重要的组成部分之一。函数作为Python中的基本语言结构,在不同的场合中,我们会用到不同的函数参数类型。比如在Python的函数中会有默认参数、可变参数、关键字参数和命名关键字参数。

Python函数中的几种参数类型

默认参数

默认参数也被称为可选参数。默认参数指在函数声明过程中给参数设置了初始值。默认参数应该放在函数形参列表的尾部,并遵守先默认参数后非默认参数的原则。下面是一个计算平方值的函数,其中参数x的默认值为2:

def square(y, x=2):
  return y ** x

通过此函数定义,当我们向该函数传递一个数字时通过默认参数计算输入数字的平方值,但是当我们向该函数传递两个参数时,函数会通过第二个参数计算输入数字的n次方,n为x传递的参数值。下面是一个调用示例:

# 调用square函数,并向其传递一个数字参数
result = square(7)  # 返回值为49,7的平方值

# 调用square函数,并向其传递两个数字参数
result = square(7, 3)  # 返回值为343,7的3次方

可变参数

可变参数又称为不确定个数的参数。当我们使用的函数参数个数是不确定的时候,我们可以考虑使用可变参数。调用时,我们不需要将参数打包成元组或列表,而是由Python自动将输入的参数集合打包。使用可变参的方法是在参数名前加上星号(*)。

下面是一个输出多个数字的函数,其中参数numbers是可变参数:

def print_numbers(*numbers):
  for number in numbers:
    print(number)

# 调用print_numbers函数,向其中传递不同的数字
print_numbers(1,2,3)
print_numbers(4,5,6,7,8)

关键字参数

关键字参数允许我们以字典形式将参数传递给函数。通常当我们想传递多个具有默认值的参数时,使用关键字参数会相对简便。

下面是一个函数average,该函数中使用了关键字参数,其中参数min_num、max_num和time_step都具有默认值:

def average(numbers, min_num=0, max_num=10, time_step=1):
  step = time_step
  the_sum = 0
  count = 0
  for number in numbers:
    if min_num <= number <= max_num:
      the_sum += number
      count += 1
  return the_sum/count

# 调用该函数,并使用关键字参数向其中传递参数
numbers = [1,2,3,4,5,11,12,13,14,15] # 定义几个数字
result = average(numbers, min_num=3, max_num=12, time_step=2)
print(result) # 输出结果为3.5

命名关键字参数

命名关键字参数是一种新增的参数类型,通常用于限定指定函数的参数集合。该生成通常使用在函数需要一些可选参数,并且这些可选参数是具有默认值的参数的时候。

下面是一个函数,其中使用了命名关键字参数age:

def person_info(name, age, **kw):
  return 'name:', name, 'age:', age, 'extra:', kw

# 调用该函数,并使用关键字参数向其中传递参数
result = person_info('Tom', 25, city='Beijing', gender='male')
print(result) # 输出结果为name: Tom age: 25 extra:{'city': 'Beijing', 'gender': 'male'}

在这里,除了name和age这两个参数之外,我们还可以传递其他可选参数。注意在定义该函数的时候,参数列表中必须包含一个*,而且默认参数可存在于该列表中,但其后必须跟着一个命名关键字参数。

以上便是Python函数中几种常见的参数类型的说明。更多关于Python函数参数类型的资料,可以参考Python官方文档。