python3 函数function
Posted hyc-blog
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python3 函数function相关的知识,希望对你有一定的参考价值。
def function(arg):
pass
作用域:
作用域就是当程序在处理变量时,存放变量名的空间,也叫做命名空间;当class def时,才会生产局部作用域,if,for,while,try这些是语句块,不会产生局部作用域 ;全局变量只能以只读的方式被局部作用域访问,如果想在局部作用域创建或修改全局变量,应使用global声明;查找变量优先级:局部作用域>嵌套作用域(闭包)>全局作用域;
位置参数:
定义了位置参数,则传参时是不可缺少的,并且顺序对应;
默认参数:
创建函数时,可以直接为参数指定默认的数值,默认参数必须指向不可变对象;
可变参数:
用*定义可变参数,可变参数可以传入0个或任意个参数,这些参数被调用时会自动封装为一个tuple;如果有一个要被传入的参数L是list或tuple,可以*L形式传入;
def f(*args): pass f(1,‘a‘,True)
L=[1,2,3,4]
f(*L)
关键字参数:
用**定义关键字参数,关键字参数可以传入0个或任意个带有参数名的参数,参数会被封装为一个dict,如果有一个要被传入的参数D时dict,可以**D形式传入;
def f(**kw): name=name age=age f(name=‘‘alice,age=18) D={"name":"alice","age":18} f(**D)
命名关键字参数:
在参数前以*标记,如果前面有可变参数则可省略*;
def f(*,name): pass def f(*args,name): //*args为可变参数 pass
组合参数:参数为固定顺序,(位置参数,默认参数,可变参数,命名关键字参数,关键字参数)
递归函数:
函数调用了自己本身就为递归,大量的递归会产生栈溢出,尾递归可以解决栈溢出,但python还是会溢出;
闭包:
就是函数里面又定义了一个函数,子函数可以调用父函数中的参数、变量;储存其所在作用域的函数;
以上是关于python3 函数function的主要内容,如果未能解决你的问题,请参考以下文章