python全栈脱产第9天------定义函数的形式、调用函数的形式、函数的返回值、函数参数

一、定义函数的的三种形式

  1.无参函数:函数不需要传参数

  2.有参函数:函数需要传递参数来运行

  3.空函数:函数内容为空,用pass代替,主要用于构思阶段

二、调用函数的三种形式

  1.语句形式

  def foo():

    print('hello world')

  foo()

  2.表达式形式

  def foo(x,y):

    res=x+y

    return res

  print(foo(1,2))

  3.可以当做参数传给另一个函数

  def max1(x,y):

    if x>y:

      return x

    else:

      return y

  print(max1(1,2),3)

三、函数的返回值

  注意点:1.返回值没有类型限制

      2.返回值没有个数限制:(1)返回一个值:调用函数拿到的结果就是一个值

                 (2)返回多个值:调用函数拿到的结果是一个元组

                 (3)返回0个值,或是不写return:调用函数的结果就是None

  return关键字:return是函数结束的标志,函数内可以有多个return,但只要执行一次,整个函数就结束

四、函数参数的

  形参:指的是定义函数阶段括号内指定变量名,即形参本质就是“变量名”

  实参:指的是调用函数阶段括号内传入的值,即实参本质就是“值”

  形参与实参的关系:在调用函数时,会将实参赋值给形参,这种绑定关系在函数调用时临时生效,在调用结束后就失效了

  形参与实参的具体分类:1.位置形参:在定义函数阶段按照从左到右的顺序依次定义的形参,称之为位置形参

                注意:按照位置形参定义,必须被传值,不能多或者少

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

                注意:按照位置定义的实参,会与形参一一对应

             3.关键字参数(关键字实参):在调用阶段,按照key=value的形式指名道姓地为形参传值

                注意:1.可以完全打乱顺序,但仍然能只能为指定的形参传值

                   2.可以混合使用位置实参与关键字实参,但是要注意:位置实参必须要放到关键字实参的前面;不能对一个形参重复赋值

  默认参数:指的是定义在函数阶段,就已经为某个形参赋值了,改形参为有默认值的形参,简称默认形参

       注意:1.在定义阶段已经被赋值,意味着在调用阶段可以不用为其赋值

          2.位置形参应该放在默认参数前面

          3.默认参数的值在函数定义阶段已经固定

          4.默认参数的值通常应该是不可变类型

  位置形参VS默认形参:对于大多数情况下,传的值都是不相同的,应该定义为位置形参

             对于大多数情况下,传的值都是相同的,应该定义为默认形参

  可变长度的参数:站在实参的角度,参数长度可变指的是在调用函数时,传入的实参值的个数不固定

          而实参的定义方式无法两种:位置实参,关键字实参,对应着形参也必须有两种解决方案*与**类,分别应对溢出的位置实参与关键字实参

          1.在形参中*:会将调用函数时溢出位置实参保存成元组的形式,然后赋值*后的变量名

          2.在实参中带*:但凡在实参中带*的,在传值前,都先将其打散成位置参数,再进行赋值

          3.在形参中带**:会将调用函数时溢出的关键字实参保存成字典的形式,然后赋值**后的变量名

          4.在实参中带**:但凡在实参中带**的,在传值前都先将其打散成关键字实参,在进行赋值

          5.规范:在形参中带*与**的,*后的变量名应该是args,**后的变量名应该是kwargs

  命名关键字参数:放到*和**之间的参数称为命名关键字参数  注意:命名关键字参数必须是key=value的形式传值

 

posted on 2018-08-07 08:04  周毅  阅读(119)  评论(0编辑  收藏  举报