# from enum import Enum
# 枚举
# class VIP(Enum):
# YELLOW =
# YELLOW_ALIAS = # 别名
# GREEN =
# BLACK =
# RED = # print(VIP.GREEN) # VIP.GREEN8VIP.GREEN
# print(VIP.GREEN.name) # GREEN
# print(VIP['GREEN']) # VIP.GREEN # for v in VIP:
# print(v)
# VIP.YELLOW
# VIP.GREEN
# VIP.BLACK
# VIP.RED # for v in VIP.__members__.items():
# print(v)
# ('YELLOW', <VIP.YELLOW: >)
# ('YELLOW_ALIAS', <VIP.YELLOW: >)
# ('GREEN', <VIP.GREEN: >)
# ('BLACK', <VIP.BLACK: >)
# ('RED', <VIP.RED: >) # for v in VIP.__members__:
# print(v)
# YELLOW
# YELLOW_ALIAS
# GREEN
# BLACK
# RED # result = VIP.GREEN == VIP.BLACK
# print(result) # False
# result = VIP.GREEN ==
# print(result) # False
# result =VIP.GREEN is VIP.GREEN
# print(result) # True # a =
# print(VIP(a)) # VIP.YELLOW # from enum import IntEnum
# class VIP(IntEnum):
# YELLOW =
# GREEN =
# BLACK = 'str'
# RED = from enum import IntEnum,unique
@unique
class VIP(IntEnum):
YELLOW =
GREEN =
BLACK =
RED =
# 闭包=函数 + 环境变量
# def curve_pre():
# a = # 环境变量
# def curve(x):
# # print('this is a function')
# return a*x*x
# return curve # f = curve_pre()
# print(f()) # # b =
# def f1(x):
# return b * x * x
# print(f1()) # # a =
# f = curve_pre()
# print(f()) #
# print(f.__closure__) # (<cell at 0x00F1C2D0: int object at 0x65DDE490>,)
# print(f.__closure__[].cell_contents) # # c =
# def curve_pre():
# def curve(x):
# # print('this is a function')
# return c*x*x
# return curve
# c =
# f = curve_pre()
# print(f()) # # def f1():
# a =
# def f2():
# a =
# print(a) #.
# print(a) #.
# f2()
# print(a) #. # f1() # def f1():
# a =
# def f2():
# a =
# return a
# return f2 # f = f1()
# print(f) # <function f1.<locals>.f2 at 0x02AC5198>
# print(f.__closure__) # None # def f1():
# a =
# def f2():
# return a
# return f2 # f = f1()
# print(f) # <function f1.<locals>.f2 at 0x03995198>
# print(f.__closure__) # (<cell at 0x01E0C270: int object at 0x65DDE3A0>,) # origin =
# def go(step):
# new_pos = origin + step
# # origin = new_pos
# return origin # print(go()) #
# print(go()) #
# print(go()) # # 非闭包的实现
# origin =
# def go(step):
# global origin
# new_pos = origin + step
# origin = new_pos
# return origin # print(go()) #
# print(go()) #
# print(go()) # # 闭包的实现
origin =
def factory(pos):
def go(step):
nonlocal pos
new_pos = pos + step
pos = new_pos
return new_pos
return go tourist = factory(origin)
print(tourist()) #
print(tourist()) #
print(tourist()) #

