python入门之函数

函数

1.定义格式:

  def abc(形式参数1,形式参数2,...):

    return "ij2f98sdf9dff"

    函数里设置返回值,然后函数调用可以直接赋值,赋的值是返回值,若没有设置返回值,默认是None

  def abc(形式参数=123)

    默认参数,调用时不传参就用默认123

  def abc(参数1,参数2=123)

    没有默认的参数要放在有默认的前面,不然语法会报错

  调用函数传的参数可以是字符串,列表,等和其他数据类型

 

2.执行格式:

  a = abc(实际参数1,实际参数2,...)

    执行时按照顺序传参

  a = abc(形参2=实参2,...)

    执行时指定传参,可以不按顺序传参

  注意:如果指定传参和顺序传参混合使用,那么指定传参不能写在顺序传参前面,而且顺序传参了后,后面的指定传参不能写重复的形参,例如abc(实参1,形参1=实参2)

 

3.动态参数:

格式:

  def abc(*a)

    在形参前面加一个*号,这样变成动态参数,调用的时候可以传多个参数,传入后a变成了以传入参数为各元素的元组

  def abc(**aa)

    在形参前面加两个*号,这样也是动态参数,调用传参格式是abc(k1=123,k2=456,...),这样传入后a变成了一个字典

  def abc(*a,**aa)

    两种动态参数结合,两种传参都可以使用,,但是写法要求*a要在**a的前面。当然在最前面加一个形式参数也是可以的

  def abc(*args,**kwargs)

    一般动态参数是这样命名的,当然用其他表示也没错

 

4.动态传列表、元组、字典:

  传入列表(元组)li

  abc(li)

    li传入,把这个列表整体作为元组的一个元素

  abc(*li)

    这样传入参数,是将列表里的每个元素作为元组的各个元素组成元组

  传入字典dic

  abc(**dic)

    不加*会报错,因为两*的传入格式是如同key=value的,所以在传入字典时前面加**就可以将字典传入进去

 

5.全局变量和局部变量:

  若在局部里(定义的函数里)修改全局变量,则要在局部修改语句前添加一语句:global 变量名

  全局变量都用大写,局部变量都用小写,这样好区分

 

补充

  函数作为参数

  >>>def f(arg):

       arg()

  >>>def x():

       print("xxxxx")

 

  >>>f(x)

posted @ 2018-10-28 15:58  _chy  阅读(196)  评论(0编辑  收藏  举报