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等都实现或部分实现了闭包 ...
随机推荐
- Elastic-Job 配置介绍
作业配置 与Spring容器配合使用作业,可以将作业Bean配置为Spring Bean,可在作业中通过依赖注入使用Spring容器管理的数据源等对象.可用placeholder占位符从属性文件中取值 ...
- CCF后感
3.21,昨天天梯训练赛完后查CCF成绩,300!小开心~~~我是合格的程序员啦~~~ 问题:第四题,如果输入数据有对于1本身来说 S 1 ,R 1有这个我就gg了,考完一直在担心这个反复看题也看不出 ...
- Arrays工具类
1.Arrays工具类针对数组进行操作的工具类 提供了排序查找等功能 2.方法: Arrays.toString(int[] a) 将数据转换成字符串 Arrays.sort(int[] a) 将数组 ...
- hiho一下 第207周
题目1 : The Lastest Time 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 What is latest time you can make with ...
- ORA-08176 错误的一个案例
在演示事务的read only mode 的时候,因为一个错误有了这个意外的收获.场景是这样的: 在session 1 中执行了如下的语句. SQL> set transaction read ...
- PHP选择排序
选择排序,非常的直观,也相对简单. 思路如下: 假设,从小到大排序. 首先,第一轮循环,从所有数组中,找出最小的元素,然后将其下标记录下来. 然后,确定不是第一个元素,则和第一个元素进行交换. 接下来 ...
- Bugku-CTF之Trim的日记本(不要一次就放弃)
Day19 Trim的日记本 http://123.206.87.240:9002/ hints:不要一次就放弃
- msql事务与引擎
事务介绍 简单来说,事务就是指逻辑上的一组SQL语句操作,组成这组操作的各个SQL语句,执行时要么全成功要么全失败. MySQL5.5支持事务的引擎:Innodb/ndb 一.事务四大特性 ...
- java中的构造器
构造器是什么 1.构造器,也称构造方法.构造函数.作用是构造出来一个类的实例,确保对象得到初始化. 2.构造器的格式: 权限修饰符 类名(无参/有参){}. 3.根据有无参数,可分为无参构造 和有参构 ...
- C# 数组与集合的区别
数组:声明数组的时候必须指定数组的长度.数组在内存中是连续的,索引速度很快,赋值和修改也很简单. 数组的容量是固定的,您只能一次获取或设置一个元素的值,而ArrayList或List的容量可根据需要自 ...