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)
函数有两个参数:x
和n
,这两个参数都是位置参数,调用函数时,传入的两个值按照位置顺序依次赋值给参数x
和n
。
- 默认参数
def power(x, n=2):
s = 1
while n > 0:
n = n - 1
s = s * x
return s
power(x, n)
函数有两个参数:x
和n
,如果想在不传入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
装饰器
装饰器是一个返回函数的高阶函数。
装饰器常见用法:
- 打印日志
- 计算时间
- 带参数的函数装饰器
- 不带参数的类装饰器
- 带参数的类装饰器
以上是关于python装饰器和函数传参的主要内容,如果未能解决你的问题,请参考以下文章