python自定义函数教程

  • Post category:Python

下面是关于python自定义函数的详细解释。

概述

函数是一种可重复使用的代码块,可以接受输入并返回输出,以达到封装代码的目的,提高代码重用性和可读性。Python中,函数是一等公民,可以像变量一样处理和使用。

定义函数

Python使用def语句来定义函数,并按照一定的规则传递和返回参数。通常的函数定义语法如下:

def function_name(parameters):
    """docstring"""
    statement(s)
  • function_name: 函数的名称,用于调用该函数。
  • parameters: 参数列表,函数的输入值。
  • docstring: 描述函数的文本,包含在三重引号内。
  • statement(s): 函数的主体,包含一组操作、算法等代码块,常常通过return语句返回输出值。

例如,这是一个简单的函数,将两个数值相加并返回结果:

def add_numbers(a, b):
    """Return the sum of two numbers."""
    return a + b

在本例中,函数名称为add_numbers,它有两个输入参数,如a和b所示,用于计算结果,并通过return语句返回结果。习惯上,函数名称采用小写字母、单词间用下划线分割的方式。

调用函数

我们可以通过函数名称和参数来调用函数。例如,假设我们定义了一个add_numbers()函数,那么可以使用以下语法来调用该函数:

result = add_numbers(5, 10)
print(result)

上述代码会将数字5与10相加,并将结果赋给变量result。接着,我们通过print语句将result输出到屏幕上。

参数类型

Python支持传递不同类型的参数,包括以下常见的类型:

  • 必需参数: 该类参数在函数调用时必须提供,并按照参数位置进行匹配。如果不提供,将引发TypeError异常。
def multiply(a, b):
    """Return the product of two numbers."""
    return a * b

result = multiply(3, 4)
print(result)

在本例中,multiply()函数接受两个必需参数,使用参数a和b来计算两个数相乘的结果。当我们调用该函数并传递参数3和4时,multiply()函数将返回12。

  • 关键字参数: 在函数调用时,可以使用关键字指定参数的名称和值,而不必按照参数位置进行匹配。这些参数称为“关键字参数”。
def divide(dividend, divisor):
    """Divide the first number by the second."""
    return dividend / divisor

result = divide(dividend=9, divisor=3)
print(result)

在本例中,divide()函数接受两个关键字参数dividend和divisor,用于计算dividend除以divisor的结果。当我们调用该函数并使用关键字参数9和3时,divide()函数将返回3。

  • 默认参数: 如果在函数定义时指定了参数的默认值,则在函数调用时该参数可以省略。这些参数称为“默认参数”。
def say_hello(name, greeting='Hello'):
    """Print a greeting to the given name."""
    print('%s, %s!' % (greeting, name))

say_hello('John')
say_hello('Mary', 'Hi')

在本例中,say_hello()函数接受两个参数,其中greeting具有默认值“Hello”。当我们调用该函数并提供唯一的参数“John”时,say_hello()函数将打印出“Hello, John!”。而当我们调用该函数并使用两个参数“Mary”和“Hi”时,say_hello()函数将打印出“Hi, Mary!”。

  • 可变参数: 如果不知道函数需要多少个参数,或者希望将多个参数打包为一个元组进行处理,则需要使用可变参数。在函数定义时,可以在参数前加上*,表示该参数可以接受任意数量的参数。可变参数将被转换成一个元组。
def show_items(*items):
    """Print each passed item on a separate line."""
    for item in items:
        print(item)

show_items(1, 2, 3)
show_items('apple', 'banana', 'cherry')

在本例中,show_items()函数接受一个可变参数*items,它将由所有传递给函数的参数构成。在函数体中,使用for循环在新行上打印每个传递的参数。当我们分别调用该函数并传递整数1、2和3,或单词“apple”、“banana”和“cherry”时,函数将打印每个参数,并将它们分别显示在新行上。

  • 关键字可变参数: 关键字可变参数类似于可变参数,但不同之处在于它们接收一个字典,而不是一个元组。在函数定义时,可以在参数前加上**,表示该参数可以接受任意数量、任意名称的关键字数据。关键字参数将被转换成一个字典。
def show_info(name, **info_items):
    """Print the received information about the named subject."""
    print('Name: %s' % name)
    for key, value in info_items.items():
        print('%s: %s' % (key, value))

show_info('John', age=30, city='Boston', state='MA')
show_info('Mary', phone='555-1212', email='mary@example.com')

在本例中,show_info()函数接受一个必需参数name,后面跟着任意数量的关键字参数**info_items。在函数体中,它首先打印出名字,然后使用for循环在新行上打印出所有关键字的名称和值。我们可以通过传递带有名称/值对的参数来调用该函数。

示例代码

下面是两个简单的函数示例,它们分别使用必需参数和默认参数,分别用于将数字取平方和输出问候语。

def square(number):
    """Return the square of a number."""
    return number ** 2

result = square(5)
print(result)

def say_hello(name, greeting='Hello'):
    """Print a greeting to the given name."""
    print('%s, %s!' % (greeting, name))

say_hello('John')
say_hello('Mary', greeting='Hi')

在本例中,square()函数使用必需参数,它接受一个数字并返回其平方。当我们调用该函数并传递数字5时,square()函数将返回25。

而say_hello()函数使用默认参数,它接受一个必需的参数name和一个可选的参数greeting,打印出问候语并使用格式化字符串将它们组合起来。当我们分别调用该函数并传递唯一的参数“John”,或使用参数“Mary”和“Hi”时,say_hello()函数将打印出相应的问候语。

希望本教程能够帮助您掌握Python自定义函数的基本概念和应用技巧。如果您需要进一步学习,建议查阅更多的Python函数库函数和教程,以便更好地了解Python编程的各种应用场景。