python3 使用装饰器,及函数作为参数
#装饰
import types
def shucai(n):
print('蔬菜价格7')
if type(n)==types.FunctionType:
return n()+7
return n+7
def feiniu(n):
print('精品肥牛12')
if type(n)==types.FunctionType:
return n()+12
return n+12
@feiniu
@shucai
def guodi():
print('锅底38')
return 38
print(guodi) #类 import 类名可以调用其它模块
class leu():
def __init__(self):
name=None
def show(self,s):
print(self.name,s)
u=leu()
u.name='张三'
u.show('hhah') print('内嵌函数')
def outer():
x=1
def inner():
print('in inner')
print(x)
print(locals())
inner()
b=outer()
#函数是python中的一级对象
#函数作为参数
def add(x,y):
return x+y
def sub(x,y):
return x-y
def apply(func,x,y):
return func(x,y)
print(apply(sub,1,5))#和其他变量一样,函数名就是变量标签
print('-------------')
def outerl():
def inner():
print('inside inner')
return inner
fl=outerl()
fl()
print('------闭包---------')
def outer(x):
def inner():
print(x)
return inner
print1=outer(1)
print2=outer(2)
print1()
print2()
print('---装饰器---------') def outer2(some_func):
def inner():
print('before func')
ret =some_func()
return ret +1
return inner def foo2():
return 1
decorated=outer2(foo2)
print(decorated())
#装饰器其实就是一个以函数作为参数并返回一个替换函数可执行函数 class Coordinate:
def __init__(self,x,y):#初始化参数
self.x=x
self.y=y
def __repr__(self):#重写方法
return 'coord'+str(self.__dict__)
#a=Coordinate(3,4)
#print(a)
def add2(a,b):
return Coordinate(a.x+b.x,a.y+b.y)
def sub2(a,b):
return Coordinate(a.x-b.x,a.y-b.y)
one=Coordinate(100,200)
two=Coordinate(300,200)
print(add2(one,two))
print(sub(one,two))
#函数装饰器@符号的应用
#@在定义函数的时候使用
#无参数装饰器
def foo(func1):
print('decorator foo')
return func1
@foo
def bar():
print('bar')
bar()
#可以把函数对象作为参数
python3 使用装饰器,及函数作为参数的更多相关文章
- python:带参数的装饰器,函数的有用信息
一.带参数的装饰器,函数的有用信息 def func1(): '''此函数的功能是完成的登陆的功能 return: 返回值是登陆成功与否(true,false) ''' print(333) func ...
- python通过装饰器检查函数参数的数据类型的代码
把内容过程中比较常用的一些内容记录起来,下面内容段是关于python通过装饰器检查函数参数的数据类型的内容. def check_accepts(f): assert len(types) == f. ...
- python3.7 装饰器
#!/usr/bin/env python __author__ = "lrtao2010" #python3.7 装饰器 #装饰器 ''' 定义:本质就是一个函数,作用是为其他函 ...
- Day11 Python基础之装饰器(高级函数)(九)
在python中,装饰器.生成器和迭代器是特别重要的高级函数 https://www.cnblogs.com/yuanchenqi/articles/5830025.html 装饰器 1.如果说装 ...
- (转)Python3.5——装饰器及应用详解
原文:https://blog.csdn.net/loveliuzz/article/details/77853346 Python3.5——装饰器及应用详解(下)----https://blog.c ...
- 使用python装饰器计算函数运行时间的实例
使用python装饰器计算函数运行时间的实例 装饰器在python里面有很重要的作用, 如果能够熟练使用,将会大大的提高工作效率 今天就来见识一下 python 装饰器,到底是怎么工作的. 本文主要是 ...
- 关于Python装饰器内层函数为什么要return目标函数的一些个人见解
https://blog.csdn.net/try_test_python/article/details/80802199 前几天在学装饰器的时候,关于装饰器内层函数调用目标函数时是否return目 ...
- diango中让装了装饰器的函数的名字不是inner,而是原来的名字
让装了装饰器的函数的名字不是inner,而是原来的名字 from functools import wraps def wrapper(func): @wraps(func) # 复制了原来函数的名字 ...
- 装饰器1、无参数的装饰器 2、有参数的装饰器 3、装饰器本身带参数的以及如果函数带return结果的情况
装饰器分成三种: 1.无参数的: 2.有参数的: 3.装饰器本身带参数的. 装饰器decorator又叫语法糖 定义:本质是函数,器就是函数的意思.装饰其他函数.就是为其他函数添加附加功能. 原则: ...
随机推荐
- cmd_操作MySQL数据库
建议用 TXT 文档来写代码 然后粘贴至cmd命令直接运行创建students库,表名为student,表包含以下字段: id(主键) name(姓名) age(年龄) sex(性别) sc(综合积分 ...
- PHP与MySQL的连接
一.PHP的相关扩展 PHP与MySQL的交互需要要借助PHP提供的数据库扩展,在PHP中提供了多种数据库扩展,常用的MySQL扩展, MySQLi扩展和PDO扩展. 1.三者各自的特点: MySQL ...
- 使用GPU训练TensorFlow模型
查看GPU-ID CMD输入: nvidia-smi 观察到存在序号为0的GPU ID 观察到存在序号为0.1.2.3的GPU ID 在终端运行代码时指定GPU 如果电脑有多个GPU,Tensorfl ...
- unittest之三:字符串与列表的相互转换与分离数据时的应用
一.分离数据时,需读取文档中存储的数据,但TXT文件的数据读取出来的类型为列表,而测试用例中断言的时候验证的是字符串,所以需要将列表转为字符串 #1字符串————>列表 str1='hello ...
- JavaSE--jdbc编程
JDBC全称为:Java Data Base Connectivity (java数据库连接),可以为多种数据库提供统一的访问.JDBC是sun开发的一套数据库访问编程接口,是一种SQL级的API.它 ...
- WPF最小化窗体后激活函数显示不了窗体
WPF最小化窗体后激活函数显示不了窗体 今天测试小哥给我提了一些问题,其中一个问题是这样的,点击web端的一个链接,是能启动本地的一个应用程序的,如果本地应用程序已启动(通过tcp进程间通信),那么应 ...
- jQuery中$()的四种种使用方式
1.$()中接收一个回调函数,作为dom.ready事件(在dom树加载完成后执行的函数)如: $(function(){ /** 执行代码*/ }) 2.$()中接收字符串选择器,返回该选择器对应的 ...
- avascript中实现垃圾桶的功能
javascript中实现垃圾桶的功能,就像折垃圾桶在拖动目标上触发事件 (源元素):ondragstart - 用户开始拖动元素时触发ondrag - 元素正在拖动时触发ondragend - 用户 ...
- React源码深度解析视频 某课网(完整版)
<ignore_js_op> [课程介绍]: React毫无疑问是前端界主流的框架,而框架本身就是热点.课程以讲解React实现原理为主,并在实现过程中讲解这么做的原因,带来 ...
- QQ恶搞 - 卡死对方的手机QQ
方式1(低端设备有效): 使用方法: 代码: oo0.oo.OOO00.oo.OO00.oo.OO00.oo.OO00.oo.OO00.oo.OO00.oo.OO00.oo.OO00.oo.O00.o ...