python3 函数function,,def functi


def function(arg):

pass

作用域:

  作用域就是当程序在处理变量时,存放变量名的空间,也叫做命名空间;当class def时,才会生产局部作用域,if,for,while,try这些是语句块,不会产生局部作用域 ;全局变量只能以只读的方式被局部作用域访问,如果想在局部作用域创建或修改全局变量,应使用global声明;查找变量优先级:局部作用域>嵌套作用域(闭包)>全局作用域;

位置参数:

  定义了位置参数,则传参时是不可缺少的,并且顺序对应;

默认参数:

  创建函数时,可以直接为参数指定默认的数值,默认参数必须指向不可变对象;

可变参数:

  用*定义可变参数,可变参数可以传入0个或任意个参数,这些参数被调用时会自动封装为一个tuple;如果有一个要被传入的参数L是list或tuple,可以*L形式传入;

def f(*args):    passf(1,‘a‘,True)
L=[1,2,3,4]
f(*L)

关键字参数:

  用**定义关键字参数,关键字参数可以传入0个或任意个带有参数名的参数,参数会被封装为一个dict,如果有一个要被传入的参数D时dict,可以**D形式传入;

def f(**kw):    name=name    age=agef(name=‘‘alice,age=18)D={"name":"alice","age":18}f(**D)

命名关键字参数:

  在参数前以*标记,如果前面有可变参数则可省略*;

def f(*,name):    passdef f(*args,name):  //*args为可变参数    pass

组合参数:参数为固定顺序,(位置参数,默认参数,可变参数,命名关键字参数,关键字参数)

递归函数:

  函数调用了自己本身就为递归,大量的递归会产生栈溢出,尾递归可以解决栈溢出,但python还是会溢出;

闭包:

  就是函数里面又定义了一个函数,子函数可以调用父函数中的参数、变量;储存其所在作用域的函数;

python3 函数function

评论关闭