码迷,mamicode.com
首页 > 编程语言 > 详细

Python之函数

时间:2018-09-05 21:40:54      阅读:160      评论:0      收藏:0      [点我收藏+]

标签:rgs   code   关键字   描述   position   turn   可见   返回   返回值   

python函数的定义方式:

def 函数名(参数):
  ‘‘‘函数描述‘‘‘
    函数体
    ...
    return 返回值

示例:

def test(x,y):
    ‘‘‘求x的y次幂‘‘‘
    return x**y

res=test(2,3)  #传入位置参数
print(res)

res=test(y=3,x=2)  #传入关键字参数
print(res)

#------------------------------------
8
8

函数参数的相关:

  位置参数特点:必须一一对应,实参数量等于形参数量。

  关键字参数特点:无须一一对应,实参数量等于形参数量。

  位置参数必须在关键字参数左边:

def test(x,y,z):
    ‘‘‘求xyz之和‘‘‘
    return x+y+z

res=test(2,3,z=5)  #8
res=test(2,3,y=5)  #关键字参数传入y前已有位置参数3传入,故报错
res=test(x=2,3,5)  #关键字参数在位置参数前传入,报错

  可变参数:*args, **kwargs

  *args示例:

def test(*args):
    ‘‘‘不定数求和‘‘‘
    s=0
    for i in args:   #args是元组形式
        s+=i
    return s

res=test(1,2,3)
print(res)
#-------------------------------
6

  *号的作用:传入的位置参数以元组形式(1,2,3)传给args,*args将args元组中的值拆分为位置参数传给函数:

def test(x,y,z):
    ‘‘‘求xyz之和‘‘‘
    return x+y+z

l=(1,2,3)
res = test(*l)
print(res)#6

l=(1,2,3,4)
test(*l)
print(res)#TypeError: test() takes 3 positional arguments but 4 were given
#位置参数有3个,l将其中的元素拆分开来后有4个参数,故报错

  *args与位置参数混合使用:

def test(x,y,*args):  #位置参数必须在*args前,否则报错
    print(x:%s y:%s args:%s %(x,y,args))
test(1,2,3,4,5)
#‘x:1 y:2 args:(3, 4, 5)‘
#传入的实参中,依次传入位置参数和*args

  **kwargs示例:

def test(**kwargs):
    print(kwargs)
    print(x:%d  y:%d %(kwargs[x],kwargs[y]))

test(x=1, y=3)
#--------------------------
{x: 1, y: 3}  #可见函数将关键字参数打包成字典传给了kwargs
x:1  y:3

  **号的作用:传入的关键字参数以字典的形式赋给kwargs,**kwargs将字典拆分成关键字参数的形式传给函数。

  位置参数,*args,**kwargs的混合使用:

def test(x, y, *args, **kwargs):
    print(x:%s y:%s args:%s kwargs:%s %(x, y, args, kwargs))

test(1,2,3,4,5,g=8,m=6)
#x:1 y:2 args:(3, 4, 5) kwargs:{‘g‘: 8, ‘m‘: 6}
#注意事项,传参过程中,关键字参数不可重复传给已经存在的位置参数。否则报错,即形参不可重复传值。
#x, *args, **kwargs顺序不可置换

 

Python之函数

标签:rgs   code   关键字   描述   position   turn   可见   返回   返回值   

原文地址:https://www.cnblogs.com/chenchaoze/p/9593918.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!