python怎样定义函数

  • Post category:Python

下面是 Python 如何定义函数的完整攻略。

定义函数的语法

Python 中定义函数的语法如下:

def function_name(parameters):
    """函数文档字符串"""
    # 函数体
    return [expression]

其中,def 关键字用于定义函数,后面跟着的是函数名,然后是括号和冒号,括号内是函数的参数列表,冒号后面是函数体。函数体中的代码块需要缩进,通常缩进使用四个空格。

可选的 return 语句用于返回函数的返回值,可以是任意数据类型的表达式。如果没有 return 语句或者没有指定返回值,函数会隐式地返回 None

函数参数

Python 中的函数参数可以有默认值,也可以使用可变参数或关键字参数。

默认参数

默认参数指的是在函数定义时指定的参数默认值,在调用函数时可以不传入这些参数。默认参数的定义方式是在参数名后面使用等号指定默认值,如下例:

def print_info(name, age=18):
    print(f"{name} is {age} years old")

print_info("Alice") # 输出 Alice is 18 years old
print_info("Bob", 20) # 输出 Bob is 20 years old

在这个例子中,我们定义了 print_info 函数,它有两个参数 nameage,其中 age 有默认值 18。在调用函数时,我们只传入了一个参数 name,此时 age 就使用了默认值 18

可变参数

可变参数是指传入函数的实参个数是不确定的,例如:

def sum(*numbers):
    result = 0
    for num in numbers:
        result += num
    return result

print(sum(1, 2, 3)) # 输出 6
print(sum(1, 2, 3, 4, 5)) # 输出 15

我们在参数前面加了一个星号 *,表示可以传入任意个数的参数,这些参数都会被当做一个元组传递到函数中。

关键字参数

关键字参数与可变参数相似,但是接受的实参是一个字典,其中包含参数名和对应的参数值,例如:

def print_info(**kwargs):
    print(f"name: {kwargs['name']}, age: {kwargs['age']}, gender: {kwargs['gender']}")

print_info(name="Alice", age=18, gender="female") # 输出 name: Alice, age: 18, gender: female

在这个例子中,我们在参数前面加了两个星号 **,表示可以传入任意个数的关键字参数,这些参数会被打包成一个字典传递到函数中。

函数文档字符串

函数的第一行字符串通常是一条简短的文本字符串,用于说明函数的作用,它通常被称为函数的文档字符串(docstring)。它可以使用三重引号 """''' 来定义,例如:

def greet(name: str) -> str:
    """
    Greet a person by name.

    Parameters:
    name (str): The name to greet.

    Returns:
    str: A greeting message.
    """
    return f"Hello, {name}!"

这里的文档字符串记录了函数的参数和返回值信息,它们通常被用于自动生成函数文档。

函数注解

函数注解是写在函数声明中的一种形式化的注释,它可以为函数参数和返回值添加元信息,但并不会对程序的行为造成任何影响,例如:

def greet(name: str) -> str:
    return f"Hello, {name}!"

在这个例子中,我们为函数 greet 的参数 name 和返回值添加了注解,指定它们的类型分别为 strstr

示例

下面是两个用例以说明 Python 中如何定义函数:

计算列表中最大的数

def max_number(numbers):
    """
    返回一个列表中的最大值。

    Parameters:
    numbers(list): 数值列表。

    Returns:
    int: 最大值。 
    """
    max_num = numbers[0]
    for num in numbers:
        if max_num < num:
            max_num = num
    return max_num

在这个例子中,我们定义了 max_number 函数,它接收一个列表 numbers 作为参数,然后遍历这个列表,找到并返回其中的最大值。

计算圆的面积

def circle_area(radius: float) -> float:
    """
    计算圆的面积。

    Parameters:
    radius(float): 圆的半径。

    Returns:
    float: 圆的面积。 
    """
    return 3.14159 * radius ** 2

在这个例子中,我们定义了 circle_area 函数,它接收一个半径 radius 作为参数,并返回圆的面积,我们使用注解指定了参数和返回值的类型,方便程序员理解和检查程序。