day09-10-python函数相关知识

初识函数

  1.什么是函数

    具有封装功能的代码块。

  2.函数的定义,函数名,函数体以及函数的调用。

    1.定义函数,使用def

      def 函数名():

        函数体

    2.函数名,跟变量的命名规范基本相同

    3.函数体,具体要执行的的功能

    4.函数的调用:使用函数名可以调用函数,写法:函数名(),这个函数已经被调用,里面的函数体会被执行

      注意:函数只要调用才能执行里面的代码

  3.函数的返回

      执行完函数之后,我们可以使用return来返回一个结果。

      1.不写return,默认返回None

      2.只写return,返回None

      3.return “jskdf”,返回一个字符串,后面可以是任何可以返回的代码段。

      4.return后面返回了多个结果,则调用者可以接受一个tuple,直接解构成多个变量

   4.函数的参数

      在调用函数时,可以给函数传递一个或者多个参数。参数可以是数字,字符串,列表,元组,字典等等。

      1.形参:写在函数声明的位置的变量叫形参,形式上的一个变量,可以用任何值来表示。

      2.实参:函数调用时给函数传递的值,叫实参,是函数真正意义上需要的值。

      3.传参:给函数传递消息的时候将实参的值传递给形参,函数内部就可以用这个形参的值了。

      4.参数的分类

        1.位置参数,大概意思就是按照位置的顺序把实参传递赋值到对应的形参中

        day09-10-python函数相关知识

        2.关键字参数:函数中的参数非常多就可以使用关键字参数了,只需要记住参数的名字,注意:使用关键字参数可以随意更换参数的顺序,不过不建议,对称比较好看。

        day09-10-python函数相关知识

        3.混合参数,把位置参数和关键字参数回合使用,但是要注意的是,关键字参数必须要写在位置参数的后边,否则会报错。

        day09-10-python函数相关知识

        综上所述:从实参的角度来看,分为这三种,形参较为复杂。(位置参数,默认值参数,动态参数)

函数进阶

  1.函数参数--动态传参

      适用于参数不确定或者参数太多。

      1.动态接收位置参数。动态参数必须放到最右边,当然也可以用关键字参数

        day09-10-python函数相关知识

      2.动态接收关键字参数。使用**kwargs

      day09-10-python函数相关知识

        注意:关键字参数必须放在位置参数后边。

        最终顺序:位置参数>*args>默认值参数>**kwargs,这四种参数可以任意的进行使用。

     3.动态传参的另一种方式,用*把可迭代对象按照顺序打散,用**可以把字典打散。   day09-10-python函数相关知识

 

  2.命名空间

      在python解释器开始执⾏之后, 就会在内存中开辟⼀个空间, 每当遇到⼀个变量的时候, 就 把变量名和值之间的关系记录下来, 但是当遇到函数定义的时候, 解释器只是把函数名读入内 存, 表示这个函数存在了,  ⾄于函数内部的变量和逻辑, 解释器是不关心的. 也就是说⼀开始 的时候函数只是加载进来, 仅此⽽而已, 只有当函数被调⽤和访问的时候, 解释器才会根据函数 内部声明的变量来进⾏开辟变量的内部空间. 随着函数执⾏行完毕, 这些函数内部变量占⽤的空 间也会随着函数执⾏完毕⽽而被清空. 

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

      命名空间分类:

        1. 全局命名空间--> 我们直接在py⽂文件中, 函数外声明的变量都属于全局命名空间

        2. 局部命名空间--> 在函数中声明的变量会放在局部命名空间

        3. 内置命名空间--> 存放python解释器为我们提供的名字, list, tuple, str, int这些都是内 置命名空间

      加载顺序:

        1. 内置命名空间
        2. 全局命名空间

         3. 局部命名空间(函数被执⾏的时候)

      取值顺序:

         1. 局部命名空间

         2. 全局命名空间

         3. 内置命名空间

    作⽤域:  作⽤用域就是作⽤用范围, 按照⽣生效范围来看分为 全局作⽤用域和局部作⽤用域   

    全局作用域: 包含内置命名空间和全局命名空间. 在整个⽂件的任何位置都可以使用(遵循 从上到下逐⾏执⾏). 局部作⽤用域: 在函数内部可以使⽤.

    作用域命名空间:

      1.全局作用域:全局命名空间+内置命名空间

      2.局部作用域:局部命名空间

      day09-10-python函数相关知识

  3.函数的嵌套

      很简单,一个函数中包含着另一个函数。

  4.global,nonlocal关键字

      day09-10-python函数相关知识

day09-10-python函数相关知识

day09-10-python函数相关知识

这个题弄懂,,作用域就差不多了。

 

 

       

 

 

   

 

 

 

  

  

    

 

上一篇:PYTHON2.day09


下一篇:课设记录-Day09