# 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. Python 基础之python运算符

    一.运算符 1.算数运算符 + - * / // % ** var1 = 5var2 = 8 #(1)  + 加res = var1 + var2print(res) # (2)  -  减res = ...

  2. 解决在高分屏下开发winform界面变形

    Form.AutoScaleMode = AutoScaleMode.None; 需要在超大屏下显示的时候,再考虑 AutoScaleMode.Font; AutoScaleMode.Dpi;

  3. LeetCode刷题--26.删除排序数组中的重复项(简单)

    题目描述 给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度.不要使用额外的数组空间,你必须在原地修改输入数组并在使用O(1)额外空间的条件下完成. 示例 ...

  4. 在Linux上用Apache搭建Git服务器

    在Linux上用Apache搭建Git服务器   最近在学Linux,终于在Linux上用Apache搭建起了Git服务器,在此记录一下. 服务器:阿里云服务器 Linux版本:CentOS 6.5 ...

  5. js实现深度拷贝

    js实现拷贝,使用普通赋值对象,在操作其中一个对象值的时候,另一个也会更改,不符合需求 因此引入深度拷贝,以下为实现深度拷贝的几种法: Object.assign // 合并多个对象 var targ ...

  6. english-phoneme

    1. 声音概述 2. 音素phoneme与音标 2.1 音素与音标 2.2 音素与字母 2.3 字母发音-字母自然发音对照表 2.4 音标表 2.5 元音字母-辅音字母表 2.6 单元音发音口形趋势表 ...

  7. java程序员的就业指导(重点)

    想要成为合格的Java程序员或工程师到底需要具备哪些专业技能,面试者在面试之前到底需要准备哪些东西呢?本文陈列的这些内容既可以作为个人简历中的内容,也可以作为面试的时候跟面试官聊的东西,你可以把这些内 ...

  8. 修改Xshell字体大小和颜色

    博客专区 > XManager的博客 > 博客详情 修改Xshell字体大小和颜色 XManager 发表于7个月前 分享到: 一键分享 QQ空间 微信 腾讯微博 新浪微博 QQ好友 有道 ...

  9. Postgresql数据库数据简单的导入导出

    Postgresql数据库数据简单的导入导出 博客分类: DataBase postgres  命令操作: 数据的导出:pg_dump -U postgres(用户名)  (-t 表名)  数据库名( ...

  10. git/github error: failed to push some refs to 'https://github.com/shenhaha/cloudletter.git'

    git 提交代码到github上报如下错误 报错分析: 解决方法: 关闭这两个设置 再次提交代码 success