A

ACarol

V1

2022/09/08阅读:12主题:默认主题

Python基础3

函数

def 悯农(times,a,b,c,d):
    for i in range(times):
        print('锄禾日当午')
        print(a * 10)
        print('汗滴禾下土')
        print(b * 10)
        print('谁知盘中餐')
        print(c * 10)
        print('粒粒皆辛苦')
        print(d * 10)
悯农(100,'@','#','$','%')

函数特点

1. 避免代码冗余
2. 提高代码的可维护性
3. 提高代码的灵活性
4. 提高代码的可重用性

函数的语法

函数使用的必要性
1. 非结构化编程
 逻辑掺杂在一起,混乱,逻辑不清晰
2. 结构化编程
 函数
 将可重用的逻辑、或者拥有独立功能的逻辑封装在一起
定义:函数由一组代码构成,目的是为了完成一个特定的任务

语法:
关键字:def:define:声明一个函数
函数的声明:
def 函数名(形式参数):
 代码(函数体)

函数的调用:
 函数名(实际参数)
 
函数在不调用的情况下,不会执行

函数的运行机制

流程:
 1. 编译流程:
  1. 通过编译器,识别def关键字,创建一个函数对象
  2. 创建函数体(不执行)
 2. 执行流程
  1. 执行 函数的调用
  2. 通过函数名调转到函数的定义处
  3. 执行函数体
  4. 执行函数体完毕,流程返回到函数调用处

函数的结构

1. 函数的声明
 def
 函数名
 括号(形式参数)
2. 函数体
 内容,核心代码
3. 函数的返回值
 return
 如果不写return,自动添加return None
  • 函数名的声明
小驼峰
mainPage

函数的参数

  • 函数的参数的分类
1. 形式参数
 函数声明的时候,定义的参数
 简称:形参
 英文:Parameter
 相当于函数的局部变量
2. 实际参数
 函数调用的时候,传入的参数
 简称:实参
 英文:Argument
 相当于给函数的局部变量赋值
3. 如果没有定义任何参数
 称之为:无参
  • 位置参数
参数和位置有关
1. 实参和形参的位置必须一一对应
2. 位置参数的数量需要一一匹配
3. 位置参数,一旦设定了就必须传值
  • 关键字参数
定义了关键字的参数
1. 基于实参
2. 不受位置的影响
3. 实参和形参必须一一对应
  • 默认参数
定义了默认值的参数
1. 基于形参
2. 如果不传递实参则使用形参后面的默认值作为实参
3. 如果传递实参,则使用传递的参数值
  • 可变长参数
可以接收多个参数的形参
1. 基于形参
2. 分类:
  *args
   将接收到的多个参数打包成元组
   只能通过位置来传参
  **kwargs
   将接受到的多个参数打包成字典
            只能够通过关键字来传值
相同类型的可变长参数,只能有一个
  • 混用情况
1. 关键字参数和位置参数混用
 关键字参数必须在位置参数之后
 原因:参数出现等号的形式,之后的所有参数,都被视为等号形式传播
2. 默认参数和位置参数混用
 默认参数必须出现在位置参数之后
 原因:参数出现等号的形式,之后的所有参数,都被视为等号形式传播
3. 可变长参数和位置参数混用:
 语法上不会报错
 如果可变长参数在位置参数之前,位置参数必须通过关键字参数进行传值

函数

def 悯农(times,a,b,c,d):
    for i in range(times):
        print('锄禾日当午')
        print(a * 10)
        print('汗滴禾下土')
        print(b * 10)
        print('谁知盘中餐')
        print(c * 10)
        print('粒粒皆辛苦')
        print(d * 10)
悯农(100,'@','#','$','%')

函数特点

1. 避免代码冗余
2. 提高代码的可维护性
3. 提高代码的灵活性
4. 提高代码的可重用性

函数的语法

函数使用的必要性
1. 非结构化编程
 逻辑掺杂在一起,混乱,逻辑不清晰
2. 结构化编程
 函数
 将可重用的逻辑、或者拥有独立功能的逻辑封装在一起
定义:函数由一组代码构成,目的是为了完成一个特定的任务

语法:
关键字:def:define:声明一个函数
函数的声明:
def 函数名(形式参数):
 代码(函数体)

函数的调用:
 函数名(实际参数)
 
函数在不调用的情况下,不会执行

函数的运行机制

