python函数的进阶
2018-12-11 09:05:17来源:博客园 阅读 ()
1. 动态传参
*, ** :
形参: 聚合
位置参数* -> 元组
关键字** -> 字典
实参: 打散
列表, 字符串, 元素 -> *
字典 -> **
形参顺序(重点):
位置, *args, 默认值, **kwargs
无敌传参
def func(*args, **kwargs): arguments参数 keyword-arguments关键字参数
pass
2. 作用域和名称空间
名称空间: 用来存放名字(变量, 函数名, 类名, 引入的模块名)的
1. 全局名称空间: 我们在py文件中自己写的变量, 函数.....
2. 内置名称空间: 我们python解释器提供好的一些内置内容(print, input....)
3. 局部名称空间: 在我们执行函数的时候.会产生一个局部名称空间. 放的是: 函数内部的内容(变量, 函数,类...)
名称空间可能会有无数个, 局部名称空间而言. 相对是独立的.一般互不干扰
作用域:
1. 全局作用域: 内置+全局
2. 局部作用域: 局部
globals() 查看全局作用域
locals() 查看当前作用域
3. 函数的嵌套
在函数中声明函数
在内部函数中使用变量的时候, 查找顺序: 先找自己 -> 上一层 -> 上一层..全局 -> 内置
1 def func0(): 2 a = 50 3 def func1(): 4 a = 10 # 局部 5 def func2(): 6 nonlocal a 7 a += 10 # a = a +10 python不让这么干 8 # a = 30 9 print('func2', a) 10 func2() 11 print(a) 12 func1() 13 print(a) 14 func0() 15 flag = False
4. nonlocal和global关键字
global: 在局部引入全局变量
1 a = 10 2 def func(): 3 def inner(): 4 # 慎用 5 global a # global 表示从全局把一个变量引入到局部,后面使用的a都是全局变量 6 a += 10 # ?? a = a+10 # 现在的a是全局的,你现在视图改变全局变量 +global可改 7 print('里面的打印', a) 8 9 inner() 10 func() 11 print('外面的打印', a)
nonlocal: 在局部...内层函数引入外层离他最近的那个变量.
1 nonlocal 在局部,寻找离它最近的外层的一个变量 2 a = 50 3 def func1(): 4 a = 10 # 局部 5 def func2(): 6 nonlocal a 7 a += 10 # a = a +10 python不让这么干 8 # a = 30 9 print('func2', a) 10 func2() 11 print(a) 12 func1() 13 print(a)
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
上一篇:Python基础--数据类型
下一篇:day 15 - 1 内置函数
- python3基础之“术语表(2)” 2019-08-13
- python3 之 字符串编码小结(Unicode、utf-8、gbk、gb2312等 2019-08-13
- Python3安装impala 2019-08-13
- 小白如何入门 Python 爬虫? 2019-08-13
- python_字符串方法 2019-08-13
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash