python 函数 动态参数 和嵌套
1.动态参数 是可以接收任意的参数.一种方式, 1,位置的动态传参, 写法是: *参数名 接收的参数是tuple类型举个例子:def yue(*food): print(food)yue("香蕉",'苹果','芒果')yue("键盘",'鼠标','rng牛批')yue('北冰洋','脉动','百岁山,')这样不用一个一个带进去,一个*food 就全部概括了顺序是: 位置参数,动态参数(*),默认值参数 2,**参数名 形成一个字典关键字参数的动态传参,,写法是: **参数名, 例如: **kwarg利用**来接收动态关键字参数def func(**kwargs): print(kwargs)func(a=1, b=2, c=3)func(a=1, b=2)结果:{'a': 1, 'b': 2, 'c': 3}{'a': 1, 'b': 2}接收的是一个dict 字典 他们最终的顺序是:位置参数,*args,默认值参数, **kwargs 无敌传参def func(*args, **kwargs)这个参数是什么都可以接收,无敌的*, ** 的作用:# # 在形参: 聚合# # 在实参: 打散* 可以打散列表 元组 **可以打散字典命名空间: ①全局命名空间 --> 我们直接在py文件中,函数外声明的变量都属于全局命名空间 ②局部命名空间 --> 在函数中声明的变量会放在局部命名空间 ③内置命名空间 --> 存放python解释器为我们提供的名字,list,tuple,str,int这些都是内置命名空间 加载顺序:内置 取值顺序是:局部 全局 全局 局部 内置 作用域的问题1. globals() 获取全局作用域中的内容2.locals() 获取局部作用域中的内容a = 10 # 全局def func(): # 全局 a = 40 # 局部 b = 20 # 局部 def abc(): # 局部 d = 30 # 是局部 print("哈哈") print(a, b) # 这⾥使⽤的是局部作⽤域 print(locals()) abc() # print(globals()) # 打印全局作用域中的内容 # print(locals()) # 打印局部作用域中的内容,locals()打印当前这个函数局部作用与中的内容func() 函数嵌套:1.只要遇见了()就是函数的调用,如果没有()就不是函数的调用,def fun1(): print(111) def fun2(): print(222) fun1() fun2()print(333)结果是 222 111 333 def fun2(): print(222) def fun3(): print(666) print(444) fun3() print(888) print(33)fun2()print(555)结果是 33 222 444 666 888 555 def func(): print("哈哈哈")a = func # 函数可以赋值 .相当于. a和func是一回事儿func()a()结果是 哈哈哈 哈哈哈 4.global和nonlocalglobal: 寻找全局作用域中的内容nonlocal: 寻找上一级作用域中的内容, 但不能是全局的#比如:a=10def func(): global a # 这里的a 是全局的 a=20 #a 被更改了 print(a)func()print(a)结果是: 20 20 a=10def func1(): a=20 print(a) def fun2(): nonlocal a #上一级 ,且不能是全局 a = 30 print(a) fun2() print(a)func1()print(a)结果是: 20 30 30 10
python 函数 动态参数 和嵌套的更多相关文章
- python函数动态参数详解
Python的动态参数: 1,参数前一个"*":在函数中会把传的参数转成一个元组. def func (*args): print(args) func(123,1,2,'a') ...
- python 函数动态参数,名称空间,global,nonlocal
##################################总结######################################动态参数 *args:位置参数动态传参,接收到的是元 ...
- python(3)-函数动态参数
先来看一段代码 def show(*arg): print(arg, type(arg)) if __name__ == "__main__": show(1) show(1,2, ...
- 函数动态参数实现format
变量赋值一种是字符串格式化,一种是通过format的方式 1.字符串格式化 s="i am %s,age %d"%('Jasper',23)print(s) 打印输出:i am J ...
- Python函数可变参数*args及**kwargs详解
初学Python的同学们看到代码中类似func(*args, **kwargs)这样的函数参数定义时,经常感到一头雾水. 下面通过一个简单的例子来详细解释下Python函数可变参数*args及**kw ...
- 【转】Python函数默认参数陷阱
[转]Python函数默认参数陷阱 阅读目录 可变对象与不可变对象 函数默认参数陷阱 默认参数原理 避免 修饰器方法 扩展 参考 请看如下一段程序: def extend_list(v, li=[]) ...
- 详解python函数的参数
详解python函数的参数 一.参数的定义 1.函数的参数在哪里定义 在python中定义函数的时候,函数名后面的括号里就是用来定义参数的,如果有多个参数的话,那么参数之间直接用逗号, 隔开 案列: ...
- 可变数据类型不能作为python函数的参数
可变数据类型:列表.字典 不可变数据类型:整型.浮点型.字符串.元组 为什么可变数据类型不能作为python函数的参数?请看以下例子: def foo(a=[]): a.append(1) retur ...
- python day- 10 动态参数 函数的嵌套 命名空间和作用域 global和nolocal
一.动态参数: 动态参数是形参的一类 分为:动态位置参数(* + 函数名)表示 调用后返回的是元祖 动态关键字参数(** + 函数名)表示 形参的排列顺序: 位置参数 > 动态位置参 ...
随机推荐
- Linux 三剑客 -- awk sed grep
本文由本人收集整理自互联网供自己与网友参考,参考文章均已列出,如有侵权,请告知! 顶配awk,中配sed,标配grep awk 参考 sed 参考 grep 参考 在线查看linux命令速记表 app ...
- npm与yarn命令对比
Yarn是由Facebook.Google.Exponent 和 Tilde 联合推出了一个新的 JS 包管理工具 Yarn 是为了弥补 npm 的一些缺陷而出现的(比如,npm install时候会 ...
- 068、Calico的网络结构是什么?(2019-04-11 周四)
参考https://www.cnblogs.com/CloudMan6/p/7520164.html root@host1:~# docker run -itd --name bbox1 -- ...
- tomcat自动重新加载应用
前言 当应用配置文件发生变化时,无需重启tomcat,可以使tomcat重新加载应用. 场景 假设存在一个J2EE应用A,对应war文件名称为A.war,部署在tomcat的webapps目录下,即: ...
- 微信小程序开发(2) 计算器
在这篇微信小程序开发教程中,我们将介绍如何使用微信小程序开发计算器功能. 本文主要分为两个部分,小程序主体部分及计算器业务页面部分 一.小程序主体部分 一个小程序主体部分由三个文件组成,必须放在项目的 ...
- 三十六、Linux 线程——线程基本概念及线程的创建和终止
36.1 线程介绍 36.1.1 线程的基本概念 进程是资源管理的最小单位,线程是程序执行的最小单位 每个进程都有自己的数据段.代码段和堆栈段. 线程通常叫做轻型的进程,它包含独立的栈和 CPU 寄存 ...
- 【bzoj 3779】重组病毒
Description 黑客们通过对已有的病毒反编译,将许多不同的病毒重组,并重新编译出了新型的重组病毒.这种病毒的繁殖和变异能力极强.为了阻止这种病毒传播,某安全机构策划了一次实验,来研究这种病毒. ...
- 卷积中的full、same、valid
通常用外部api进行卷积的时候,会面临mode选择. 本文清晰展示三种模式的不同之处,其实这三种不同模式是对卷积核移动范围的不同限制. 设 image的大小是7x7,filter的大小是3x3 ...
- Dapper.net Insert mssql unicode 乱码问题
1.效果: 2.处理方法: /// <summary> /// insert single sql /// </summary> /// <typeparam name= ...
- PHPcms 缓存的读取和设置
https://blog.csdn.net/huobobo124/article/details/76912632 1.PHPcms设置了保存和读取缓存的方法,其实现方法存储在PHPcms/lib/f ...