#装饰
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 使用装饰器,及函数作为参数的更多相关文章

  1. python:带参数的装饰器,函数的有用信息

    一.带参数的装饰器,函数的有用信息 def func1(): '''此函数的功能是完成的登陆的功能 return: 返回值是登陆成功与否(true,false) ''' print(333) func ...

  2. python通过装饰器检查函数参数的数据类型的代码

    把内容过程中比较常用的一些内容记录起来,下面内容段是关于python通过装饰器检查函数参数的数据类型的内容. def check_accepts(f): assert len(types) == f. ...

  3. python3.7 装饰器

    #!/usr/bin/env python __author__ = "lrtao2010" #python3.7 装饰器 #装饰器 ''' 定义:本质就是一个函数,作用是为其他函 ...

  4. Day11 Python基础之装饰器(高级函数)(九)

    在python中,装饰器.生成器和迭代器是特别重要的高级函数   https://www.cnblogs.com/yuanchenqi/articles/5830025.html 装饰器 1.如果说装 ...

  5. (转)Python3.5——装饰器及应用详解

    原文:https://blog.csdn.net/loveliuzz/article/details/77853346 Python3.5——装饰器及应用详解(下)----https://blog.c ...

  6. 使用python装饰器计算函数运行时间的实例

    使用python装饰器计算函数运行时间的实例 装饰器在python里面有很重要的作用, 如果能够熟练使用,将会大大的提高工作效率 今天就来见识一下 python 装饰器,到底是怎么工作的. 本文主要是 ...

  7. 关于Python装饰器内层函数为什么要return目标函数的一些个人见解

    https://blog.csdn.net/try_test_python/article/details/80802199 前几天在学装饰器的时候,关于装饰器内层函数调用目标函数时是否return目 ...

  8. diango中让装了装饰器的函数的名字不是inner,而是原来的名字

    让装了装饰器的函数的名字不是inner,而是原来的名字 from functools import wraps def wrapper(func): @wraps(func) # 复制了原来函数的名字 ...

  9. 装饰器1、无参数的装饰器 2、有参数的装饰器 3、装饰器本身带参数的以及如果函数带return结果的情况

     装饰器分成三种: 1.无参数的: 2.有参数的: 3.装饰器本身带参数的. 装饰器decorator又叫语法糖 定义:本质是函数,器就是函数的意思.装饰其他函数.就是为其他函数添加附加功能. 原则: ...

随机推荐

  1. composer命令介绍之install和update及其区别

    composer 是 php 的一个依赖管理工具.它允许你申明项目所依赖的代码库,它会在你的项目中为你安装他们. 然而,对于如何『安装他们』,新手可能并不清楚.网上的答案有的说 composer in ...

  2. 从入门到自闭之Python序列化

    序列化(背) json :将数据类型转换成字符串(序列化),将字符串装换成原数据类型(反序列),支持dict,list,tuple等,序列后都变成了列表 dumps,loads ------ 用于网络 ...

  3. Amoeba 实现MySQL读写分离

    Amoeba是一个以MySQL为底层数据存储,并对应用提供MySQL协议接口的proxy,它集中地响应应用的请求,依据用户事先设置的规则,将SQL请求发送到特定的数据库上执行.基于此可以实现负载均衡. ...

  4. Oracle Help 类

    public static string ConnString = @"Data Source=xxx;USER ID=xxx;PASSWORD=xxx"; /// <sum ...

  5. Mysql学习(二)之安装、开启自启、启动、重启、停止

    安装 方法一:通过homebrew brew install mysql 方法二:通过官网dmg文件安装(Mac) https://dev.mysql.com/downloads/mysql/ 通过h ...

  6. Vue路由守卫之组件内路由守卫

    ​        beforeRouteEnter,进入路由前.需要注意这里不能使用this,因为我们使用的是进入路由之前,那会组件还没创建,得不到this这个属性,所有我们只能使用过vm异步语句来让 ...

  7. react + antd Form表单校验

    非空限制 {getFieldDecorator('name', { rules: [{ required: true, message: '名称不能为空', }],})( <Input plac ...

  8. PostgreSQL 按照日期范围查询

    method 1 select * from user_info where create_date >= '2019-05-01' and create_date < '2019-08- ...

  9. 配置maven的国内镜像

    pom.xml文件出现错误标记,一般是相关的maven资源没有下载完整. 1,配置maven的国内镜像,保证能够顺利下载maven中配置的资源. 在maven的配置文件  settings.xml  ...

  10. sklearn学习小结

    机器学习的一般流程: 1.获取数据 2.数据预处理 3.数据集分拆 4.搭建模型 5.模型评估 6.模型保存 7.模型优化 接下来,以Sklearn为例,一一介绍. 1.获取数据 1.1.导入数据集: ...