函数

函数. 就是对一个代码块或者功能的封装. 什么时候用, 什么时候执行
    语法:
        def 函数名():
            函数体(代码块)
        函数的调用:
        函数名()   # 所有的()都是函数的调用

        函数名和变量名一样.
            1.字母, 数字, 下划线
            2.不能以数字开头, 更不能全是数字
            3. 不能是关键字 (默写目前已经学过的关键字)
            4. 不能太长
            5. 有意义
            6. 不要用中文
            7. 驼峰体和下划线


    返回值
        函数在执行过程中或者执行完毕. 可以使用return返回给调用者一个结果

        只要程序执行到return. 函数就会被停止 后面的内容就不会再执行.
        break  循环

        三种情况:
            1. 直接写个return或者不写return, 不返回任何内容, 接收的是None
            2. return 一个变量或者值(返回值)
            3. return 多个变量或者值. 返回的时候解释器会帮我们把多个返回值组装成一个tuple
               接收的地方可以接收一个变量. 多个变量. 解构成多个变量
    参数
        函数在访问的时候. 给函数传递的一些信息, 参数写在小括号里面
        1. 形参: 在函数声明的位置给出的变量的声明, 形式参数
        2. 实参: 在函数调用的时候. 给函数传递的具体的值. 实际参数

        参数可以有很多个.每个参数之间用逗号隔开
        先说实参
            1. 位置参数.
                按照位置把实参赋值给形参
            2. 关键字参数.
                对照形参. 给每个参数赋值
            3. 混合参数
                位置参数和关键字参数混合着使用
                必须先写位置参数, 然后才是关键字参数
        关于形参: (有三种形式,今天两种)
            1. 位置参数
                到目前位置使用的都是位置参数
            2. 默认值参数
                当出现很多重复的参数的时候. 考虑使用默认值参数
                默认值参数必须在位置参数后面
                当调用的地方不给出值的时候. 会使用默认值
3.动态参数
1. 动态传参, 可以接收任意的参数
    顺序: 位置参数  *args  默认值参数 **kwargs
    形参的一种方式
    1. 位置参数的动态传参 写法: *参数名   例如: *args
        接收的参数是tuple类型
    2. 关键字参数的动态传参. 写法: **参数名  例如: **kwargs
        接收的参数是dict类型
    无敌传参:
        def func(*args, **kwargs):
            pass
    *,** 的作用:
        在形参: 聚合
        在实参: 打散

2. 作用域的问题
    1. globals() 获取全局作用域中的内容
    2. locals()  获取局部作用域中的内容

3. 函数嵌套--函数的执行流程
    所有的()表示的是函数的调用

4. global和nonlocal
    global: 寻找全局作用域中的内容
    nonlocal: 寻找上一级作用域中的内容, 但不能是全局的
命名空间
    1. 内置命名空间-> python内部的一些东西
    2. 全局命名空间-> 自己定义的全局变量
    3. 局部命名空间-> 函数的内部
作用域:
    全局作用域:内置空间+ 全局空间
    局部作用域:局部空间
    globals() 全局空间中的内容
    locals()  局部空间的内容
global和nonlocal
    global: 在局部应用全局变量
    nonlocal: 外层中离他最近的一个变量(非全局)
  

  

原文地址:https://www.cnblogs.com/duanhaoxin/p/9166495.html