Python进阶(二)----函数参数,作用域

一丶形参角度:*args,动态位置传参,**kwargs,动态关键字传参

*args:

​ 动态位置参数. 在函数定义时, * 将实参角度的位置参数聚合在一起

​ 解决实参传递多个位置参数,用*args全部接收,得到元组类型的数据

#定义一个 动态位置参数
def eat(*args):
print(args) # 得到元组数据
print(f'{args}')
eat('a','b','c') # 动态位置参数的应用,从实参传来多个位置参数,求和.
def func(*args):
count=0
for i in args:
count+=i
return count
print(func(1,2,3,4,5,6,7)) ######## 番外篇 #############
# *args 不能接收,实参关键字参数
def func(*args):
print(args)
func(name='aelx')

**kwargs:

​ 函数的定义时: ** 将实参角度的关键字参数 聚合成一个字典

​ 解决实参传递多个关键字参数

#定义 **kwargs
def func(**kwargs): # 聚合成一个字典
print(kwargs)
func(name='alex',age=86,sex='男') #不能以数字为关键字参数的名字,否则会造成语法错误

​ ###无敌组合接参数,*args **kwargs.

### 无敌接参  ,万能参数
def func(*args,**kwargs):
print(args,kwargs)
func(1,2,3,4,name='alex',price='1000')

二丶函数中 * 的用法

####  * 的特殊用法(函数之外也可以)
def func(*args,**kwargs): # * 聚合成元组类型数据
print(args)
print(kwargs) li=[1,2,3]
l=['五四','等哈','大声']
func(*li,*l) #当函数执行的时候,*iterable代表打散, #### ** 的特殊用法
def func(**kwargs): #聚合成字典类型数据 ,聚合成字典的键是字符串格式
print(kwargs)
func(**{'name':'alex'},**{'sex':'男'}) #当函数执行的时候, **dict代表打散,不能是数字作为字典的键名 ####番外篇####
def func(**kwargs):
print(kwargs) func(**{'1':2}) # {'1': 2}
# func(k1=1) # k1是字符串 {'k1': 1}
# func(k2='v2') #{'k2': 'v2'} ###经典例题 ,组合参数####
def foo(a,b,*args,c,sex=None,**kwargs):
print(a,b)
print(c)
print(sex)
print(args)
print(kwargs) foo(*[1, 2, 3, 4],**{'name':'太白','c':12,'sex':'女'})
# a b ---> 1 ,2 位置参数 , 一 一对应
# c 12 ---> 字典打散后 c=12
#sex 女 ----> 字典打散后 sex='女'
#args (3,4) --->列表打散后 3,4是位置参数, 被*args聚合(3,4)
#kwargs{'name':'太白'} ----> 字典打散后 name='太白' ########函数之外: *变量 序列解包 .处理剩余元素, 都会转成列表格式 a,b,*c=[1,2,4,5,6,7] # a=1 b=2 c=[4,5,6,7]
print(a,b,c) a,*c,b=[1,2,4,5,6,7] # a=1 ,b=7 ,c=[2, 4, 5, 6]
print(a,b,c) a,*c=range(5) # a=0 c=[1, 2, 3, 4]
print(a,c) a,*c=(1,2,3,4,5) # a=1 c=[2, 3, 4, 5]
print(a,c) a,b,*c='abcd' # a=a b=b c=['c', 'd']
print(a,b,c) a,*c,b='abcd' # a=a b=d c=['b', 'c']
print(a,b,c)

三丶形参角度的最终顺序

#### 位置参数   >   *args   >  默认参数  > 仅限关键字参数 >  **kwargs  (最重要!!!)

##形参角度,仅限关键参数 ,位置:在  **kwarg之前 , *args 之后
def func(a,b,c,*args,sex='man',f,**kwargs):
print(f)
func(1,2,3,4,5,6,f='111',name='alex')

四丶空间

全局名称空间:

​ 存放的是执行.py文件(取出函数内部)的所有的变量与值(地址)的对应关系,整个py文件结束之后,才会消失

临时(局部)名称空间:

​ 函数执行时,在内存中临时开辟的一个空间,存放的函数中的便令与之的对应关系,随着函数的结束而消失

​ 注意:只有函数被调用时,局部空间才会被创建,函数执行完.局部空间就销毁

内置名称空间:

​ print(),input() 等 内置函数

五丶取值顺序加载顺序

加载:

​ 指的是加载到内存

加载顺序:

最新文章

  1. c++ boost asio库初学习
  2. iOS常用 --- NSDictionary 与 NSMutableDictionary
  3. web前端学习笔记(CSS盒子的定位)
  4. 使用code标签获得类似代码段的效果
  5. POJ1226:Substrings(后缀数组)
  6. Sql Server Profiler跟踪死锁
  7. 【设计模式 - 10】之外观模式(Facade)
  8. 图铭Android平台银行卡号识别系统
  9. hdu 1035 Robot Motion(模拟)
  10. javascript 验证身份证
  11. 关于已经安装python为何还要安装python-dev
  12. Android - 传统蓝牙(蓝牙2.0)
  13. 浅析const、let与var
  14. (贪心)nyoj91-阶乘之和
  15. SQL注入检测
  16. GUI设计和UI设计有什么区别?
  17. el取bean 对象属性规则
  18. C语言注意点汇总
  19. Python实现屏幕截图的两种方式
  20. 12 jmeter性能测试实战--web程序

热门文章

  1. [技术博客]react native事件监听、与原生通信——实现对通知消息的响应
  2. tinylib
  3. Video Architecture Search
  4. 2019t1_sumdoc_list.txt aa.docx acc baidu v2 sbb.docx Acc jindon v2 sbb.docx assetsList.html Atiitt 日本刑法典读后笔记.docx Atiti 遇到说花心的时候赞美应对.docx Atitit lesson.docx Atitit malye主义、mzd思想和dsp理论的区别和联系.docx Ati
  5. HandlerMethodArgumentResolver SpringMVC 参数解析 继承关系以及各解析器解析类型
  6. C#中如何获取系统文件及操作系统的环境变量等
  7. resources-plugin-2.6.pom.part.lock (没有那个文件或目录)
  8. php 身份证验证类
  9. python中的__futrue__模块,以及unicode_literals模块
  10. UE4 常用数学