第十天
万能参数:*args
接受位置参数
约定俗称:args
" * " 函数定义时, * 代表聚合
她将所有的位置参数 聚合 成一个元组,赋值给了args
形参角度的参数顺序
*args 的位置?
def func(a,b,sex="男",*args):
def func(a,b,sex="男",*args):
print(a,b)
print(sex)
print(args)
func(1,2,3,4,5,6,7)
# sex=3
def func(a,b,*args,sex="男"):
print(a,b)
print(sex)
print(args)
func(1,2,3,4,5,6,7,sex="女")
女
# args (3, 4, 5, 6, 7)
关键字参数 **kwargs
接受关键字参数
**将所有的关键字参数聚合到一个字典中,将这个字典赋值给了kwargs
**kwargs的位置?
def func(a,b,*args,sex="男",**kwargs):
print(a,b)
print(sex)
print(args)
print(kwargs)
func(1,2,3,4,5,6,7,sex="女",name="333")
#1 2
女
(3, 4, 5, 6, 7)
{'name': '333'}
#* 在函数调用时,*代表打散 可迭代对象
#* * 在函数调用时,* * 代表打散 打散字典
def func(*args):
print(args)
# *在函数调用时,*代表打散
func([1,2,3],[22,33])
# ([1, 2, 3], [22, 33])
func(*"456456465465",*"asyudiyasuidyasi")
# ('4', '5', '6', '4', '5', '6', '4', '6', '5', '4', '6', '5', 'a', 's', 'y', 'u', 'd', 'i', 'y', 'a', 's', 'u', 'i', 'd', 'y', 'a', 's', 'i')
func(*[1,2,3],*[22,33])
# (1, 2, 3, 22, 33)
func(1,2,3,22,33)
# (1, 2, 3, 22, 33)
# 可迭代对象都可以 字符串也可以
# 后两个相等
def func(*args,**kwargs):
print(args)
print(kwargs)
func(**{"name":"太白"},**{"age":18})
两个* 打散字典
#{'name': '太白', 'age': 18}
def func(*args,**kwargs):
print(args)
print(kwargs)
func(*{"name":"太白"},*{"age":18})
一个* 只读取 键 key 打散 赋值给 args
#('name', 'age')
#{}
名称空间;命名空间.
创建一个函数,解释器只是把函数名读入内存,表示这个函数存在了,
至于函数内部的变量和逻辑,解释器不关心, 一开始只是加载进来,仅此而已,
只有当函数被调用和访问的时候,解释器才会根据内部声明的变量来开辟变量的内部空间
函数执行完毕,内部变量占用的空间也随之释放掉了
全局命名空间 当前py文件
整个文件里面变量的对应关系
局部命名空间 函数,函数执行时才会开辟
函数中的变量的对应关系
内置命名空间 builtins.py
python给你提供的一些内置函数 print input
print(666)
加载顺序:
内置--->
全局--->
局部名称空间(函数执行时)
取值顺序:(就近原则)
name= "他白"
def func():
name="alex"
print(name)
func()
(从局部找)局部名称空间-->
全局名称空间-->
内置命名空间
(不可逆)
作用域
全局作用域:内置名称空间 全局名称空间
局部作用域 : 局部名称空间
局部 作用域 可以引用 全局 作用域 ,不能改变
局部 作用域 不能改变 全局 作用域 的变量,当 python解释器读取到局部作用域时,发现了你对一个变量进行修改操作,解释器会认为你在局部已经定义过这个局部变量了,他就从局部照这个局部变量,报错了.
count=1
def fuc()
count+=2
print(count)
func()
报错
def func()
count=1
def inner():
print(count)
inner()
func()
就近原则 局部变量2 使用局部1 的 但是不能改变
高阶函数
多层函数的 执行顺序
内置函数
本文件:
globals() #返回的是字典,字典的键值对是 全局作用域 的所有内容
locals() #返回的是字典,字典的键值对是 当前作用域 的所有内容
对代码有疑问欢迎交流
一个python爱好者 :
微信:at8685b

浙公网安备 33010602011771号