12.Python的高级语法和用法的更多相关文章

  1. Python(九) Python的高级语法与用法

    本章节我们揭开Python进阶部分的高级特性,详细讲解枚举.闭包,并对函数式编程做出介绍 一. 枚举其实是一个类 from enum import Enum #枚举类 class VIP(Enum): ...

  2. 十一、python的高级语法与用法

    一.枚举其实是一个类 现实世界中的“类型”,在计算机世界中如何描述? 常见的 1)用1.2.3..等数字表示类型 2)较好的做法是用字典表示 3)最好的是使用枚举 # coding=utf-8 fro ...

  3. python 类高级语法 静态方法

    通过@staticmethod装饰器即可把其装饰的方法变为一个静态方法,什么是静态方法呢?其实不难理解,普通的方法,可以在实例化后直接调用,并且在方法里可以通过self.调用实例变量或类变量,但静态方 ...

  4. Python自动化 【第七篇】:Python基础-面向对象高级语法、异常处理、Scoket开发基础

    本节内容: 1.     面向对象高级语法部分 1.1   静态方法.类方法.属性方法 1.2   类的特殊方法 1.3   反射 2.     异常处理 3.     Socket开发基础 1.   ...

  5. Python高级语法之:一篇文章了解yield与Generator生成器

    Python高级语法中,由一个yield关键词生成的generator生成器,是精髓中的精髓.它虽然比装饰器.魔法方法更难懂,但是它强大到我们难以想象的地步:小到简单的for loop循环,大到代替多 ...

  6. python 循环高级用法 [expression for x in X [if condition] for y in Y [if condition] ... for n in N [if condition] ]按照从左至右的顺序,分别是外层循环到内层循环

    高级语法 除了像上面介绍的 [x ** 2 for x in L] 这种基本语法之外,列表推导式还有一些高级的扩展. 4.1. 带有if语句 我们可以在 for 语句后面跟上一个 if 判断语句,用于 ...

  7. 第4天 | 12天搞定Python,基础语法(下)

    为了方便你的学习,减轻负重,我特意将基础语法分成上下两部分.希望你喜欢这种方式,如果不喜欢,你可以跟我说,反正我是不会改的,哈哈~~. 如果上部分,你还没看的话,先去看<第4天 | 12天搞定P ...

  8. 进击的Python【第五章】:Python的高级应用(二)常用模块

    Python的高级应用(二)常用模块学习 本章学习要点: Python模块的定义 time &datetime模块 random模块 os模块 sys模块 shutil模块 ConfigPar ...

  9. Python正则式的基本用法

    Python正则式的基本用法 1.1基本规则 1.2重复 1.2.1最小匹配与精确匹配 1.3前向界定与后向界定 1.4组的基本知识 2.re模块的基本函数 2.1使用compile加速 2.2 ma ...

随机推荐

  1. 「学习笔记」Treap

    「学习笔记」Treap 前言 什么是 Treap ? 二叉搜索树 (Binary Search Tree/Binary Sort Tree/BST) 基础定义 查找元素 插入元素 删除元素 查找后继 ...

  2. Dockfile的详解

    Dockerfile是构建镜像的指令文件,按照dockerfile的规范分为如下几部分: FROM 基础镜像,FROM alpine:3.8(任何的一个镜像都可以作为基础镜像,主要看我们做的镜像是干嘛 ...

  3. django静态文件处理

    django静态文件处理   从开始接接触python这门语言已有四年了,中间陆续的学习,又不断的忘记,所以基本上是没有系统的知识体系.但是挺喜欢这门简洁,强大的动态语言.最近自己私人有个项目要做,虽 ...

  4. python设置编码

    import sys sys.getdefaultencoding() #看到默认编码是'ascii' #通常需要的是使用utf8编码,需要这样做: reload(sys) sys.setdefaul ...

  5. Day9 - G - Doing Homework HDU - 1074

    有n个任务,每个任务有一个截止时间,超过截止时间一天,要扣一个分.求如何安排任务,使得扣的分数最少.Input有多组测试数据.第一行一个整数表示测试数据的组数第一行一个整数n(1<=n<= ...

  6. 「NOIP2007」树网的核

    传送门 Luogu 解题思路 这里着重介绍 \(O(n^3)\) 的做法,毕竟考场上只有 \(N\le300\) \(Q \omega Q\) 首先我们要知道,对任意一条直径算偏心距都是一样的. 证明 ...

  7. C++ Primer Plus 6 笔记(3)

    第5章 1.cout在显示bool值之前将它们转换为int,但cout.setf(ios:: boolalpha)函数调用设置了一个标记,该标记命令cout显示true和false,而不是1和0 2. ...

  8. Java中很少用的CopyOnWriteArrayList

    类注释 /** * A thread-safe variant of {@link java.util.ArrayList} in which all mutative * operations ({ ...

  9. MVC、MVT简介

    一.MVC MVC的产生理念: 分工.让专门的人去做专门的事. MVC的核心思想: 解耦. M: Model,模型, 和数据库进行交互. V: View,视图, 产生html页面. C: Contro ...

  10. JAVA开源爬虫列表及简介

    本文列举了一些较为常用的JAVA开源爬虫框架: 1.Apache Nutch 官方网站:http://nutch.apache.org/ 是否支持分布式:是 可扩展性:中.Apache Nutch并不 ...