python装潢器以什么开首【Python教程】,python
作者:搜教程发布时间:2019-11-27分类:Python教程浏览:25评论:0
导读:装潢器(Decorators)是Python的一个重要部分。简朴地说:他们是修正其他函数的功用的函数。他们有助于让我们的代码更简短,也更Pythonic(Python范儿)。...
装潢器(Decorators)是 Python 的一个重要部分。简朴地说:他们是修正其他函数的功用的函数。他们有助于让我们的代码更简短,也更Pythonic(Python范儿)。
想要明白Python中的装潢器,不得不先明白闭包(closure)这一观点。(引荐进修:Python视频教程)
在计算机科学中,闭包(英语:Closure),又称词法闭包(Lexical Closure)或函数闭包(function closures),是援用了自在变量的函数。这个被援用的自在变量将和这个函数一同存在,纵然已离开了制造它的环境也不破例。
装潢器
一个平常的装潢器平常是如许:
import functools def log(func): @functools.wraps(func) def wrapper(*args, **kwargs): print('call %s():' % func.__name__) print('args = {}'.format(*args)) return func(*args, **kwargs) return wrapper
如许就定义了一个打印出要领名及其参数的装潢器。
挪用之,要运用@开首:
@logdef test(p): print(test.__name__ + " param: " + p) test("I'm a param")
输出:
call test(): args = I'm a param test param: I'm a param
装潢器在运用时,用了@语法,让人有些搅扰。实在,装潢器只是个要领,与下面的挪用体式格局没有区分:
def test(p): print(test.__name__ + " param: " + p) wrapper = log(test) wrapper("I'm a param")
@语法只是将函数传入装潢器函数,并没有奇异的地方。
值得注意的是@functools.wraps(func),这是python供应的装潢器。它能把原函数的元信息拷贝到装潢器内里的 func 函数中。函数的元信息包含docstring、name、参数列表等等。
能够尝试去除@functools.wraps(func),你会发明test.__name__的输出变成了wrapper。
更多Python相干技术文章,请接见Python教程栏目举行进修!
以上就是python装潢器以什么开首的细致内容,更多请关注ki4网别的相干文章!
标签:python
相关推荐
- python数据类型有哪几种?_Python教程,python
- python针对Excel表格的操作_Python教程,python,excel
- 实例解析Python单元测试及unittest框架用法_Python教程,python,单元测试,unittest框架
- Python如何使用xlrd实现读取合并单元格_Python教程,python,xlrd
- 手把手教你在python中如何使用while True语句_Python教程,python,while true
- 给大家分享一下日常学习python的心得(详解)_Python教程,python
- python如何另起一行?_Python教程,python
- python是一种跨平台、开源、免费的高级动态编程语言,对么_Python教程,python,跨平台,开源,免费,编程语言
- 关于python装饰器的详细介绍_Python教程,python,装饰器
- 推荐几个适合小白学习Python的免费网站_Python教程,python,网站
你 发表评论:
欢迎- Python教程排行
-
- 1python数据类型有哪几种?_Python教程,python
- 2python如何批量处理excel数据?_Python教程,python,excel数据
- 3python针对Excel表格的操作_Python教程,python,excel
- 4在python中导入其它函数库的关键字是什么_Python教程,python,函数库,关键字
- 5Python控制Excel实现自动化办公_Python教程,python,excel,自动化
- 6手把手教你在python中如何使用while True语句_Python教程,python,while true
- 7python中if语句用法_Python教程,python,if语句
- 8给大家分享一下日常学习python的心得(详解)_Python教程,python
- 9可以搜Python题答案的APP有哪些?_Python教程,Python
- 最新文章
- 广而告之