当前位置:首页>python>第二十九课:Python自定义函数(一)

第二十九课:Python自定义函数(一)

  • 2026-10-21 13:28:37
第二十九课:Python自定义函数(一)
这个知识点我大概会用好几个课来讲,内容涉及得很多。这个也是我们考纲当中四阶段的内容,重点考察项目。话不多说开讲。
Python中的自定义函数,就是由程序员自己编写、用来完成特定任务的代码块。它和 Python 内置的函数(比如 print()、len()、range())相对,是你根据自己的需求“量身定制”的功能单元。

一、为什么需要自定义函数?

  • 避免重复代码:把常用逻辑封装起来,哪里需要就调用哪里。
  • 提高可读性:用函数名表达意图,比如 calculate_tax()
    比一长串计算公式更清晰。
  • 便于调试和维护:修改功能只需改函数内部,不影响其他地方。
  • 支持模块化编程:把大问题拆成小函数,逐个解决。
二、定义函数和调用函数
语法格式:
def 函数名(形式参数1, 形式参数2, ...):    # 函数体:实现具体逻辑    return 返回值  # 可选
具体解释:
  • 函数名:合法标识符。(按照变量名的定义规则来写就可以了)
  • 形参列表:多个形参名之间以英文逗号(,)隔开。谁调用函数,谁负责为形参赋值

  • return 语句可以显式地返回一个值: return语句返回的值既可是有值的变量, 也可是一个表达式。
程序举例:
def my_max(x, y) : # 返回一个表达式return x if x > y else y# 定义一个函数,声明一个形参def say_hi(name) :print("===正在执行say_hi()函数===")return name + ",您好!"a = 6b = 9# 调用my_max()函数,将函数返回值赋值给result变量result = my_max(a , b) print("result:", result)# 调用say_hi()函数,直接输出函数的返回值print(say_hi("猪八戒"))
三、函数的说明文档
如果你的函数写出来想加入一些功能说明,怎么调用等,就可以提供说明文档。
def my_max(x, y) :     '''    获取两个数值之间较大数的函数。    my_max(x, y)        返回x、y两个参数之间较大的那个    '''    # 定义一个变量z,该变量等于x、y中较大的值    z = x if x > y else y    # 返回变量z的值    return z# 使用help()函数查看my_max的帮助文档help(my_max)print(my_max.__doc__)
四、多个返回值

如果程序需要有多个返回值,则既可将多个值包装成列表之后返回,也可直接返回多个值。如果 Python 函数直接返回多个值,Python 会自动将多个返回值封装成元组

def sum_and_avg(list):    sum = 0    count = 0    for e in list:        # 如果元素e是数值        if isinstance(e, int) or isinstance(e, float):            count += 1            sum += e    return sum, sum / countmy_list = [20, 15, 2.8, 'a', 35, 5.9, -1.8]# 获取sum_and_avg函数返回的多个值,多个返回值被封装成元组tp = sum_and_avg(my_list)print(tp)# 使用序列解包来获取多个返回值s, avg = sum_and_avg(my_list)print(s)print(avg)
五、函数的参数

关键字(keyword)参数

按照形参位置传入的参数被称为位置参数,则必须严格按照定义函数时指定的顺序来传入参数值。根据参数名来传入参数值,则无须遵守定义形参的顺序,这种方式被称为关键字(keyword)参数

# 定义一个函数def girth(width , height): print("width: ", width)print("height: ", height)return 2 * (width + height)# 传统调用函数的方式,根据位置传入参数print(girth(3.5, 4.8))# 根据关键字参数来传入参数print(girth(width = 3.5, height = 4.8))# 使用关键字参数时可交换位置print(girth(height = 4.8, width = 3.5))# 部分使用关键字参数,部分使用位置参数print(girth(3.5, height = 4.8))

如果希望在调用函数时混合使用关键字参数和位置参数,则关键字参数必须位于位置参数之后。(考点)

参数默认值(default parameter value)
语法格式如下:
        形参名=默认值
# 为两个参数指定默认值def say_hi(name = "孙悟空", message = "花果山水帘洞学校"):print(name, ", 您好")print("消息是:", message)# 全部使用默认参数say_hi()# 只有message参数使用默认值say_hi("唐僧")# 两个参数都不使用默认值say_hi("唐僧", "欢迎学习Python")# 只有name参数使用默认值say_hi(message = "欢迎学习Python")
如果只传入一个位置参数,由于该参数位于第一位,系统会将该参数值传给name参数。(考点)
  • say_hi(name="白骨精", "欢迎学习Python")——错误
  • say_hi("欢迎学习Python"n,ame="白骨精")——错误

python规定:关键字参数必须位于位置参数的后面。
改为:
 say_hi("白骨精", message="欢迎学习Python")——正确
 say_hi(name="白骨精", message="欢迎学习Python")——正确
定义函数时指定了默认值的参数(关键字参数)必须在没有默认值的参数之后。(考点)
# 定义一个打印三角形的函数,有默认值的参数必须放在后面def printTriangle(char, height = 5) :    for i in range(1, height + 1) :        # 先打印一排空格        for j in range(height - i) :                   print(' ', end = '')        # 再打印一排特殊字符        for j in range(2 * i - 1) :            print(char, end = '')        print()printTriangle('@', 6)printTriangle('#', height=7)printTriangle(char = '*')
Python 要求将带默认值的参数定义在形参列表的最后。
好了今天就分享到这里,好好消化今天的内容。有任何问题,给我留言,关注我。

最新文章

随机文章