zoukankan      html  css  js  c++  java
  • day09,10 函数

    一、函数

    1. 什么是函数

    函数: 对代码块和功能的封装和定义

    定义一个事情或者功能. 等到需要的时候直接去用就好了. 那么这里定义的东西就是一个函数.

    语法:

          def 函数名(形参):

               函数体

          函数名(实参)

    1. 函数定义, 函数名, 函数体以及函数的调⽤

    函数的调用: 使用函数名可以调用函数, 写法: 函数名(), 这个时候函数的函数体会被执行

     

    1. 函数的返回值

             函数中遇到return, 此函数结束, 不再继续执⾏

            1. 函数内部不写return, 默认在最后返回None

            2. 函数只写了return  返回None

            3. 给函数的调用者一个访问结果  return  值   有一个返回值

            4. 函数的返回值可以有多个结果   return 值1, 值2, 值3 ....  有多个返回值

     

            返回值返回给调用方!!!

    1. 函数的参数

    关于参数:

    1. 形参

    写在函数声明的位置的变量叫形参. 形式上的⼀个完整. 表⽰这个函数需要xxx

    2. 实参

    在函数调⽤的时候给函数传递的值. 叫实参, 实际执⾏的时候给函数传递的信息. 表⽰给函数xxx

    3. 传参

    给函数传递信息的时候将实际参数交给形式参数的过程被称为传参.

       

    函数的参数

       形参: 在函数声明位置的变量

           1. 位置参数

           2. 默认值参数

           3. 混合-顺序: 位置, 默认值 必须先声明位置参数, 才能声明默认值参数.

           4. 动态传参, *args, **kwargs   动态参数必须在位置参数后⾯

        1 *args: 动态接收位置参数

                   2 **kwargs:动态接收关键字参数

                    顺序: 位置, *args, 默认值, **kwargs

                    *, ** :

                        def func(*args, **kwargs): 无敌传参

                            pass

                    *, ** : 在形参位置: 聚合

                          在实参位置: 打散

    在实参位置上给一个序列,列表,可迭代对象前面加个*表示把这个序列按顺序打散.

     在形参的位置上的* 表⽰把接收到的参数组合成⼀个元组

    如果是一个字典, 那么也可以打散. 不过需要⽤两个*

       实参: 在函数调用的时候给函数传递的具体的值

           1. 位置参数

           2. 关键字参数

           3. 混合(注意: 在使⽤用混合参数的时候, 关键字参数必须在位置参数后面)

             顺序: 位置, 关键字

     

    二、命名空间

    给存放名字和值的关系的空间起⼀个名字叫: 命名空间. 我们的变量在存储的时候就是存储在这片空间中的.

    1. 内置名称空间:python自己, print, input, len

    2. 全局名称空间: 你写的代码从上到下

    3. 局部名称空间: 函数, 类, 方法, 其他模块, 对象

     

    作用域

         全局作用域

            内置 + 全局

         局部作用域

            局部名称空间

         从局部找全局可以. 但是从全局找局部是不可以的

    通过globals()函数来查看全局作⽤域中的内容, 也可以通过locals()来查看局部(或当前)作用域中的变量和函数信息

     

    三、函数嵌套

    每一层都会产生独自的名称空间

    只要遇⻅了()就是函数的调⽤. 如果没有()就不是函数的调⽤

    四、global和nonlocal

    global: 在局部引入全局的内容,  可以创建(升华)一个变量为全局变量

    nonlocal :  在局部, 引入上一层名称空间中的变量, 如果没有, 继续上一层.....若没有找到就报错

    如果全局变量在局部, 可以用, 但是, 不能改

           

     

     

  • 相关阅读:
    Qt之自定义托盘(二)
    使用react-navigation提示undefind is not a function
    vue使用mockjs配置步骤(无需启动node服务)
    input框type=file设置cursor:pointer的问题
    umi中使用scss
    umi怎么去添加配置式路由
    Rem自适应js
    解决在antd中使用 autoprefixer 9.4.5 会抛出错误 Replace text-decoration-skip: ink to text-decoration-skip-ink: auto, because spec had been changed 的问题
    file类型input框设置上传相同文件,并都可以触发change事件。
    浅谈JavaScript对象数组根据某属性sort升降序排序
  • 原文地址:https://www.cnblogs.com/honghong7725/p/9885736.html
Copyright © 2011-2022 走看看