函数的第二节课,动态传参,动态关键字参数,作用域,关键字global和nonlocal

Posted asdlo

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了函数的第二节课,动态传参,动态关键字参数,作用域,关键字global和nonlocal相关的知识,希望对你有一定的参考价值。

今日内容总结:

一.函数参数--动态传参
动态参数必须是在位置参数后面,比如:
def chi(a,b,*food):
print("我要吃",a,b,food)
chi("大米饭","小米饭","黄瓜","西红柿")

默认值参数必须是在最后位置,比如:
def chi(a,b,*food,c="馒头"):
print(a,b,food,c)
chi("香蕉", "菠萝")
chi("香蕉", "菠萝","葫芦娃")
chi("香蕉", "菠萝","葫芦娃", "口罩")

顺序: 位置参数, 动态参数*, 默认值参数.

动态关键字参数,现在是一个dict,比如:
def func(**kwargs):
print(kwargs)
func(a=1,b=2,c=3)

最终顺序: 位置参数 > *args动态参数 > 默认值参数 > **kwargs动态关键字参数

# fun(*lst)
# s = "臣妾做不到"
# fun(*s)
#元祖打散

# def fun(**kwargs):
# print(kwargs)
# dic = {‘a‘:1, ‘b‘:2}
# fun(**dic)
# 字典打散

二.名称空间,局部,全局,作用域,加载顺序
给存放名字和值的关系的空间起一个名字叫 命名空间,变量在存储的时候就是存储在这片空间中的.
命名空间分类:
1全局命名空间 直接在py文件中,函数外声名的变量都属于全局命名空间
2局部命名空间 在函数中声名的变量会放在局部空间
3内置命名空间 存放python解释器为我们提供的名字.

作用域:
顶格的是全局作用域.
在全局作用域里 后面的,是局部作用域.
globals,可以查看全局作用域里面有哪些东西.
locals,可以查看当前作用域.

三.函数的嵌套
# def fn():
# print(111)
# def fn2():
# print(222)
# fn()
# fn2()
# print() 执行顺序,先调用的先执行,后调用的后执行.
#
# def fu2():
# print(222)
# def fu3():
# print(333)
# print(444)
# fu3()
# print(888)
# print(33)
# fu2()
# print(55) 33 222 444 33 888 55 调用会返回,不调用就会继续往下执行.

四.关键字global和nonlocal

global表?示. 不再使?用局部作?用域中的内容了了. ?而改?用全局作?用域中的变量量
nonlocal 表?示在局部作?用域中, 调?用?父级命名空间中的变量量.







































































以上是关于函数的第二节课,动态传参,动态关键字参数,作用域,关键字global和nonlocal的主要内容,如果未能解决你的问题,请参考以下文章

python-函数进阶-动态传参,名称空间,作用域的问题

动态传参(*args **kwargs 无敌传参) 作用域globals locals和名称空间 函数的嵌套 关键字nonlcas global

python函数的动态传参.作用域与命名空间

10 函数进阶 动态传参 作用域和名称空间 函数的嵌套 全局变量

动态传参,作用域和函数嵌套

Python基础day10