python装饰器和函数传参

Posted mark-zh

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python装饰器和函数传参相关的知识,希望对你有一定的参考价值。

函数的参数

  • 位置参数
def power(x, n):
    s = 1
    while n > 0:
        n = n - 1
        s = s * x
    return s

power(x, n)函数有两个参数:xn,这两个参数都是位置参数,调用函数时,传入的两个值按照位置顺序依次赋值给参数xn

  • 默认参数
def power(x, n=2):
    s = 1
    while n > 0:
        n = n - 1
        s = s * x
    return s

power(x, n)函数有两个参数:xn,如果想在不传入n值时,默认计算x的平方,此时可以将n设为默认值2。

  • 可变参数(*args)
def function(f_arg, *args):
    print f_arg, type(f_arg)
    print args, type(args)
nums = ['a','b','c']
function(1,2,*nums)

定义可变参数时,需要在参数前面加一个*号,可变参数的个数是可变的。在函数内部,参数*args接收到的是一个tuple。输出结果如下:

1 <type 'int'>
(2, 'a', 'b', 'c') <type 'tuple'>
  • 关键字参数(**kwargs)
def person(name,age,**kwargs):
    print 'name:',name,'age:',age,'other:',kwargs,type(kwargs)

person('mark',30,city='shanghai')

**kwargs允许将不定长度的键值对,作为参数传递给一个函数,关键字参数在函数内部自动组装为一个dict。输出结果如下:

name: mark age: 30 other: 'city': 'shanghai' <type 'dict'>
  • 将函数作为参数传递给另一个函数
def hi():
    return 'hi friends'

def function(func):
    print 'just test'
    print func()

function(hi)

function()函数将hi函数作为参数接收,输出结果如下:

just test
hi friends

装饰器

装饰器是一个返回函数的高阶函数。

装饰器常见用法:

  1. 打印日志
  2. 计算时间
  3. 带参数的函数装饰器
  4. 不带参数的类装饰器
  5. 带参数的类装饰器

以上是关于python装饰器和函数传参的主要内容,如果未能解决你的问题,请参考以下文章

python函数下篇装饰器和闭包,外加作用域

Python装饰器和回调函数

Python 函数装饰器和闭包

Python迭代器和生成器,装饰器

学习python的第十五天(函数的装饰器,两层装饰器和三层装饰器)

Python装饰器和闭包函数