函数¶

6.1 函数的定义¶

什么是函数?¶

函数(Function)是把一组可复用的操作打包起来,并用一个名字来调用的机制。
它能让代码模块化、易读、易维护。在 Python 中,函数由关键字 def 开始,后跟函数名、参数列表,并在缩进处编写函数体,必要时用 return 返回结果。

函数定义语法要点¶

def 函数名(参数1, 参数2=默认值, *args, **kwargs):
    """说明函数做什么、参数与返回值"""
    # 函数体(缩进)
    return 结果  # 可选
  • 调用:函数名(实参1, 实参2, 关键字=值)
  • 返回值:return 值 或 return a, b(返回元组);省略 return 等同于返回 None。
  • 参数类型(入门):位置参数、关键字参数、默认参数、可变参数(*args/**kwargs)
  • 文档字符串(docstring):三引号字符串,便于 help() 显示帮助。
  • 类型注解(可选):def add(a: int, b: int) -> int:

例子:简单函数的定义和调用¶

In [1]:
# 定义一个简单的函数
def greet():
    print('你好,欢迎学习Python函数!')

# 调用函数
greet()
你好,欢迎学习Python函数!

在上面的例子中,我们定义了一个名为greet的函数。这个函数没有参数,每次调用时都会输出一条欢迎信息。

In [3]:
greet()
你好,欢迎学习Python函数!

函数的参数¶

函数可以通过参数接受输入,从而根据输入执行不同的操作。

In [6]:
# 带有参数的函数
def greet_with_name(name):
    print(f'你好,{name},欢迎学习Python函数!')

# 调用函数并传递参数
greet_with_name('SISUer')
你好,SISUer,欢迎学习Python函数!

在这个例子中,greet_with_name函数接受一个参数name,通过传递不同的名字可以定制输出的信息。

函数的返回值¶

函数可以返回一个或多个值,用 return 语句实现。

In [9]:
# 定义一个带有返回值的函数
def multiply_numbers(a, b):
    return a * b

# 调用函数并接收返回值
product = multiply_numbers(3, 4)
print(f'乘积是:{product}')
乘积是:12

在这个例子中,multiply_numbers函数返回参数a和b的乘积,通过return语句将结果传递给调用者。

In [10]:
# 统计一段文本的字数
def count_words(text):
    return len(text)

# 文学作品片段
quote = "苟利国家生死以,岂因祸福避趋之。"
print(f"文本内容:{quote}")
print("字数统计:", count_words(quote))
文本内容:苟利国家生死以,岂因祸福避趋之。
字数统计: 16
In [11]:
# 一个简单的函数,返回两个年份之间的差距
def year_difference(year1, year2):
    return abs(year1 - year2)
# 计算《红楼梦》成书时间与现在的间隔
gap = year_difference(1791, 2025)
print(f"《红楼梦》成书至今已有约 {gap} 年。")
《红楼梦》成书至今已有约 234 年。
In [1]:
def add_two_number(num1,num2):
    return num2-num1

add_two_number(10,30)
Out[1]:
20

函数的多个参数¶

函数可以接受多个参数,通过逗号分隔。

In [5]:
# 带有多个参数的函数
def add_numbers(a, b):
    c = a + b
    return c
    

# 调用函数 并传递参数
result = add_numbers(5, 1000)
print(f'和是:{result}')
和是:1005

在这个例子中,我们定义了一个add_numbers函数,它接受两个参数a和b,返回它们的和。

练习¶

def 计算面积(长度, 宽度):
    ""“计算矩形的面积”""
    return 长度 * 宽度

# 调用函数
面积 = 计算面积(10, 5)
print("矩形的面积是:", 面积)
In [ ]:
#Show time
In [6]:
# 参考答案
def calculate_area(length, width):
    """
    Calculate the area of a rectangle.

    Parameters:
    length (float): The length of the rectangle.
    width (float): The width of the rectangle.

    Returns:
    float: The area of the rectangle.
    """
    return length * width

# Call the function
area = calculate_area(10, 5)
print("The area of the rectangle is:", area)
The area of the rectangle is: 50

默认参数¶

在定义函数时,可以为参数设置默认值,如果调用时未传递该参数,则使用默认值。

In [8]:
# 带有默认参数的函数
def greet_with_default(name='同学'):
    print(f'你好,{name},欢迎学习Python函数!')

# 调用函数,不传递参数
#greet_with_default()

# # # 调用函数,传递参数
greet_with_default("SISUer")
你好,SISUer,欢迎学习Python函数!

在这个例子中,greet_with_default函数定义了一个默认参数name,如果调用时不提供name参数,将使用默认值'同学'。

练习¶

  1. 定义一个名为calculate_area的函数,接受两个参数width和height,返回矩形的面积。
  2. 定义一个名为is_even的函数,接受一个整数参数,如果是偶数返回True,否则返回False。
  3. 定义一个名为greet_multiple_times的函数,接受一个名字参数和一个次数参数,输出该名字的欢迎信息多次。

练习参考答案¶

In [11]:
# 练习 1: 计算矩形面积
def calculate_area(width, height):
    return width * height

# 测试练习
area=calculate_area(10, 3)


print(f'矩形面积是:{area}')
矩形面积是:30
In [16]:
# 练习 2: 判断是否为偶数
def is_even(number):
    return number % 2 == 0

even_check = is_even(8)
#print(f'数字 8 是偶数吗?{even_check}')


def is_even(number):
    if number % 2 == 0:
        print('True')
    else:
        print('False')
is_even(9)
False
In [13]:
# 练习 3: 多次欢迎
def greet_multiple_times(name, times):
    for i in range(times):
        print(f'你好,{name}!欢迎学习Python函数!')


greet_multiple_times('SISUer', 10)
你好,SISUer!欢迎学习Python函数!
你好,SISUer!欢迎学习Python函数!
你好,SISUer!欢迎学习Python函数!
你好,SISUer!欢迎学习Python函数!
你好,SISUer!欢迎学习Python函数!
你好,SISUer!欢迎学习Python函数!
你好,SISUer!欢迎学习Python函数!
你好,SISUer!欢迎学习Python函数!
你好,SISUer!欢迎学习Python函数!
你好,SISUer!欢迎学习Python函数!

练习题(续)¶

请尝试完成以下练习:

  1. 定义一个函数,输入作者名字和作品名,输出“《作品名》是作者名的重要代表作。”
  2. 定义一个函数,输入两个年份,返回其中较早的那个。
  3. 定义一个函数,输入一句话,判断是否包含“国家”这个词。
In [ ]: