函数进阶

该博客围绕Python函数展开,介绍了函数的传参,包括动态传参,阐述了*的用法,说明了形参角度的最终顺序,如位置参数、*args等。还从空间角度研究函数,涉及取值顺序、加载顺序、作用域,以及内置函数和高阶函数(嵌套函数)等内容。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.函数的传参

动态传参

*args   定义一个函数时,*所有的位置参数聚合到一个元祖
**kwargs  **将实参角度所有的关键字参数聚合成了一个字典
def func(*args,**kwargs)   万能参数
2.*的魔性用法
形参中  =>  聚合
函数执行  =>  打散
def func(*args,**kwargs):
    print(args)
    print(kwargs)
l1=[1,2,3,4]
l2=[5,6,7,8]
func(*l1,*l2)
func(**{"name":"王新磊"},**{"hobby":"唱跳rap篮球"})
函数外  =>  处理剩余元素
a,b,*c = [1,2,3,4,5]
a=1 b=2 c=3,4,5
a,*c,b = [1,2,3,4,5]
a=1 b=5 c=2,3,4
a,*c = range(5)
a=0 c=1,2,3,4
a,*c,b = (1,2,3,4,5)
a=1 b=5 c=2,3,4
3.形参角度的最终顺序

位置参数,*args,默认参数,仅限关键字参数,**kwargs

4.从空间角度研究函数
全局名称空间:py文件运行时开辟的,存放的是执行的py文件(除去函数内部)的所有变量与值(地址)的对应关系。整个py文件结束之后,才会消失。
临时(局部)名称空间:函数执行时,在内存中临时开辟的一个空间,存放的函数中的变量与值的对应关系,随着函数的结束而消失。
内置名称空间:input,print等内置函数
5.取值顺序加载顺序
加载顺序:内置名称空间 => 全局名称空间 => 局部名称空间(函数执行时)
取值顺序:局部名称空间 => 全局名称空间 => 内置名称空间(就近原则)
6.作用域
全局作用域:全局名称空间,内置名称空间
局部作用域:局部名称空间
7.内置函数
globals()  =>  全局作用域所有的内容
locals()  =>  当前位置的变量与值得对应关系
8.高阶函数(嵌套函数)
def fun2():
    print(2)
    def func3():
        print(6)
    print(4)
    func3()
    print(8)

print(3)
fun2()
print(5)

转载于:https://www.cnblogs.com/wxl1025/p/11049059.html