Python装饰器

装饰器(Decorators)是python的一个重要部分简单地说 

他们是修改其他函数的功能的函数。

有助于让我们的代码更加简短  也更加pythonic 

最难掌握的概念之一

------

一切皆对象

---------

def  hi(name="yasoob"):

  return "hi"+name

print(hi())

#output:'hi yasoob'

我们甚至可以将一个函数赋值给一个变量

比如greet=hi

#这里我们没有使用小括号 因为我们不是在调用hi函数

#而是将它放在greet变量里头 我们尝试运行下这个

print(greet())

#output:'hi yasoob'

如果我们删除旧的hi函数 看看会发生什么

del hi

print(hi())

#output:NameError

print(greet())

#output:'hi yasoob'

-----------

在函数中定义函数

---------

def hi(name="yasoob"):

  print("现在你在hi()中")

  

  def greet():

    return "现在你在greet()函数"

  def welcome():

    return "现在你在welcome函数"

  print(greet())

      print(welcome())

  print("现在你回到hi()函数里面")

hi()

#output:现在你在hi()中

    现在你在greet()函数

    现在你在welcome函数

    现在你回到hi()函数里面

#上面展示了无论何时你调用hi()  greet() welcome()将会同时被调用

#然后greet() 和welcome()函数在hi()函数之外是不能访问的

greet()

#output:NameError:name 'greet' is not  defined

------------------------

可以嵌套的函数  函数也可以返回函数

--------

从函数从返回函数

---------

其实不需要再一个函数里去执行 另外一个函数 我们也可以将其 作为输出返回出来

def  hi(name="yasoob"):

  def greet():

    return "现在你在greet()函数"

  def welcome():

    return "现在你在welcome()函数"

       if name=="yasoob":

     return greet

       else:

     return welcome

a=hi()

print(a)

----------

原文地址:https://www.cnblogs.com/yizhixuepython/p/9239904.html