Python函数详解:函数定义、调用,lambda函数,高阶函数map,filter,reduce,函数式编程,模块化设计、代码复用、函数递归、enumerate()

一、函数

函数是一段具有特定功能的、可重用的语句组,通过函数名来表示和调用。

  • 函数是一段代码的抽象和封装
  • 函数是一段具有特定功能的、可重用的语句组
  • 函数是一种功能的抽象,表达特定功能
  • 两个作用:降低编程难度代码复用
    降低编程难度:利用函数可以将一个复杂的大问题分解成一系列简单的小问题,分而治之,为每个小问题编写程序,通过函数封装,当各个小问题都解决了,大问题也就迎刃而解。
    代码复用:函数可以在一个程序中的多个位置使用,也可以用于多个程序,当需要修改代码时,只需要在函数中修改一次,所有调用位置的功能都更新了,这种代码复用降低了代码行数和代码维护难度。

二、定义函数(声明函数)

在这里插入图片描述
在这里插入图片描述

  1. 函数名:def保留字,函数名可以是任何有效的Python标识符
  2. 参数列表:参数列表是调用该函数时传递给它的值
  • 参数可以有零个、一个、多个,当传递多个参数时各参数由逗号分隔,当没有参数时也要保留圆括号
  • 参数列表中的参数是形式参数,简称为“形参”,相当于实际参数的一种符号表示或占位符
  • 参数分为非可选参数、可选参数
  1. 函数体:函数体是函数每次被调用时执行的代码,由一行或多行语句组成
  2. return返回值:如果需要返回值,使用保留字return和返回值列表
  • 一个函数可以有零个、一个、多个return
  • 当有return时,可以有零个、一个、多个返回值
  • 当有return时,当返回多个值时,这些值形成一个元祖数据类型
# 定义一个对整数n求阶乘的函数
def fact(n):
    s = 1
    for i in range(1, n+1):
        s *= i
    return s

三、调用函数

函数定义后不能直接运行,需要调用才能运行,函数调用方式:
<函数名>(<实际赋值参数列表>)

  • 对函数的各个参数赋予实际值,实际值可以是实际数据,也可以是在调用函数前已经定义过的变量。
  • 函数返回:函数执行结束后,根据return保留字决定是否返回结果,如果返回结果,则结果将被放置到函数被调用的位置,函数调用就此完毕

在这里插入图片描述

# 定义一个对整数n求阶乘的函数
def fact(n):
    s = 1
    for i in range(1, n+1):
        s *= i
    return s
print("值是:", fact(10))

输出:
值是: 3628800
  • 函数式编程;尽量把程序写成一系列函数调用,在编程中大量使用函数已成为一种编程范式,叫作函数式编程

1. 函数类型

  • 在Python中,函数也是有类型的,可以通过type()获得函数类型,
  • 函数类型为function类型,这是一种Python的内置类型
  • 如果调用函数,则类型为返回值的类型
    在这里插入图片描述
    2. 最小函数
    Python语言最小函数可以不表达任何功能:
    在这里插入图片描述
    保留字pass表示不进行任何操作,起到占位的作用。对f()的调用不实现任何功能。
    在这里插入图片描述
    此处的16进制数0x000001DF7C674E58表示f()的内存地址,转换成十进制就是2059376479832。

四、函数参数:可选参数

在这里插入图片描述
在这里插入图片描述
可选参数要放置在必选参数的后面,即定义函数时,先给出所有非可选参数,然后再分别列出每个可选参数及对应的默认值。
在这里插入图片描述
函数的参数在定义时可以指定默认值,当函数被调用时,如果没有传入对应的参数值,则使用函数定义时的默认值替代。

五、函数参数:可变参数

在这里插入图片描述
确定要给的参数放在前面,不确定的参数放在后面

在这里插入图片描述

def fact(n, *c):
    s = 1
    for i in range(1, n+1):
        s *= i
    for item in c:
        s *= item
    return s

print(fact(4))   输出:24
print(fact(4, 2))   输出:48
print(fact(4, 2, 5))   输出:240
print(fact(4, 2, 5, 3))   输出:720

max(), min()的参数就是可变参数,在函数定义时参数就是设定为不确定的 *b方式

六、函数参数:参数传递

  1. 按位置传递参数:默认按照位置顺序的方式传递参数
  2. 按参数名称传递参数,采用名称参数方式不需要保持参数传递的顺序,只需要对每个必要参数赋予实际值即可,这种方式会显著增强程序的可读性
    在这里插入图片描述

七、函数返回值

  1. return返回值:如果需要返回值,使用保留字return和返回值列表
  • 一个函数可以有零个、一个、多个return
  • 当有return时,可以有零个、一个、多个返回值
  • 当有return时,当返回多个值时,中间用逗号分隔,这些值形成一个元祖数据类型
    在这里插入图片描述
    在这里插入图片描述
def add(x, y):
    z = x + y

print(add(2, 3))

输出:
None   # 没有return保留字,输出None
def add(x, y):
    z = x + y
    return

print(add(2, 3))

输出:
None   # 有return保留字,但没有列返回值,输出None

八、变量作用域:局部变量

  • 根据变量在程序中的位置和作用范围,变量分为局部变量和全局变量。
  • 局部变量仅在函数内部,且作用域也在函数内部;全局变量的作用域跨越多个函数。
  • 基本数据类型的变量,无论是否重名,局部变量与全局变量不同
  • 可以通过global保留字在函数内部声明全局变量
  • 组合数据类型的变量:如果局部变量未真实创建,则是全局变量
  1. 局部变量:局部变量指在函数内部定义的变量,仅在函数内部有效,当函数退出时变量不再存在。
def multiply(x, y = 10):
    z = x * y  # z是函数内部的局部变量
    return z

s = multiply(99, 2)
print(s)
print(z)

输出:
198
Traceback (most recent call last):
  File "C:/Users/520/PycharmProjects/pythonProject1/exercise.py", line 6, in <module>
    print(z)
NameError: name 'z' is not defined

九、变量作用域:全局变量

  1. 全局变量是在函数之外定义的变量,在程序执行全过程有效,全局变量在函数内部使用时,需要提前使用保留字global声明
    语法:global<全局变量>
    在这里插入图片描述
n = 2  # n是全局变量
def multiply(x, y = 10):
    global n  # 声明全局变量n
    n = x * y # 声明全局变量n
    return x * y * n  # 使用全局变量n

s = multiply(5, 3)
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值