Python博客总结4
来源:互联网 发布:禁锢网络剧百度云 编辑:程序博客网 时间:2024/06/06 20:21
博客核心内容:
1、局部变量和全局变量
2、嵌套函数和作用域
3、内置函数
4、闭包
5、闭包应用:装饰器
6、迭代器的概念
1、局部变量和全局变量
变量按照作用域分为:全局变量和局部变量
全局变量的作用域:从定义位置开始到下面整个程序结束。
局部变量的作用域:在一个函数内部定义的变量只能在本函数内部进行使用。
当全局变量与局部变量同名时:在定义局部变量的子程序内,局部变量起作用;在其它地方全局变量起作用。
代码示例:
name='Alex' #全局变量def change_name(): name='Eric' #局部变量 print('我的名字',name)change_name()print(name)
2、嵌套函数和作用域在Python当中,可以在函数内部嵌套函数,并且作用域在定义函数时就已经固定住了,不会随着调用位置的改变而改变。
代码示例:
name='Alex'def foo(): name='Eric' def bar(): print(name) return barfunc=foo()func()
3、内置函数在Python当中部分函数是内置函数,如下图所示:
部分功能代码示例:
字典的运算:最小值,最大值,排序salaries={ 'egon':3000, 'alex':100000000, 'wupeiqi':10000, 'yuanhao':2000}迭代字典,取得是key,因而比较的是key的最大和最小值>>> max(salaries)'yuanhao'>>> min(salaries)'alex'可以取values,来比较>>> max(salaries.values())>>> min(salaries.values())但通常我们都是想取出,工资最高的那个人名,即比较的是salaries的值,得到的是键>>> max(salaries,key=lambda k:salary[k])'alex'>>> min(salaries,key=lambda k:salary[k])'yuanhao'也可以通过zip的方式实现salaries_and_names=zip(salaries.values(),salaries.keys()) 先比较值,值相同则比较键>>> max(salaries_and_names)(100000000, 'alex')salaries_and_names是迭代器,因而只能访问一次>>> min(salaries_and_names)Traceback (most recent call last): File "<stdin>", line 1, in <module>ValueError: min() arg is an empty sequencesorted(iterable,key=None,reverse=False)
4、闭包的概念概念:
①Python中的闭包指的是当函数的变量超出它的有效作用域的时候,还能对函数内部的变量进行访问.
②Python中的闭包捕获到的是变量的本身而不仅仅是变量的数值,当自由变量发生变化时,Python中的闭包能够捕获到这个变化.
③如果自由变量在闭包内部发生变化,也会反映到函数外面定义的自由变量的数值.
代码示例:
def f1(): y = 10 def f2(): print(y) return f2f=f1()print(f)x=100f()print(x)
在上面的程序中,f2()这个函数就是一个闭包函数。
5、闭包的应用装饰器1、不带参数的装饰器:
def w1(main_func): def outer(*args, **kwargs): before_func(*args, **kwargs) #before_func定义忽略 main_func(*args, **kwargs) after_func(*args, **kwargs) #after_func定义忽略 return outer@w1def show() pass# 装饰器w1将show作为其第一个参数,并使用返回值重新定义了show
2、带参数的装饰器
def login(name, password)...def errorHandler()...def Filter(before_func, after_func): def outer(main_func): def wrapper(*args, **kwargs): before_result = before_func(*args, **kwargs) main_result = main_func(*args, **kwargs) after_result = after_func(*args, **kwargs) return wrapperreturn outer@Filter(login, errorHandler)def show(): pass#先运行一次Filter(login, errorHandler),用返回值替换自身。然后再运行outer(main_func)
6、迭代器的概念1.为什么要有迭代器?
对于没有索引的数据类型,必须提供一种不依赖索引的迭代方式。
2.迭代器定义:
迭代器:可迭代对象执行iter方法,得到的结果就是迭代器,迭代器对象有next方法
它是一个带状态的对象,他能在你调用next()方法的时候返回容器中的下一个值,任何实现了iter和next()方法的对象都是迭代器,iter返回迭代器自身,next返回容器中的下一个值,如果容器中没有更多元素了,则抛出StopIteration异常。
代码示例:
i=[1,2,3].__iter__() print(i) #迭代器print(i.__next__())print(i.__next__())print(i.__next__())
OK,如有问题,欢迎留言指正!
- Python博客总结4
- 廖晓峰博客滴python总结
- 4月份英语总结博客
- Python博客
- python知识点1:总结高质量Python博客内容,解决python入门基本问题
- Python基础总结(4)
- python总结4
- Python 技术博客
- python多线程参考博客
- 【转】python技术博客
- Python备份CSDN博客
- 【转】python技术博客
- python学习博客
- python推荐博客专栏
- Python 技术博客
- 用python爬博客
- python实战的博客
- python学习博客
- RPM包快速制作工具fpm的安装和使用
- Android自定义View的三种实现方式
- php tp框架电商项目防表单重复提交
- GitHub完美适配Visual Studio-01 简介
- [教程] ListView的使用和封装——实战React Native中级案例01
- Python博客总结4
- poj 2104 <排序分块,区间第k大>/<第一次用主席树>2个方法
- Redis单机版与集群版的搭建
- 越简单越好:看看新QNX技术概念车--使用rightware的kanziUI设计
- USACO-Section 1.2 Daul Palindromes[...]
- UVA230解题报告
- 增加收入的 6 种方式
- 第34课: Stage划分和Task最佳位置算法源码彻底解密
- C#两个日期控件的比较,出现奇怪的现象