python装饰器

python 十大装B语法

℡╲_俬逩灬. 提交于 2020-01-31 03:30:17
Python 是一种代表简单思想的语言,其语法相对简单,很容易上手。不过,如果就此小视 Python 语法的精妙和深邃,那就大错特错了。本文精心筛选了最能展现 Python 语法之精妙的十个知识点,并附上详细的实例代码。如能在实战中融会贯通、灵活使用,必将使代码更为精炼、高效,同时也会极大提升代码B格,使之看上去更老练,读起来更优雅。 1. for - else 什么?不是 if 和 else 才是原配吗?No,你可能不知道,else 是个脚踩两只船的家伙,for 和 else 也是一对,而且是合法的。十大装B语法,for-else 绝对算得上南无湾!不信,请看: >>> for i in [1,2,3,4]: print(i) else: print(i, '我是else') 4 我是else 如果在 for 和 else 之间(循环体内)有第三者 if 插足,也不会影响 for 和 else 的关系。因为 for 的级别比 if 高,else 又是一个攀附权贵的家伙,根本不在乎是否有 if,以及是否执行了满足 if 条件的语句。else 的眼里只有 for,只要 for 顺利执行完毕,else 就会屁颠儿屁颠儿地跑一遍: >>> for i in [1,2,3,4]: if i > 2: print(i) else: print(i, '我是else') 4 我是else 那么

Python十大语法

