python27期day10:函数的动态参数、函数的注释、函数的名称空间、函数的嵌套、global(修改全局的)、nonlocal(修改局部的)、函数名的第一类对象及使用、作业题。

1、动态参数的作用:

能够接收不固定长度参数

位置参数过多时可以使用动态参数

* args是程序员之间约定俗称(可以更换但是不建议更换)

* args获取的是一个元组

** kwargs获取的是一个字典

* args只接受多余的位置参数

** kwargs只接受多余的动态关键字参数/可变关键字参数

def func(*args):    #形参位置上的*是聚合
print(*args) #函数体中的*就是打散
print(args)
func(1,2,3)
结果:1 2 3
  (1,2,3)
函数的参数优先级:位置参数 > 动态位置参数(可变位置参数) > 默认参数 > 动态关键字参数(可变关键字参数)
def func(a,b,m = 8,*args,**kwargs):
print(a,b,m,args,kwargs)
func(1,2,5,c=10)
结果:1 2 5 () {'c': 10}
万能参数:
def func(*args,**kwargs):
print(args,kwargs)
func(12,2,121,12,321,3,a = 1,b = 4)
结果:(12, 2, 121, 12, 321, 3) {'a': 1, 'b': 4}
打散 and 聚合 and 打散:
lst = [1,2,3,4,6,7]
def func(*args): #形参位置上加*是聚合
print(*args) #函数体中加*是打散
func(*lst) #调用函数中加*是打散
结果:1 2 3 4 6 7
2、josn 数据和字典长得一模一样
3、函数的注释:给别人看的、三个双引号敲回车:
注释写法一:
def add(a,b):
"""
数字的加法运算
:param a: int
:param b: int
:return: int
"""
return a + b
print(add(1,2))
结果:3
注释写法二:
def add(a:int,b:int):   #提示的int没有做到约束
"""
加法
:param a:
:param b:
:return:
"""
return a + b
print(add("a","b"))
结果:ab
4、查看函数的注释:print(add.__doc__)
结果:
  加法
  :param a:
  :param a:
  :return :
5、查看函数的名字:print(add.__name__)
结果:add
6、名称空间:
内置空间:存放python自带一些函数
全局空间:当前py文件顶格编写的代码开辟的空间
局部空间:函数开辟的空间
程序加载顺序:内置空间 > 全局空间 > 局部空间
程序取值顺序:局部空间 > 全局空间 > 内置空间
7、查找图解:

8、作用域:
全局作用域:内置 + 全局  globals按位置查看全局作用域下开辟的空间、结果是字典形式。
局部作用域:局部      locals查看当前作用域(建议查看局部)
a = 10
def func():
b = 5
print(locals())
print(globals())

猜你喜欢

转载自www.cnblogs.com/zhang-da/p/11622867.html