可变长的参数 函数参数总结 函数对象 函数嵌套 名称空间与作用域

一.可变长的参数
可变长指的是参数的个数不固定
站在实参的角度,实参是为了给形参复制的,如果实参的个数不固定,那么必须要有对应的形参来接收溢出的实参
1.在形参中出现和**
1.1 形参中出现
,会把多余的普通实参收集起来组成元组,赋值给后面的形参名
1.2 形参中出现**,会把多余的关键字实参收集起来组成字典,赋值给**后的形参名
2.在实参中出现
和**
2.1 实参中出现*,会将后的可迭代数据打散成普通实参
2.2 实参中出现**,会将**后的字典打散成关键字实参
3.形参中,在
和**之间出现的是命名关键字形参,特点:必须要有关键字实参给其赋值,命名关键字参数可以是默认形参的形式
二.函数参数总结
参数分为形参和实参两种
形参:在函数定义阶段的参数,顺序 位置形参,默认形参,普通收集参数,命名关键字形参,关键字收集参数
实参:在函数调用阶段的参数,顺序:位置实参,关键字实参

  • 在定义处用来收集多余普通实参,返回元组
  • *在定义处用来收集多余的关键字实参,返回字典
    在调用处用来打散后的可迭代数据,变成普通实参
    在调用处用来打散后的字典,变成关键字实参
    三. 函数对象
    函数对象指的是函数可以当做变量使用
    def foo():
    print(‘from foo’)
    1.可以被赋值
    f = foo
    f()
    2.可以当做一个参数传给函数
    def bar(func):
    print(func)
    func()
    bar(foo)
    3.可以当做函数的返回值
    def bar():
    return foo

4.可以当做容器中的元素
lst = [foo]
四.函数嵌套
函数的嵌套使用:正常情况下,内函数只能在函数内部调用
闭包函数:内函数使用了外函数的变量,并且被外函数返回
def circle(radius,mode=0):
def perimiter(radius):
return 2 * pi * radius
def area(radius):
return pi * (radius ** 2)
if mode == 0:
return perimiter(radius)
elif mode == 1:
return area(radius)
res1=circle(3,0)
res2=circle(3,1)
print(res1)
print(res2)

五.名称空间和作用域
名称空间:存放名字的地方
1.内置名称空间:存放的是内置的名字,如print\len等
生命周期:解释器启动则产生,解释器关闭则销毁
2.全局名称空间:存放的是全局变量的名字,
生命周期:python程序运行时产生,python程序结束则销毁
3.局部名称空间:存放的是局部变量的名字
生命周期:调用函数时产生,函数调用结束后销毁
4.名字查找优先级
从当前位置往外查找,如果当前在局部:局部名称空间==>全局名称空间==>内置名称空间
从当前位置往外查找,如果当前在全局:全局名称空间==>内置名称空间
ps:名称空间的嵌套关系是在函数定义阶段就固定死的,与函数的调用位置无关

5.全局范围/全局作用域:内置名称空间+全局名称空间
特点:全局存活,全局有效
局部范围/局部作用域:局部名称空间
特点:临时存活,局部有效
6.修改全局变量:global
修改局部变量 nonlocal

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值