Python(九) Python的高级语法与用法
本章节我们揭开Python进阶部分的高级特性,详细讲解枚举、闭包,并对函数式编程做出介绍
from enum import Enum #枚举类
class VIP(Enum):
YELLOW = 1 #大写
GREEN = 2
BLACK = 3
RED = 4 print(VIP.YELLOW) # VIP.YELLOW
from enum import Enum #枚举类
class VIP(Enum):
YELLOW = 1
GREEN = 2
BLACK = 3
RED = 4 # 枚举类型、枚举名字、枚举值
print(VIP.GREEN.value) # 2 枚举值
print(VIP.GREEN) # VIP.GREEN 枚举类型
print(VIP.GREEN.name) # GREEN 枚举名称 print(VIP['GREEN']) # VIP.GREEN
print(type(VIP['GREEN'])) # <enum 'VIP'> print(type(VIP.GREEN)) # <enum 'VIP'>
print(type(VIP.GREEN.name)) # <class 'str'> # 遍历 for v in VIP:
print(v) # VIP.YELLOW
# VIP.GREEN
# VIP.BLACK
# VIP.RED
from enum import Enum #枚举类
class VIP(Enum):
YELLOW = 1
GREEN = 2
BLACK = 3
RED = 4 # 枚举比较
r = VIP.GREEN == VIP.GREEN
print(r) # True r = VIP.GREEN is VIP.GREEN
print(r) # True # 枚举不可以做大小比较 不可以不同的枚举进行比较
from enum import Enum #枚举类
class VIP(Enum):
YELLOW = 1
GREEN = 1
BLACK = 3
RED = 4 print(VIP.GREEN) # VIP.YELLOW for v in VIP:
print(v) # VIP.YELLOW
# VIP.BLACK
# VIP.RED for v in VIP.__members__:
print(v) # YELLOW
# GREEN
# BLACK
# RED for v in VIP.__members__.items():
print(v) # ('YELLOW', <VIP.YELLOW: 1>)
# ('GREEN', <VIP.YELLOW: 1>)
# ('BLACK', <VIP.BLACK: 3>)
# ('RED', <VIP.RED: 4>)
from enum import Enum #枚举类
class VIP(Enum):
YELLOW = 1
GREEN = 1
BLACK = 3
RED = 4 a = 1
print(VIP(a)) # VIP.YELLOW
from enum import Enum
from enum import IntEnum,unique #枚举类 @unique # 装饰器 不允许值相同 IntEnum 枚举值仅仅为int
class VIP(IntEnum):
YELLOW = 1
GREEN = 2
BLACK = 3
RED = 4
def a():
pass print(type(a)) # <class 'function'>
#函数式编程
# 闭包 = 函数 + 环境变量
# 现场 def curve_pre():
a=25 # 环境变量
def curve(x): # 函数
return a*x*x
return curve a=10
f = curve_pre()
print(f.__closure__) #(<cell at 0x00000210502553D8: int object at 0x000000005E5C6F40>,)
print(f.__closure__[0].cell_contents) #
print(f(2)) #
def f1():
a = 10
def f2():
a = 20 # 被认为是一个局部变量 所以不是闭包
print(a)
print(a) #
f2() #
print(a) # f1() #
#
#
origin = 0 def go(step):
global origin
new_pos = origin + step
origin = new_pos
return origin print(go(2))
print(go(3))
print(go(6)) 结果:
2
5
11
#闭包的环境变量 可以记忆 上一次调用的状态 origin = 0 def factory(pos):
def go(step):
nonlocal pos # 不是本地的 局部变量
new_pos = pos + step
pos = new_pos
return new_pos
return go f = factory(origin) print(f(2))
print(f(3))
print(f(5)) 结果:
2
5
10
Python(九) Python的高级语法与用法的更多相关文章
- 十一、python的高级语法与用法
一.枚举其实是一个类 现实世界中的“类型”,在计算机世界中如何描述? 常见的 1)用1.2.3..等数字表示类型 2)较好的做法是用字典表示 3)最好的是使用枚举 # coding=utf-8 fro ...
- 12.Python的高级语法和用法
# from enum import Enum # 枚举 # class VIP(Enum): # YELLOW = # YELLOW_ALIAS = # 别名 # GREEN = # BLACK = ...
- Python自动化 【第七篇】:Python基础-面向对象高级语法、异常处理、Scoket开发基础
本节内容: 1. 面向对象高级语法部分 1.1 静态方法.类方法.属性方法 1.2 类的特殊方法 1.3 反射 2. 异常处理 3. Socket开发基础 1. ...
- Python高级语法之:一篇文章了解yield与Generator生成器
Python高级语法中,由一个yield关键词生成的generator生成器,是精髓中的精髓.它虽然比装饰器.魔法方法更难懂,但是它强大到我们难以想象的地步:小到简单的for loop循环,大到代替多 ...
- Python的 5 种高级用法,效率提升没毛病!
任何编程语言的高级特征通常都是通过大量的使用经验才发现的.比如你在编写一个复杂的项目,并在 stackoverflow 上寻找某个问题的答案.然后你突然发现了一个非常优雅的解决方案,它使用了你从不知道 ...
- Python高级语法总结
1.Python面向对象 创建类 使用class语句来创建一个新类,class之后为类的名称并以冒号结尾,如下实例: class ClassName: '类的帮助信息' #类文档字符串 class_s ...
- python九周周末总结
python九周周末总结 UDP协议 udp协议的交互模式服务端不需要考虑客户端是否退出,你发多少那么他就会按照你发的东西直接去传输给客户端不存在黏包现象 服务端: import socket ser ...
- python基础入门一(语法基础)
作为自己正式接触并应用的第一门编程语言,在Alex和武sir两位大王的要求下,开始了写博客总结的日子.学习编程语言是很有趣的一件事情,但有2点请一定要谨记:1.做人靠自己,码代码也必须靠自己.能不能成 ...
- Python中用format函数格式化字符串的用法
这篇文章主要介绍了Python中用format函数格式化字符串的用法,格式化字符串是Python学习当中的基础知识,本文主要针对Python2.7.x版本,需要的朋友可以参考下 自python2. ...
随机推荐
- 51nod 1079 中国剩余定理模板
中国剩余定理就是同余方程组除数为质数的特殊情况 我直接用同余方程组解了. 记得exgcd后x要更新 还有先更新b1再更新m1,顺序不能错!!(不然会影响到b1的更新) #include<cstd ...
- Camera Calibration 相机标定:原理简介(五)
5 基于2D标定物的标定方法 基于2D标定物的标定方法,原理与基于3D标定物相同,只是通过相机对一个平面进行成像,就可得到相机的标定参数,由于标定物为平面,本身所具有的约束条机,相对后者标定更为简单. ...
- ORACLE数据库字符集处理
简介: ORACLE数据库字符集,即Oracle全球化支持(Globalization Support),或即国家语言支持(NLS)其作用是用本国语言和格式来存储.处理和检索数据.利用全球化支持,OR ...
- OCUI界面设计:滚动视图与分页控件初探
滚动视图(UIScrollView) 简单介绍 1.UIScrollView滚动视图能够排列并显示超出自身显示范围的内容. 2.UIScrollView内部整合了多种手势来达到丰富的界面展示效果. 3 ...
- 有关Java基础的一些笔试题总结
针对近期腾讯.京东.网易等公司的笔试.遇到一些有关Java基础的问题,在此总结.希望能通过这几道经典问题题发散,举一反三.借此打牢基础! 自己总结,望提出宝贵意见! 一.关于null的一道小题 先开开 ...
- Excel操作之VLOOKUP
https://support.office.com/en-us/article/VLOOKUP-function-0bbc8083-26fe-4963-8ab8-93a18ad188a1 Use V ...
- iOS开发-sqlite3使用
SQLite3使用 SQLite简介 SQLite,是一款轻型的数据库,是遵守ACID的关系型数据库管理系统,它包含在一个相对小的C库中. SQLite3 在XCode工程中,打开targets,在B ...
- [luogu P2586] GCD 解题报告 (莫比乌斯反演|欧拉函数)
题目链接:https://www.luogu.org/problemnew/show/P2568#sub 题目大意: 计算$\sum_{x=1}^n\sum_{y=1}^n [gcd(x,y)==p ...
- php7-swoole-Class 'swoole_websocket_server' not found 问题
标签(空格分隔): php 分析 nginx/apache 读取的php.uini 文件 和 cli模式的php.ini 文件不同导致的 swoole是在cli模式下运行的 或许你安装swoole扩展 ...
- Oozie框架基础
* Oozie框架基础 官方文档地址:http://oozie.apache.org/docs/4.0.0/DG_QuickStart.html 除Oozie之外,类似的框架还有: ** Zeus:h ...