*号的应用场景
def sum2(*args):
res=0
for num in args:
res+=num
return res
sum2(1,2,3)
**的应用场景
def sum3(name,age**kwargv)可扩展
补充函数的用法
函数的嵌套调用:在函数内又调用了其他函数
函数内又定义其他函数 函数的嵌套定义
def func1():
print('from func1')
def func2():
print('form func2')
func2()
func1()
名称空间:顾名思义是存放名字的空间,存放名字与绑定值关系的地方
名称空间分为三类
内置名称空间:python解释器内置的名字,字节是器启动时就生效在解释器结束时就失效
全局名称空间:文件级别的名字 非函数内 在执行文件的时候 在文件结束或文件执行期间被删除的
局部名称空间:函数内定义的名字 函数的参数以函数内的名字都存放在局部名称空间 函数调用的生效 函数结束的时候就失效
加载的顺序:内置名称空间☞全局名称空间☞局部名称空间
查找的顺序:局部名称空间☞全局名称空间☞内置名称空间(从当曾的位置依次往上一层寻找)
作用域:发挥作用的范围
作用域的两种区分
全局作用域:在任何位置都能使用,干范围的名字会伴随程序个周期
局部作用域:只能在函数能使用,调用时生效 结束时失效
函数对象
函数在python中的第一类对象
def func():
print('form')
1.可以被引用
x=1
x=y
def name():
print(1)
f=name
f()
2.可以当作参数传入
def name(a):
print(a)
a()
name()
3.可以当作函数的返回值
def name (x):
return x
res=name(func)
res()
4.可以当作容器类型的元素
闭:指的是定义在函数内部的函数
def name():
def age():
return age
f=name()
f()
定义在函数内部,并且该函数包含对外部函数作用域中名字的引用,该函数就称为闭包函数
作用域关系在函数定义阶段就规定死了,与调用位置无关
def name():
print()
x=1
def age():
print('egon',x)
return age
f=name
f()