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等都实现或部分实现了闭包 ...
随机推荐
- 作业(更新ing)
暴政警告 2019.4.19 1.YBT完成 7 道题目(1)广搜 3 道 (2)最短路 4 道 2.写至少 2 篇博客 (据说集中精力,一个上午/下午就能写完) 1. 一个 又一个 球细胞数目 ...
- 外网访问内网MariaDB数据库
外网访问本地MariaDB数据库 本地安装了MariaDB数据库,只能在局域网内访问,怎样从公网也能访问内网MariaDB数据库? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动Mar ...
- puppeteer实现线上服务器任意区域截图
整个九月份由于业务繁重以及玩心颇重,一直没有机会来写一篇博文.而且笔者于十月一日将会举办人生大事--婚礼,现在家里筹办过程中只能抽出零碎的时间来写这篇文章. 关于服务端截图,这种使用场景非常少见,大多 ...
- 2018年—2019年第二学期第四周C#学习个人总结
第五章面向对象高级包括:5.1类的继承中有5.1.1继承的概念:一是在现实生活中,继承一般指的是子女继承父辈的财产;在C#,类的继承是指在一个现有类的基础上去构建一个新的类,构建出来的新类被称作子类, ...
- Elasticsearch .net client NEST 空字符/null值查询
null值查询 当某个字段值为null时,其实在es里该条数据是没有这个字段的.查询时检测包含不包含该字段就行. /// <summary> /// null 值查询 /// 当数据为Nu ...
- 【做题】SRM701 Div1 Hard - FibonacciStringSum——数学和式&矩阵快速幂
原文链接 https://www.cnblogs.com/cly-none/p/SRM701Div1C.html 题意:定义"Fibonacci string"为没有连续1的01串 ...
- P2495 [SDOI2011]消耗战
思路 虚树上DP 虚树相当于一颗包含了所有询问的关键点信息的树,包含的所有点只有询问点和它们的LCA,所以点数是\(2k\)级别的,这样的话复杂度就是\(O(\sum k)\),复杂度就对了 虚树重点 ...
- Zynq PS和PL间的连接
跨越PS和PL的信号 AXI总线.EMIO.其他(看门狗.重启信号.中断信号.DMA接口信号) AXI标准 AXI(高级可扩展接口)是ARM AMBA的一部分.AMBA总线主要用于片上系统.AXI总线 ...
- [MySQL] timestamp和datetime的区别
建表语句如下: create table strong_passwd_whitelist( id int unsigned not null auto_increment, email_id int ...
- webpack中如何使用vue
1.安装 vue包:npm i vue -S 2.由于在webpack中,推荐使用.vue这个组件模版文件来定义组件,不然会出现vue.js移动和一些高级语法的不支持,因此需要安装能解析这种文件的lo ...