函数

  函数   ----------------------------->  工厂

  函数名              地址

  参数                 原材料

  函数体代码              流水线 

  函数的返回值           工厂的产品

 

什么是函数?

  函数就是盛放代码的容器,把实现某一功能的一组代码丢到一个函数中

为什么要使用函数?

    代码冗余,程序组织结构不清晰、可读性差

  就像我们把一些混杂的文件扔到一块,你想要找出特定需要的文件,必须要一个个翻开找,但你若是将不同种类用途的文件,封装到一个文件包里面,在想要寻找就会方便很多。

  扩展性差

  如果我们每一个相同的功能写在我们需要的地方,短时间内可能看不出什么毛病,但是当我们写了十几遍二十几遍的时候,假如说你的领导让你把这个功能优化一下,你是不是要将所有有关的代码全部更改一变,费事费力,不能进行更好的功能扩展。

如何使用函数

  原则:先定义、后调用

​   ###定义函数不执行函数体代码,但是会检测函数体语法

  定义函数的语法:

    def 函数名(参数...):

    “”“文档注释”“”

    代码块

    return(可有可无)

  如何调用函数

  函数名()

函数参数的使用

  形参:在函数定义阶段括号内定义的变量名,称之为形式参数,简称形参

  实参:在函数调用阶段括号内传入的值,称之为实际参数,简称实参

  ###形参与实参的关系

  在调用函数时,实参的值会绑定给形参名,然后可以在函数内使用,函数调用完毕后,解除绑定

  位置形参::在函数定义阶段按照从左到右的顺序依次定义的形参,称之为位置形参

    def func(x,y):

      pass

    特点:必须被传值,多一个不行少一个也不行

  默认形参:在函数定义阶段就已经为某个形参赋值了,称之为默认形参

    def func(x,y=2):

      pass

    特点:在函数定义阶段就已经赋值了,意味着在调用阶段可以不用为其赋值

  ps: 可以混用位置形参与默认形参,但是位置形参必须在前

  默认形参需要注意的问题是:

    1、默认形参的值只在函数定义阶段被赋值一次

    2、默认形参的值通常应该是不可变类型

  位置实参:在函数调用阶段按照从左到右的顺序依次传入的值,称之为位置实参

  特点:按照顺序与形参一一对应

  关键字实参:在函数调用阶段按照key=value的格式传入的值,称之为关键字实参

  特点:可以打乱顺序,但是仍然能够为指定的形参赋值

  ps:可以混用位置实参与关键字实参,但是

    1、位置实参必须在关键字实参前

    2、不能为同一个形参重复赋值

*与**在形参与实参中的应用

  可变长的参数:可变长指的是在函数调用阶段,实参的个数不固定,而实参是为形参赋值的,所以对应着必须要有一种特殊格式的形参能用来接收溢出的形参

  形参中带*,*会接受溢出的位置实参,然后将其组成元组,并赋值给紧跟其后的变量名

    def func(*args):

      pass

  形参中带**,**会接收溢出的关键字实参,然后将其存成字典,并赋值给紧跟其后的变量名

    def func(**kwargs):

      pass

  实参中带*,*后跟的必须是一个可以被for循环遍历的类型

    def func(x,y,z):

      pass

    func(*[1,2,3])

  实参中带**,**后跟的必须是一个字典

    def func(x,y,z):

      pass

    func(**{'k1':1,'k2':2})

posted @ 2021-03-25 19:15  ╰╮  阅读(29)  评论(0)    收藏  举报