流程:
 1. 编译流程:
  1. 通过编译器,识别def关键字,创建一个函数对象
  2. 创建函数体(不执行)
 2. 执行流程
  1. 执行 函数的调用
  2. 通过函数名调转到函数的定义处
  3. 执行函数体
  4. 执行函数体完毕,流程返回到函数调用处

函数的结构

1. 函数的声明
 def
 函数名
 括号(形式参数)
2. 函数体
 内容,核心代码
3. 函数的返回值
 return
 如果不写return,自动添加return None
  • 函数名的声明
小驼峰
mainPage

函数的参数

  • 函数的参数的分类
1. 形式参数
 函数声明的时候,定义的参数
 简称:形参
 英文:Parameter
 相当于函数的局部变量
2. 实际参数
 函数调用的时候,传入的参数
 简称:实参
 英文:Argument
 相当于给函数的局部变量赋值
3. 如果没有定义任何参数
 称之为:无参
  • 位置参数
参数和位置有关
1. 实参和形参的位置必须一一对应
2. 位置参数的数量需要一一匹配
3. 位置参数,一旦设定了就必须传值
  • 关键字参数
定义了关键字的参数
1. 基于实参
2. 不受位置的影响
3. 实参和形参必须一一对应
  • 默认参数
定义了默认值的参数
1. 基于形参
2. 如果不传递实参则使用形参后面的默认值作为实参
3. 如果传递实参,则使用传递的参数值
  • 可变长参数
可以接收多个参数的形参
1. 基于形参
2. 分类:
  *args
   将接收到的多个参数打包成元组
   只能通过位置来传参
  **kwargs
   将接受到的多个参数打包成字典
            只能够通过关键字来传值
相同类型的可变长参数,只能有一个
  • 混用情况
1. 关键字参数和位置参数混用
 关键字参数必须在位置参数之后
 原因:参数出现等号的形式,之后的所有参数,都被视为等号形式传播
2. 默认参数和位置参数混用
 默认参数必须出现在位置参数之后
 原因:参数出现等号的形式,之后的所有参数,都被视为等号形式传播
3. 可变长参数和位置参数混用:
 语法上不会报错
 如果可变长参数在位置参数之前,位置参数必须通过关键字参数进行传值
  • 递归
自己搞自己
  • 函数的文档注释
1. 必须出现在函数体的第一行
2. 习惯上使用三引号字符串作为文档注释
 单三引号或者双三引号
3. 查看函数文档
 1. help(函数名)
 2. 调用函数对象的__doc__属性

函数的过程

  • 函数的返回值
关键字:return
1. 任何函数都必须有return(返回值)
2. 如果函数中不书写任何的return,自动添加一个return None
3. 如果函数中只写了return,之后没有携带任何值,自动添加一个None
4. return的作用
  1. 返回流程(最核心的作用)
  2. 返回时顺带携带了一个值(函数一定会有一个返回值)
5. return的值
  1. 任何对象都可以被return
  2. 返回值有且只能有一个
  3. 如果要返回多个值,打包成一个容器(元组)进行返回
  4. 可以返回一个函数的对象的调用
   函数的返回值是被调用函数的返回值(间接获取返回值)
  5. 返回一个函数对象
   return 函数名
6. return 之后的代码,不执行
 无论是本层或者是外层,均不执行
  • 函数变量的作用域
作用域:作用的范围
1. 局部变量:
  1. 定义在函数内部的变量
  2. 先定义后使用
  3. 作用范围:从定义开始到包含他的代码块结束
2. 全局变量:
  1. 没有缩进的变量
  2. 先定义后使用
  3. 作用范围:从定义开始到包含他的代码块结束
3. 如果函数内部的变量和全局变量发生了冲突,在局部访问,访问的是局部的变量,在全局使用的是全局的变量---相互不干扰(修改局部变量,全局不受影响)
  1. 如果发生了命名冲突,会在函数内部创建一个同名的局部变量
  2. 局部使用的时候,局部变量的变量名会遮盖全局变量的变量名
  3. 全局使用时依然使用全局的变量
  • global关键字
声明全局变量
如果函数内部的变量的名称和全局的名称一样,使用global可以声明当前代码块使用的该变量为全局变量
  • nonlocal
nonlocal 只存在于python 3.x版本
1. nonlocal影响上一层的局部同名变量
2. 如果上一层没有对应的局部变量,则报错:
  SyntaxError: no binding for nonlocal 'a' found
3. nonlocal 和global同时作用域同一个变量的时候,会报错
  SyntaxError: name 'a' is nonlocal and global

分类:

后端

标签:

Python

作者介绍

A
ACarol
V1