1. #装饰
    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)
  2.  
  3. #类 import 类名可以调用其它模块
    class leu():
    def __init__(self):
    name=None
    def show(self,s):
    print(self.name,s)
    u=leu()
    u.name='张三'
    u.show('hhah')
  4.  
  5. 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('---装饰器---------')
  6.  
  7. def outer2(some_func):
    def inner():
    print('before func')
    ret =some_func()
    return ret +1
    return inner
  8.  
  9. def foo2():
    return 1
    decorated=outer2(foo2)
    print(decorated())
    #装饰器其实就是一个以函数作为参数并返回一个替换函数可执行函数
  10.  
  11. 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. 从入门到自闭之Python自定义模块

    自定义模块 定义:一个文件就是一个模块(能被调用的文件,模块就是一个工具箱,工具就是函数) 作用: 将代码文家化管理,提高可读性,避免重复代码 拿来就用(避免重复造轮子),python中类库比较多,提 ...

  2. Ubuntu中配置Python虚拟环境Virtualenv

    Ubuntu版本为18.04 Virtualenv介绍 在开发Python应用程序的时候,系统安装的Python3只有一个版本:3.4.所有第三方的包都会被pip安装到Python3的site-pac ...

  3. 类型(Type)

    A data type is homogeneous collection of values,effectiovely presented,equipped with a set of operat ...

  4. 帝国cms 常用标签汇总

    1.列表内容标签 [!--empirenews.listtemp--]<!--list.var1-->[!--empirenews.listtemp--] 2.分页标签 [!--show. ...

  5. colaui基础

    监控 c-watch // 监控的方法函数 on 监控的参数名字 div(c-watch="fun on style" c-bind="styles") // ...

  6. Mybatis实际练习

    1.mybatis在xml文件中处理大于号小于号的方法 第一种方法: 用了转义字符把>和<替换掉,然后就没有问题了. SELECT * FROM test WHERE 1 = 1 AND ...

  7. Delphi CheckBox组件

  8. linux下测试web访问及网络相关的命令

    curl命令 curl是linux系统命令行下用来简单测试web访问的工具. curl -xip:port www.baidu.com    -x可以指定ip和端口,省略写hosts,方便实用 -I  ...

  9. vs2017新建一个空项目

    我们会发现VS2017的控制台程序创建之后会有一些头文件这和之前的VS的版本不一样之前的都可以选择空项目来避免,下面我们就来介绍方法: 首先我们不要创建新的控制台项目,而是创建桌面向导: 然后我们就可 ...

  10. Python enumerate 使用技巧

    enumerate() 是Python内建的函数,能让打印的结果更清晰,不管是列表,元组,字典,enumerate()都可以帮你完成,在某些需求下还是非常好用的. >>> a = [ ...