python -- 函数进阶
def func(* jiemu): # 在形参这里把接受过来的实参进行聚合,集合成一个元组
print(jiemu) func('奇葩说','知识就是力量','老梁说故事','吐槽大会') # 结果:('奇葩说', '知识就是力量', '老梁说故事', '吐槽大会')
def func(**tianqi): # 聚合, ** 聚合成字典
print(tianqi) # func(1,2,3,4,5) # 位置参数或报错, func() takes 0 positional arguments but 5 were given
func(today='晴天', tomorrow='大晴天', yesterday='阴天')
# 结果:{'today': '晴天', 'tomorrow': '大晴天', 'yesterday': '阴天'}
# 无敌参数
def func(*args,**kwargs): # argument 参数 key argument 关键字参数
print(args,kwargs) func('a','b',1,2,3,f='小熊',g = '小虎') # 结果:('a', 'b', 1, 2, 3) {'f': '小熊', 'g': '小虎'}
def eat(*food):
print(food) eat(*"你今天吃了什么") # 结果:('你', '今', '天', '吃', '了', '什', '么')
** 在形参表示动态传参 -- 关键字参数; 打散,打散成关键字
def tianqi(**day): # 聚合,聚合字典
print(day) dic = {'today':'晴天','tomorrow':'要下雪',} # 打散,打散关键字
tianqi(**dic,abs= '还是要下雪') # 结果:{'today': '晴天', 'tomorrow': '要下雪', 'abs': '还是要下雪'}
a = 10
def func():
a = 20
c = 30
def abc():
print('who are you?')
print(a,c) # 这里使用的是局部作用域
print(globals()) # 打印全局作用域中的内容
print(locals()) # 打印局部作用域中的内容 func()
三、函数的嵌套
def func1():
print(1)
def func2():
print(2)
def func3():
print(3)
func3()
print(4)
func2()
print(5) func1()
四、关键字global和nonlocal
a = 10
def func2():
a = 20
print('内部的:',a) func2()
print('外部的:',a) # 内部的: 20
# 外部的: 10
global表示,不再使用局部作用域中的内容了,而改用全局作用域中的变量
# 全局变量一般是不能随意改变得
a = 10
def func2():
# 慎用
global a # 表示从全局把一个变量引到局部,后面使用的a都是全局变量
a += 20 # 现在a 是全局变量,在试图改全局变量
print('内部的:',a) func2()
print('外部的:',a) # 内部的: 30
# 外部的: 30
在局部引入一个全局变量,如果这个变量在全局不存在,global会自动创建一个全局变量
def func():
global a # 创建一个全局变量
a = 10
print(a)
func()
print(a)
nonlocal 表示在局部作用域中,调用父级命名空间(离它最近的一个)中的变量
python -- 函数进阶的更多相关文章
- python函数进阶(函数参数、返回值、递归函数)
函数进阶 目标 函数参数和返回值的作用 函数的返回值 进阶 函数的参数 进阶 递归函数 01. 函数参数和返回值的作用 函数根据 有没有参数 以及 有没有返回值,可以 相互组合,一共有 4 种 组合形 ...
- 第六篇:Python函数进阶篇
在了解完了 Python函数基础篇之后,本篇的存在其实是为了整合知识,由于该篇的知识是否杂乱,故大家可以通过点开点连接直接进入其详细介绍,该篇主要大致的介绍一下几个知识点: 一.Python的迭代器 ...
- python 函数进阶与闭包
函数的命名空间和作用域 引言 现在有个问题,函数里面的变量,在函数外面能直接引用么? def func1(): m = 1 print(m) print(m) #这行报的错 报错了: NameErro ...
- 万恶之源 - Python函数进阶
函数参数-动态参数 之前我们说过传参,如果我们在传参数的时候不很清楚有哪些的时候,或者说给一个函数传了很多参数,我们就要写很多,很麻烦怎么办呢,我们可以考虑使用动态参数 形参的第三种:动态参数 动态参 ...
- python函数进阶
知识内容: 1.函数即变量 2.嵌套函数 3.lambda表达式与匿名函数 4.递归函数 5.函数式编程简介 6.高阶函数与闭包 一.函数即变量 1.变量的本质 声明一个变量,在python里本质上讲 ...
- Python 函数进阶(filter/map/json/zip)
一.函数即变量 def say(name): print(name)ybq = say #可以被赋值给其他变量ybq('Amily') #调用函数 函数名:say 函数体:第1-2行 返回值:retu ...
- 13 Python 函数进阶
代码在运行伊始,创建的存储“变量名与值的关系”的空间叫做全局命名空间,在函数的运行中开辟的临时的空间叫做局部命名空间 命名空间和作用域 命名空间的本质:存放名字与值的绑定关系 >>> ...
- Python—函数进阶篇
lambda表达式(匿名函数表达式) 作用:创建一个匿名函数对象.同def类似,但不提供函数名. 语法:lambda [形参1,形参2,...] : 表达式 语法说明 lambda 只是一个表达式,它 ...
- Python函数进阶:闭包、装饰器、生成器、协程
返回目录 本篇索引 (1)闭包 (2)装饰器 (3)生成器 (4)协程 (1)闭包 闭包(closure)是很多现代编程语言都有的特点,像C++.Java.JavaScript等都实现或部分实现了闭包 ...
随机推荐
- windows eclipse直接访问远程linux hadoop开发环境配置(符合实际开发的做法)
CDH 5.x搭建请参考CentOS 7离线安装CDH 5.16.1完全指南(含各种错误处理). 如果使用的是cloudera quickstart vm,则只能在linux服务器中使用eclipse ...
- day08文件操作的三步骤,基础的读,基础的写,with...open语法,文件的操作模式,文件的操作编码问题,文件的复制,游标操作
复习 ''' 类型转换 1.数字类型:int() | bool() | float() 2.str与int:int('10') | int('-10') | int('0') | float('-.5 ...
- 复旦大学2018--2019学年第一学期高等代数I期末考试情况分析
一.期末考试成绩90分以上的同学(共21人) 周烁星(99).封清(99).叶雨阳(97).周子翔(96).王捷翔(96).张思哲(95).丁思成(94).陈宇杰(94).谢永乐(93).张哲维(93 ...
- 用Xshell在centos7下安装lnmp服务
虚拟机已创建好,本机已安装Xshell 一.准备工作:安装常用工具 1.1 yum install -y vim 备注:-y是同意安装过程中的询问,不被询问打断安装 vim:vim是一个类似于Vi的 ...
- c#操作json的两种方式
总结一下C#操作json的两种方式,都是将对象和json格式相转. 1.JavaScriptSerializer,继承自System.Web.Script.Serialization private ...
- 承接微信小程序外包 H5外包就找北京动点软件开发团队
承接小程序外包 微信小程序外包 H5外包 就找北京动点软件 长年承接微信小程序.微信公众号开发 全职的H5开发团队,开发过几十款微信小程序公众号案例 欢迎来电咨询,索取案例! QQ:372900288 ...
- Win10升级惹的祸,Oracle服务全没有了,怎么解决?
最近Win10自动升级,升级后各种服务全部没了,心已经凉了一半... 百度\Google了一大堆,无非就几种:卸载重装,还原到上一版Win10,甚至重装系统,对于正式使用的库来说,够崩溃的了.. 搜寻 ...
- 【Axure RP8.1】一款专业的快速原型设计工具
Axure RP是一款专业的快速原型设计工具.Axure(发音:Ack-sure),代表美国Axure公司:RP则是Rapid Prototyping(快速原型)的缩写.Axure RP是美国Axur ...
- Redis(二)--Jedis使用
1.Jedis是连接java和redis的jar,这里用maven来添加jar包 # 在eclipse中新建maven project,填写GroupID.Artifactid # 在百度搜索mave ...
- Netty官网首页(翻译)
官网:https://netty.io/ Netty是一个异步事件驱动的网络应用程序框架,用于快速开发可维护的高性能协议服务器和客户端. Netty是一个NIO客户端服务器框架,可以快速轻松地开发协议 ...