函数基础学习

函数基础

定义

  • 什么是函数
"""
函数就是实现某一特定功能的代码的封装.
(函数就是把实现某一个功能的代码打成一个包, 以后再需要这段代码对应功能的时候不需要再写这段代码, 
而是直接调用封装这段代码的函数)
"""
  • 分类(根据函数是谁创建的)
"""
1) 系统函数 - Python自带的函数, 例如: print, input, type, max, min, sorted等
2) 自定义函数 - 程序员自己创建的函数
"""
  • 定义函数/创建函数
"""
语法:
def 函数名(形参列表):
    函数说明文档
    函数体
    

说明:
def - 关键字; 固定写法
函数名 - 程序员自己命名, 必须符合命名要求和规范
        要求: 标识符; 不能是关键字
        规范: 见名知义; (函数名->功能)
              字母都小写多个单词用下划线隔开
              不使用系统函数名, 类名, 模块名
(): - 固定写法

形参列表 - 以'变量名1, 变量名2, 变量名3, ...'的形式存在, 这儿的变量名可以有, 也可以没有
          形参的作用: 将函数外部的数据传递到函数里面
          怎么确定形参: 看实现函数的功能需不需要额外的数据, 需要几个
函数说明文档 - 本质是一个多行注释, 用来描述函数的功能和使用方法
函数体 - 结构上: 和def保持一个缩进的一条或者多条语句(至少一条)
        逻辑上: 实现函数功能的代码
"""
  • 函数调用
  1. 定义函数不会执行函数体, 调用函数才会执行函数体

  2. 怎么调用函数

    """
    语法: 函数名(实参列表)
    
    说明:
    a. 函数名 - 需要哪个函数的功能就调用哪个函数, 就写哪个函数的函数名
            (注意):函数名必须是已经定义好的函数的函数名)
            
    b. () - 固定写法
    
    c. 实参列表 - 以'数据1, 数据2, 数据3, ...'的形式存在
              实参就是通过形参从函数外部传递到函数内部具体的数据(实参用来给形参赋值)
    """
    
  3. 函数调用过程

    """
    当代码执行到函数函数调用语句的时候:
    第一步: 先回到函数定义位置
    第二步: 传参(用实参给形参赋值)
    第三步: 执行函数体
    第四步: 确定函数返回值
    第五步: 返回函数调用语句接着往后执行
    """
    

返回值

  • 返回值
"""
返回值就是从函数内部传递到函数外部的数据

1) 怎么确定函数返回值(怎么将指定的数据作为函数返回值)
看执行函数体的时候, 
    有没有遇到return, 如果遇到return, return后面的值就是函数的返回值; 
    如果没有遇到return, 返回值是None

2) 怎么获取函数返回值
获取函数调用表达式的值, 就是获取函数返回值.
函数调用表达式: 调用函数的语句

3) 什么时候需要返回值
如果实现函数的功能产生了新的数据, 我们就应该将新的数据返回

原因: 每次调用函数的时候, 系统会自动为这个函数创建一个临时栈区域, 用来保存在函数中产生的数据,
     (形参也保存在这个区域, 当函数调用结束的时候,系统会自动释放这块内存(内存中的数据会被删除), 
     只有返回值不会被直接删除
"""
  • return
"""
return 在函数中有两个作用:
1) 返回返回值 - 谁在return后面, 谁就是返回值
2) 提前结束函数 - 执行函数体时如果遇到return, 函数直接结束
"""

函数的参数

  • 位置参数和关键字参数 - 根据实参传递方式分类
"""
1) 位置参数: 以'实参1, 实参2, 实参3, ...'的形式存在, 通过位置一一对应的方式来给形参赋值
2) 关键字参数: 以'形参1=实参1, 形参2=实参2, ...'的形式存在, 直接用=确定实参和形参的对应关系

注意: 位置参数和关键字参数可以混用, 混用的时候位置参数必须在关键字参数前面
"""
  • 参数默认值
"""
定义函数的时候, 可以通过'形参名=值的方式给参数赋默认值; 如果一个形参有默认值, 那么在调用函数的时候这个形参可以不用赋值'
    
注意: 定义函数的时候, 如果有的参数有默认值有的没有, 那么没有默认值的参数必须放在有默认值的参数前面
"""
  • 参数类型说明 - 定义函数的时候指定参数的类型(python中只有提示作用,没有约束作用)
"""
参数类型说明既可以提示使用者在调用函数的时候该传什么类型的数据; 又可以让参数在函数体中使用的时候,有相关代码提示

1) 方法1->没有默认值的参数: 形参: 类型名
2) 方法2: 给参数赋默认值, 默认值的类型就是参数的类型
"""

补充: 变量类型说明

message = '[1, 2, 3]'
list2 = eval(message)       # type: list
list2.clear()
  • 不定长参数 - 解决参数个数不确定的问题
"""
1) 带*的不定长参数
定义函数的时候, 如果在某个形参前面加*, 那么这个参数变成了不定长参数, 调用的时候这个形参可以接收若干个实参.

本质: 如果形参前面有*, 那么这个参数就会自动变成一个元组, 接收到的所有实参会作为这个元组的元素

注意: a. 带*的不定长参数传参只能使用位置参数
      b. 定长参数和带*的不定长参数混用的时候, *前的定长参数必须用位置参数传参, *后面的定长参数必须用关键字参数传参

2) 带**的不定长参数

本质: 形参代表字典, 需要键和值

注意: a. 带**的不定长参数传参只能使用关键字参数
      b. 关键字随便给(符合字典对键的要求)
"""
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值