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等都实现或部分实现了闭包 ...
随机推荐
- OLTP和OLAP的区别
OLTP和OLAP的区别 联机事务处理OLTP(on-line transaction processing) 主要是执行基本日常的事务处理,比如数据库记录的增删查改.比如在银行的一笔交易记录,就是一 ...
- hashlib hmac configparser subprocess xlrd xlwt
hashlib模块:加密 import hashlib # 基本使用 cipher = hashlib.md5('需要加密的数据的二进制形式'.encode('utf-8')) print(ciphe ...
- phpstudy-5.6.27-nts 安装redis扩展
redis扩展安装流程 第一步: 首先直接查看一下phpinfo()的信息 找到下面两条信息 Architecture x86 PHP Extension Build API20131226,NTS, ...
- varnish 测试
安装 通过epel 源 yum 安装 [root@localhost varnish]# rpm -ql varnish /etc/logrotate.d/varnish /etc/varnish / ...
- shell之for和if实现批量替换多目录下的文件
问题背景: 生产环境的项目图片文件夹众多,每个项目都会有一个图片文件夹,现在要批量替换每个文件夹下的一张模板图片 如图,我们要替换每一个文件夹下的01.jpg shell 脚本 #/bin/bash ...
- 在Pycharm中使用Pandas时输出结果中列被省略的解决办法
在使用pycharm学习pandas的过程中我发现好多时候会发生不能输出所有列的情况,上网搜了一下,发现解决的办法是使用一个输出控制的函数. 在下面的代码中我们只是输出starbucks_store_ ...
- threadpool源码学习
threadpool源码学习 __all__ = [ 'makeRequests', 'NoResultsPending', 'NoWorkersAvailable', 'ThreadPool', ' ...
- Python 获取类对象的父类
参考 Get parent class name? Python 获取类对象的父类 给定一个类的对象a,要求获取该对象的父类. 方法: a.__class__.__bases__ 返回由该对象的父类组 ...
- Linear Regression with machine learning methods
Ha, it's English time, let's spend a few minutes to learn a simple machine learning example in a sim ...
- Python交互K线工具 K线核心功能+指标切换
Python交互K线工具 K线核心功能+指标切换 aiqtt团队量化研究,用vn.py回测和研究策略.基于vnpy开源代码,刚开始接触pyqt,开发界面还是很痛苦,找了很多案例参考,但并不能完全满足我 ...