第三章python函数基础详解

一、函数1

函数的作用封装代码实现重用
函数使用步骤
函数参数的作用
函数返回值的作用
函数说明文档
函数嵌套

  1. 函数就是将一个具有独立功能的代码块整合成一个整体
  2. 定义函数
    def 函数名(参数):
    代码1
    return 表达式
    、、、
  3. 调用函数
    函数名(参数)
    函数需要先定义后使用
    当调用函数的时候解释器会执行函数,调用完成后向下执行
  4. 函数的说明文档
    定义函数后用来提示作用
    def 函数名(参数):
    “”" 说明文档的位置 “”"
    代码
    、、、
  5. help(函数名)//查看函数的说明文档
  6. 函数的嵌套调用
    def testA():
    代码
    、、、
    def testB():
    testA()
    代码
    、、、
  7. 除法中的结果都是浮点数

二、函数2

变量作用域//变量的作用范围
多函数程序执行流程
函数的返回值
函数的参数
拆包和交换两个变量的值
引用
可变和不可变类型

  1. 定义在函数内部变量//局部变量
  2. 定义在函数体外//全局变量
    在函数内部 全局变量名字=值//不能修改全局变量,而是重新定义了一个同名的局部变量
    def testA()
    global 全局变量名//使用global来声明全局变量
    全局变量名 = 值
    、、、、
  3. 多函数程序执行流程
    一个程序有多个函数组成,并且多个函数共享某些数据。
    共用全局变量
    返回值作为参数传递
  4. 函数的返回值
    一个函数里只能有一个return
    def 函数名字:
    return 1,2//返回的是一个元组//如果是return 1,2,3??元组
    返回多个数据默认为元组
    return 后面可以连接列表,元组或字典,以返回多个值
  5. 函数的参数
    位置参数:调用函数时根据函数定义的参数位置来传递参数
    def test(param1 , param2 ,param3):
    代码1
    、、、
    test(a,b,c)
    关键字参数:通过键 = 值加以指定
    test(param1 = a,param2 = b,param3 = c)
    函数调用时位置参数必须在关键字参数前面,关键字参数位置可变
    缺省参数:也叫默认参数为参数提供默认值,调用函数可不传默认值
    有默认值但又传入新的值,用新值
    不定长参数:也叫可变参数。用于不确定调用的时候会传递多少个参数。此时可使用包裹(packing)位置参数,或者包裹包裹关键字参数
    包裹位置传递
    def test(*args):
    print(args)
    test(‘Tom’) or test(‘Tom’,‘18’)
    传进的所有参数都会被args变量接受,他会根据传进参数的位置合并为一个元组。一个参数也是元组
    包裹关键字传递
    def test(**kwargs):
    print(kwargs)
    test(name = ‘TOM’,age = 18)
    返回一个字典
    无论是包裹位置还是包裹关键字传递都是一个组包的过程 //收集零散数据返回一个整体是组包的过程
  6. 拆包和交换变量值
    拆包:元组
    def test():
    return 100,200
    num1,num2 = test()
    拆包:字典
    dict1 = {‘name’:‘YOM’,‘age’:18}
    a,b=dict1//取出来的a,b都是key
    值需要dict1[a],dict1[b]
  7. 交换变量值
    方法一:借助第三变量存储数据
    方法二:
    a,b = 1,2
    a,b = b,a//即可完成交换
  8. 引用
    在python中,数据是靠引用来传递的
    使用id(变量)来判断两个变量是否为同一个值的引用。我们可以将id值理解为那块内存的地址标识。
    list数据类型自加后得出来得id一样???list是可变类型
    引用可以作为参数传递
  9. 可变和不可变类型
    可变类型:list、dict、set、
    不可变类型:整型、浮点型、字符串、元组

三、函数3

学员管理系统
递归
lambda表达式
高阶函数

  1. 需求:进入系统显示系统功能界面,功能如下:
    添加学员、删除学员、修改学员信息、查询学员信息、显示所有学员信息、退出系统
  2. 步骤分析:
    显示功能界面
    用户输入功能序号
    执行序号功能
    定义函数
    调用函数
  3. 需求实现

四、递归

函数内部自己调用自己
必须有出口//如果没有出口会报错,超出最大递归深度
大问题变成小问题向下求解向上返回

五、lambda表达式

  1. 如果一个函数有一个返回值,并且只有一句代码,可以用lanbda简化
  2. (lambda 参数列表:表达式)(传入参数值1,传入参数值2) //则可以直接用变量接受
  3. lambda表达式得参数可有可无。
  4. lambda函数能接收任意数量得参数但只能返回一个表达式的值
  5. 函数名 = lambda: 表达式
  6. 如果print(函数名)//打印出来的是内存地址
    应该print(函数名())
  7. 列表数据按照字典的key排序
    list = [{},{},{}、、、]
    list.sort(key = lambda x:x[‘某key’],reverse = bool数据 )

六、高阶函数//化简代码增加灵活性

把函数作为参数传入,这样的函数称为高阶函数。
高阶函数是函数式编程的体现

  1. 方法1在一个函数里调用另外一个函数
    方法2:将另外一个函数作为参数传入函数
    def test(a,b,f)
    return f(a) +f(b)
    result = test(-1,2,函数名)
    方法2叫函数式编程

  2. 内置高阶函数
    map(func,list)//将传入的函数变量func作用到list变量的每个元素中,结果返回迭代器。python2为列表。
    返回的迭代器需要使用print(list(接受迭代器的变量))//转换为列表数据,如果直接打印迭代器只能看到内存地址
    reduce(func(x,y),list)//func必须有两个参数。每次func计算的结果继续和序列的下一个元素做累积计算//累积计算???
    import functools
    list = [1,2,3]
    def func(a,b)
    return a+b
    result = functools.reduce(func,list)

  3. filter(func,lst)//用于过滤序列中不符合条件的元素,返回一个filter对象,可以使用list()来转换 filter是什么???
    ctrl + D向下复制

  4. 两个小函数:round(数据)//进行四舍五入 abs(数据)//求绝对值

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值