单词
func
args
kwargs
globals
locals
万能参数,仅限关键字参数
# 万能参数: *args, 约定俗称:args,
# 函数定义时,*代表聚合。 他将所有的位置参数聚合成一个元组,赋值给了 args。
# 写一个函数:计算你传入函数的所有的数字的和。
# def func(*args):
# count = 0
# for i in args:
# count += i
# return count
# print(func(1,2,3,4,5,6,7))
# **kwargs
# 函数的定义时: ** 将所有的关键字参数聚合到一个字典中,将这个字典赋值给了kwargs.
# 形参角度:仅限关键字参数 (了解) 可以在默认参数前也可以在后面 一定要传参数,不传报错
# 形参角度最终的顺序:位置参数,*args,默认参数,仅限关键字参数,**kwargs
# *的魔性用法
# **在函数的调用时,*代表打散。
def func(*args,**kwargs):
print(args) # (1,2,3,22,33)
print(kwargs)
# func(*[1,2,3],*[22,33]) # func(1,2,3,22,33)
# func(*'fjskdfsa',*'fkjdsal') # func(1,2,3,22,33)
func(**{'name': '太白'},**{'age': 18}) #func(name='太白',age='18')
*的魔性用法。
# *在函数的调用时,*代表打散。
**{'name': '太白'}打散为name='太白'
*[1,2,3]打散为1,2,3
# 函数外:处理剩余元素
# a,b,*c = [1,2,3,4,5]
# a,*c,b, = [1,2,3,4,5]
# a,*c = range(5)
# a,*c,b = (1,2,3,4,5,6)
# print(a,c,b)
名称空间作用域
# 内置名称空间:python源码给你提供的一些内置的函数,print input
# python分为三个空间:
# 内置名称空间(builtins.py)
# 全局名称空间(当前py文件)
# 局部名称空间(函数,函数执行时才开辟)
# 加载顺序:
# 内置名称空间 ---> 全局名称空间 ----> 局部名称空间(函数执行时)
# 取值顺序(就近原则) 单向不可逆
# (从局部找时)局部名称空间 ---> 全局名称空间 ---> 内置名称名称空间
# 作用域:
# 两个作用域:
# 全局作用域 :内置名称空间 全局名称空间
# 局部作用域:局部名称空间(函数等)
# 局部作用域可以引用全局作用域的变量
# 局部作用域不能改变全局变量。 可以使用可以,不能改变
# 注意 python中不可以先引用 后定义
高阶函数
# 就是函数的嵌套
# 例1:
def func1():
print('in func1')
print(3)
def func2():
print('in func2')
print(4)
func1()
print(1)
func2()
print(2)
# in func1 3 1 in func2 4 2
# 例2:
def func1():
print('in func1')
print(3)
def func2():
print('in func2')
func1()
print(4)
print(1)
func2()
print(2)
# 例3:
def fun2():
print(2)
def fun3():
print(6)
print(4)
fun3()
print(8)
print(3)
fun2()
print(5)
内置函数 globals locals
# 内置函数:globals locals
a = 1
b = 2
def func():
name = 'alex'
age = 73
print(globals()) # 返回的是字典:字典里面的键值对:全局作用域的所有内容。
print(locals()) # 返回的是字典:字典里面的键值对:当前作用域的所有的内容。
# print(globals()) # 返回的是字典:字典里面的键值对:全局作用域的所有内容。
# print(locals()) # # 返回的是字典:字典里面的键值对:当前作用域的所有的内容。
func()