喜欢而已 提交于 2020-01-30 07:57:03
Python 是一种代表简单思想的语言,其语法相对简单,很容易上手。不过,如果就此小视 Python 语法的精妙和深邃,那就大错特错了。本文精心筛选了最能展现 Python 语法之精妙的十个知识点,并附上详细的实例代码。如能在实战中融会贯通、灵活使用,必将使代码更为精炼、高效,同时也会极大提升代码B格,使之看上去更老练,读起来更优雅。 for - else 什么?不是 if 和 else 才是原配吗?No,你可能不知道,else 是个脚踩两只船的家伙,for 和 else 也是一对,而且是合法的。十大装B语法,for-else 绝对算得上南无湾!不信,请看: for i in [1,2,3,4]: print(i) else: print(i, ‘我是else’) 1 2 3 4 4 我是else 1 2 3 4 5 6 7 8 9 10 如果在 for 和 else 之间(循环体内)有第三者 if 插足,也不会影响 for 和 else 的关系。因为 for 的级别比 if 高,else 又是一个攀附权贵的家伙,根本不在乎是否有 if,以及是否执行了满足 if 条件的语句。else 的眼里只有 for,只要 for 顺利执行完毕,else 就会屁颠儿屁颠儿地跑一遍: for i in [1,2,3,4]: if i > 2: print(i) else: print(i,

Python资源大全

扶醉桌前 提交于 2020-01-29 05:35:07
The Python Tutorial (Python 2.7.11) 的中文翻译版本。Python Tutorial 为初学 Python 必备官方教程,本教程适用于 Python 2.7.X 系列。 在线阅读 » Fork Me » The Python Tutorial (Python 3.5.1) 的中文翻译版本。Python Tutorial 为初学 Python 必备官方教程,本教程适用于 Python 3.5.x。 在线阅读 » Fork Me » Flask 是一个轻量级的 Web 应用框架。其 WSGI 工具箱采用 Werkzeug ,模板引擎则使用 Jinja2。本教程适用于 Flask 0.10.1 以上版本。 在线阅读 » Fork Me » 探索 Flask 是一本关于使用 Flask 开发 Web 应用程序的最佳实践和模式的书籍。这本书是 Flask 官方教程的一个有力的补充材料。适合进阶使用。 在线阅读 » Fork Me » Flask Mega Tutorial 是一个非官方的很完整的 Flask 教程。 在线阅读 » Fork Me » Flask-Cache 是一个用于 Flask 作为缓存的第三方扩展。 在线阅读 » Fork Me » Flask-Exceptional 是一个为 Flask 添加 Exceptional 支持。 在线阅读

python学习总结(函数进阶)

删除回忆录丶 提交于 2020-01-29 05:34:13
-------------------程序运行原理------------------- 1、模块的内建__name__属性,主模块其值为__main__,导入模块其值为模块名 1、创建时间,py文件比pyc文件新,则从新生成pyc。 2、magic num,做运行前版本测试,版本不同重新生成pyc。 3、PyCodeObject对象,源代码中的字符串,常量值,字节码指令,原始代码行号的对应关系。 2、LEGB规则 1、Local :本地 当前所在命名空间(如函数,模块),函数的参数也属于命名空间内的变量。 2、Ecolsing function :外部嵌套函数的命名空间 外部嵌套函数的命名空间(闭包中常见)。 3、Global :全局 全局变量,函数定义所在模块的命名空间。 4、Builtins :内建模块命名空间 1、Python 在启动的时候会自动为我们载入很多内建的函数、类, 比如 dict,list,type,print,这些都位于 __builtins__ 模块中,可以使用 dir(__builtins__) 来查看。 2、在Python中,有一个内建模块,该模块中有一些常用函数;在Python启动后,且没有执行程序员所写的任何代码前,Python会首先加载该内建函数到内存。另外,该内建模块中的功能可以直接使用,不用在其前添加内建模块前缀,其原因是对函数、变量

Python装饰器的用法

こ雲淡風輕ζ 提交于 2020-01-29 03:13:49
装饰器的概念 Python的装饰器就是一个嵌套函数, 它可以让其他函数在不需要做任何代码变动的状态下增加额外的功能 ,装饰器的返回值也是一个函数对象。 它经常用于有统一性需求的场景 ,比如:插入日志、事务处理、缓存、权限校验等场景。装饰器是解决这类问题的绝佳设计,有了装饰器,我们就可以抽离出大量与函数功能本身无关的相同性质代码多次利用。 装饰器的用法 代码如下: # 二层装饰器 def decorator ( func ) : # 执行函数 def wrapper ( * args , ** kwargs ) : # 函数的实参 result = dict ( ) result [ 'from_func_parameter' ] = [ args or kwargs ] result [ 'from_func_return_value' ] = func ( * args , ** kwargs ) return result return wrapper # 三层装饰器 def full_decorator ( value = None ) : # 装饰器的实参 def decorator ( func ) : # 执行函数 def wrapper ( * args , ** kwargs ) : # 函数的实参 result = dict ( ) result [ 'from

你可能不知道的 Python 技巧

会有一股神秘感。 提交于 2020-01-28 22:30:49
英文 | Python Tips and Trick, You Haven't Already Seen 原作 | Martin Heinz ( https://martinheinz.dev ) 译者 | 豌豆花下猫 声明 :本文获得原作者授权翻译,转载请保留原文出处,请勿用于商业或非法用途。 有许许多多文章写了 Python 中的许多很酷的特性,例如变量解包、偏函数、枚举可迭代对象,但是关于 Python 还有很多要讨论的话题,因此在本文中,我将尝试展示一些我知道的和在使用的,但很少在其它文章提到过的特性。那就开始吧。 1、对输入的字符串“消毒” 对用户输入的内容“消毒”,这问题几乎适用于你编写的所有程序。通常将字符转换为小写或大写就足够了,有时你还可以使用正则表达式来完成工作,但是对于复杂的情况,还有更好的方法: user_input = "This\nstring has\tsome whitespaces...\r\n" character_map = { ord('\n') : ' ', ord('\t') : ' ', ord('\r') : None } user_input.translate(character_map) # This string has some whitespaces... " 在此示例中,你可以看到空格字符“ \n”和“ \t

python 装饰器例子

爱⌒轻易说出口 提交于 2020-01-27 07:03:39
def debug(func): def wrapper(word): print("[DEBUG]: enter {}()".format(func.__name__)) return func(word) return wrapper @debug def say_hello(word): print("hello!%s"%(word)) say_hello("hahaha") 例子2 def out(func): def inner(*args,**kwargs): print("这是装饰器啊") func(*args,**kwargs) # def inner(arg1, arg2): # print("这是装饰器啊") # func(arg1, arg2) # return inner() return inner @out def say(name,age): print("我的名字是%s,我今年%d了"%(name,age)) say("张三",20) 注意这里 # return inner() return inner ,我一开始写成了 return inner(),这样就丢失参数了,会报错, 来源: CSDN 作者: 小瑞 链接: https://blog.csdn.net/xiaxiaorui2003/article/details/103706813

Python教程之装饰器

半世苍凉 提交于 2020-01-26 06:05:32
decorator–装饰器 要增强XX()函数的功能,比如,在函数调用前后自动打印日志,但又不希望修改XX()函数的定义,这种在代码运行期间动态增加功能的方式,称之为“装饰器”(Decorator)。 由于函数也是一个对象,而且函数对象可以被赋值给变量,所以,通过变量也能调用该函数。 def now(): print('2015-3-25') f = now f() Out: 2015-3-25 函数对象有一个__name__属性,可以拿到函数的名字: now.__name__ Out: 'now' 并且 f.__name__ Out: 'now' 本质上,decorator就是一个返回函数的高阶函数。所以,我们要定义一个能打印日志的decorator,可以定义如下: def log(func): def wrapper(*args, **kw): print('call %s():' % func.__name__) return func(*args, **kw) return wrapper 观察上面的log,因为它是一个decorator,所以接受一个函数作为参数,并返回一个函数。我们要借助Python的@语法,把decorator置于函数的定义处: @log def now(): print('2015-3-25') 调用now()函数,不仅会运行now()函数本身

Python核心编程第二版(中文).pdf 目录整理

夙愿已清 提交于 2020-01-25 23:43:39
python核心编程目录 Chapter1:欢迎来到python世界!- 页码:7 1.1什么是python 1.2起源 :罗萨姆1989底创建python 1.3特点 1.3.1高级 1.3.2面向对象 1.3.3可升级 1.3.4可扩展 1.3.5可移植性:python使用C写的。 1.3.6易学 1.3.7易读 1.3.8易维护 1.3.9健壮性 1.3.10高效的快速原型开发工具 1.3.11内存管理器 :内存管理由python解释器负责,开发仅仅致力于开发计划中的应用程序。 1.3.12解释性和(字节)编译性:无需编译,当执行py文件,会生成.pyc或.pyo文件 1.4下载和安装python 1.5运行python 1.5.1命令行的交互式解释器 1.5.2从命令行启动脚本 1.5.3集成开发环境 1.5.4其他的集成开发环境和执行环境 1.6python文档 1.7比较python(python与其他语言的比较) Chapter2:Python起步- 页码:31 注:语句和表达式的区别 语句是使用关键词来组成命令,告诉解释器要做什么。 表达式没有关键词,可以使算术表达式,也可以是使用括号调用的函数。 2.1程序输出,print语句及“Hello World” :print是关键字 Print ‘%s is number %d!’%(‘python’,1)

python装饰器学习笔记

夙愿已清 提交于 2020-01-25 05:59:20
python的一切皆是对象。 在 Python 中我们可以在一个函数中定义另一个函数: def hi ( name = "yasoob" ) : print ( "now you are inside the hi() function" ) def greet ( ) : return "now you are in the greet() function" def welcome ( ) : return "now you are in the welcome() function" print ( greet ( ) ) print ( welcome ( ) ) print ( "now you are back in the hi() function" ) hi ( ) #output:now you are inside the hi() function # now you are in the greet() function # now you are in the welcome() function # now you are back in the hi() function # 上面展示了无论何时你调用hi(), greet()和welcome()将会同时被调用。 # 然后greet()和welcome()函数在hi()函数之外是不能访问的,比如: