Python进阶(二)----函数参数,作用域
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() 等 内置函数
五丶取值顺序加载顺序
加载:
指的是加载到内存
加载顺序:
Python进阶(二)----函数参数,作用域的更多相关文章
- Python进阶(三)----函数名,作用域,名称空间,f-string,可迭代对象,迭代器
Python进阶(三)----函数名,作用域,名称空间,f-string,可迭代对象,迭代器 一丶关键字:global,nonlocal global 声明全局变量: 1. 可以在局部作用域声明一 ...
- python学习day10 函数Ⅱ(参数&作用域)
函数Ⅱ(参数&作用域) 知识小结: py2与py3的区别 逻辑运算()>not>and>or 字符串翻转切片翻转 is与==区别 git相关 数据类型判断 操作系统:cent ...
- Python进阶(七)----带参数的装饰器,多个装饰器修饰同一个函数和递归简单案例(斐波那契数列)
Python进阶(七)----带参数的装饰器,多个装饰器修饰同一个函数和递归简单案例(斐波那契数列) 一丶带参数的装饰器 def wrapper_out(pt): def wrapper(func): ...
- python函数进阶(函数参数、返回值、递归函数)
函数进阶 目标 函数参数和返回值的作用 函数的返回值 进阶 函数的参数 进阶 递归函数 01. 函数参数和返回值的作用 函数根据 有没有参数 以及 有没有返回值,可以 相互组合,一共有 4 种 组合形 ...
- Python进阶(一)----函数
Python进阶(一)----函数初识 一丶函数的初识 什么函数: 函数是以功能为导向.一个函数封装一个功能 函数的优点: 1.减少代码的重复性, 2.增强了代码的可读性 二丶函数的结构 ...
- Python学习-函数,函数参数,作用域
一.函数介绍 函数定义:函数时组织好的,可重复使用的,用来实现单一,或相关联功能的代码段. 我们已经知道python提供了许多内建函数,print(), type()等.我们也可以自己创建函数,这被叫 ...
- python基础之函数参数、嵌套、返回值、对象、命名空间和作用域
函数的使用原则 函数的使用必须遵循:先定义后使用的原则 函数的定义,与变量的定义是相似的,如果没有事先定义函数而直接引用就相当于在引用一个不存在变量名 定义阶段:只检测语法,不执行代码,当出现语法错误 ...
- python基础之函数参数,名称空间,以及函数嵌套
函数进阶内容梗概: 1. 函数参数--动态传参 2. 名称空间, 局部名称空间, 全局名称空间, 作⽤用域, 加载顺序. 3. 函数的嵌套 4. gloabal , nonlocal 关键字 1. 函 ...
- Python学习笔记 - 函数参数
>>> def power(x): ... return x * x ... >>> power(5) 25 >>> def power(x, n ...
随机推荐
- python seleium 鼠标操作
vedio = driver.find_element_by_xpath("//div[@class='echart-line-box']//div")ActionChains(d ...
- android细节之android.intent.category.DEFAULT的使用
我们知道,实现android的Activity之间相互跳转需要用到Intent, Intent又分为显式Intent和隐式Intent, 显式Intent很简单,比如我在FirstActivity中想 ...
- 时间管理GTD
时间管理—重要紧急四象限法则https://www.jianshu.com/p/30b2ab0dc20e<番茄工作法图解>—— 让你的工作高效起来https://www.jianshu.c ...
- RockBrain USB Server外设虚拟化高可用解决方案(银企直联虚拟化解决方案)
技术指标: 单.双千兆网络界面(支持链路冗余与链路热备.支持双网口均衡负载) 原生USB2.0接口(USB2.0与USB3.0接口均对所有USB版本设备兼容,支持混插) 技术优势: RockBrain ...
- ThinkPHP中文字段问题
转自: https://www.baidu.com/link?url=Ohc9epgQgkNYLwnHqP-jZ9RfIQWW50-iz8-ZMIPLdtCIJHnUpYwQnDLmXzi7Fa110 ...
- 荔枝派nano例子
买回来,先短接flash芯片的14脚,然后上电,再断开14脚,开始怎么折腾都不行,最后发现是android线的问题,换成jlink ob送的android线就能找到设备了,真崩溃 lsusb,应该能看 ...
- android7/8新特性 画中画、shortcut和分屏模式
多窗口 在android7.0中原生提供了多窗口模式和画中画模式,多窗口模式将屏幕分为上下或左右两块区域分别显示两个应用,画中画模式主要应用在android TV中,类似于windows中的多窗口. ...
- C#实现通过HttpWebRequest发送POST请求实现网站自动登陆
C#实现通过HttpWebRequest发送POST请求实现网站自动登陆 怎样通过HttpWebRequest 发送 POST 请求到一个网页服务器?例如编写个程序实现自动用户登录,自动提交表单数 ...
- GIT删除本地tag和远程tag
以tag test为例,这个tag已经同步到远程,但是现在发现了一个问题,需要撤回该tag,git命令如下: 删除本地tag: git tag -d test 删除远程tag: git push or ...
- OpenShift 4.2 Service Mesh
1.和社区版Istio的区别 OpenShift 4.2的Service Mesh和upstream的Istio项目的增强,除了产品化之外,借用官方文档,区别在于: Red Hat OpenShift ...