函数补充:动态参数,函数嵌套,global与nonlocal关键
一丶动态参数
1.*args 位置参数,动态传参
def func(*food):
print(food) print(func("米饭","馒头","福建人","犹太人"))
将所有的位置参数都赋给*food
2.**kwargs 关键字参数,动态传参
# 关键字的动态传参
def eat(**food):
print(food)
print(eat(广东人= "福建人",goodeat = "饼干",我的天="飞天"))
将关键字参数,以字典的形式赋给**food
3.默认参数与动态参数的关系
如果以位置参数,关键字参数,默认参数排列会报错,我们改一下默认参数的位置,发现只有在位置参数后面,关键字参数前面,默认参数才不会报错
def func(*name,gender="男",**hobby):
print(name,hobby,gender)
print(func("周杰伦","谢霆锋","吴京",hobby1="看电影",hobby2="唱歌"))
总结一下顺序:
位置参数>*args>默认值参数>**kwargs
如果想接收所有参数,可以用*arge 和 **kwargs组合
def trans_para(*args,**kwargs):
print(args)
print(kwargs)
trans_para("jinxin",12,[1,2,3,4],[3,4,],(1,4,7),{"a":"","c":456},country="china")
二丶命名空间
在python解释器开始执行之后,就会在内存中开辟一个空间,每当遇到一个变量的时候,就把变量名和值之间的关系记录下来,但是当遇到函数定义的时候,解释器只是把函数名读入内存,表示这个函数存在了,至于函数内部的变量和逻辑,解释器是不关心的,也就是说一开始的时候函数只是加载进来,仅此而已,只有当函数被调用和访问的时候,解释器才会根据函数内部声明的变量来进行开辟变量的内部空间,随着函数执行完毕,这些函数内部变量占用的空间也会随着函数的执行完毕而被清空.
a = 10
def func():
a = 20 #当函数运行完毕,函数里面的a=20所占空间自动释放,不存在了
func()
print(a) #输出的是10
我们给存放名字和值的关系的空间起一个名字叫:命名空间,我们的变量在存储的时候就是存储在这片空间中的.
命名空间分类:
1.全局命名空间:--->我们直接在py文件中,函数外声明的变量都属于全局命名空间
2.局部命名空间---->在函数中声明的变量会放在局部命名空间
3.内置命名空间:---->存放在python解释器为我们提供的名字,list,tuple,str,int这些都是内置命名空间
加载顺序:
1.内置命名空间
2.全局命名空间
3.局部命名空间(函数被执行的时候)
取值顺序:
1.局部命名空间
2.全局命名空间
3.内置命名空间
a = 10
def func():
a = 20
print(a) #输出的是20
func()
print(a) #输出的是10
2.作用域
作用域:作用域就是作用范围,按照生效范围来看分为 全局作用域和局部作用域
全局作用域:包含内置命名空间和全局命名空间,在整个文件的任何位置都可以使用(遵循从上到下逐行执行)
局部作用域:在函数的内部可以使用.
作用域命名空间:
1.全局作用域:全局命名空间 + 内置命名空间
2.局部作用域:局部命名空间
我们可以通过globals()函数来查看全局作用域中的内容,也可以通过locals()来查看局部作用域中的变量和函数信息
a = 10
def func():
a = 20
b = 10
def abc():
print("哈哈")
print(a,b) #这里a,b都是使用的局部作用域
print(globals()) #打印全局作用域中的内容
print(locals()) #打印局部作用域中的内容
func()
三丶函数的嵌套
1.只要遇见了()就是函数的调用,如果没有()就不是函数的调用
2.函数的执行顺序
#函数的嵌套
def fun2():
print(222)
def fun3():
print(666)
print(444)
fun3()
print(888)
print(333)
fun2()
print(555)
四丶关键字 global和nonlocal
global表示不再使用局部作用域中的内容了,而改用全局作用域中的变量
a = 10
def func():
global a
a = 20
print(a)
func()
print(a)
nonlocal表示在局部作用域中,调用父级命名空间中的变量
a = 10
def func1():
a = 20
def func2():
nonlocal a
a = 30
print(a)
func2()
print(a)
func1()
函数补充:动态参数,函数嵌套,global与nonlocal关键的更多相关文章
- Python函数02/函数的动态参数/函数的注释/名称空间/函数的嵌套/global以及nolocal的用法
Python函数02/函数的动态参数/函数的注释/名称空间/函数的嵌套/global以及nolocal的用法 目录 Python函数02/函数的动态参数/函数的注释/名称空间/函数的嵌套/global ...
- 百万年薪python之路 -- 函数的动态参数练习
1.继续整理函数相关知识点. 2.写函数,接收n个数字,求这些参数数字的和.(动态传参) def func(*args,**kwargs): num_sum = 0 num_dic = [] num ...
- 百万年薪python之路 -- 函数的动态参数
1.函数的动态参数 1.1 动态接收位置参数 在参数位置用*表示接受任意参数 def eat(*args): print('我想吃',args) eat('蒸羊羔','蒸熊掌','蒸鹿尾儿','烧花鸭 ...
- Python开发基础-Day11内置函数补充、匿名函数、递归函数
内置函数补充 python divmod()函数:把除数和余数运算结果结合起来,返回一个包含商和余数的元组(a // b, a % b) 语法: divmod(a, b) #a.b为数字,a为除数,b ...
- python基础之内置函数补充、匿名函数、递归函数
内置函数补充 python divmod()函数:把除数和余数运算结果结合起来,返回一个包含商和余数的元组(a // b, a % b) 语法: 1 divmod(a, b) #a.b为数字,a为除数 ...
- php匿名函数和可变参数函数
php匿名函数和可变参数函数 简介 直接上代码了: <?php $test1 = function($value) { echo $value; }; $test1('HelloWorld'); ...
- python 函数的动态参数 命名空间,作用域以及函数嵌套,global和nonlocal (重点)
*** 坚持坚持,即使你不太强*** 1.函数的动态传参 2.函数的命名空间及作用域 3.函数嵌套 4.global和nonlocal关键字 一.函数的动态传参 1. *args: 位置参数动态传参, ...
- python day- 10 动态参数 函数的嵌套 命名空间和作用域 global和nolocal
一.动态参数: 动态参数是形参的一类 分为:动态位置参数(* + 函数名)表示 调用后返回的是元祖 动态关键字参数(** + 函数名)表示 形参的排列顺序: 位置参数 > 动态位置参 ...
- python27期day10:函数的动态参数、函数的注释、函数的名称空间、函数的嵌套、global(修改全局的)、nonlocal(修改局部的)、函数名的第一类对象及使用、作业题。
1.动态参数的作用: 能够接收不固定长度参数 位置参数过多时可以使用动态参数 * args是程序员之间约定俗称(可以更换但是不建议更换) * args获取的是一个元组 ** kwargs获取的是一个字 ...
随机推荐
- UI 界面:技术决定一切
转自:http://www.cnblogs.com/NEOCSL/archive/2012/12/10/2811153.html 在我看来,肖恩帕克不仅仅是一位技术天才和远见卓识的移动互联网领域先锋. ...
- matlab 函数 bwarea
Matlab函数bwarea简介 函数功能:计算二值图像中对象的总面积. 调用格式: total = bwarea(BW) 估算二值图像BW中对象的总面积. 返回的total是一个标量, 它的值大致地 ...
- [hdu2063]过山车(二分图匹配)
题意:每个女人有感兴趣的k个男人,过山车两人一组,求最大匹配数. 解题关键:二分图最大匹配.匈牙利算法求解. 1.链式前向星建图 #include<cstdio> #include< ...
- LeafLet之气泡框隐藏"x"图标
例子:var marker.bindPopup( "我是一个图标的文本", { minWidth: 300 }).openPopup();L.Popup Constructor(函 ...
- 怎么查看linux系统是32还是64
1.getconf LONG_BIT or getconf WORD_BIT例如:2.file /bin/ls例如: 查看linux的版本:
- Javascript中的"\r\n"
我们知道 \r 代表的是 回车符(ACSII: 13 或0x0d), 也就是"硬回车" \n 代表的是 换行符(ACSII: 10 或 0x0a), 也就是 "软回车&q ...
- ACM-ICPC2018焦作网络赛 Mathematical Curse(dp)
Mathematical Curse 22.25% 1000ms 65536K A prince of the Science Continent was imprisoned in a cast ...
- ListView Item 里多种点击事件的用法
思路:由于item里需要处理多种点击事件,所以不便于用listview的onItemClickListener, 需要在adapter里进行设置不同点击区域的onclicklistener 但是,有 ...
- SEO优化之——rel=canonical(整合重复页)
用法一 如图所示 有三个页面,三个页面的访问路径都不一样,但是现实的内容page2和page3显示的内容和page1一样,这时候在三个page中分别都加入了<link res="can ...
- 无监督学习:Deep Auto-encoder(深度自动编码器)
一 Auto-encoder NN Encoder & NN Decoder 要一起训练. 二 Starting from PCA 三 Deep Auto-encoder PCA&De ...