• python 参数


    摘自:http://www.liaoxuefeng.com/wiki/001374738125095c955c1e6d8bb493182103fac9270762a000/001374738449338c8a122a7f2e047899fc162f4a7205ea3000

    默认参数是一个固定的值

    比如说 

    >>> def Foo(age,name='zhangsan'):
    ...   print name,age
    ...
    >>> Foo(25)
    zhangsan 25

    这里的name,就是一个固定参数,虽然它是固定的,但是当你的业务有需求的时候,不想用这个值,而是想自己传入一个值的时候,可以这么做

    >>> Foo(25,'wanger')
    wanger 25

    还有一点要注意的是, 形参的位置排放,当我们把形参放在前面的时候会报错

    可变参数(*arg):

    顾名思义,可变参数就是传入的参数个数是可变的,可以是1个、2个到任意个,还可以是0个。

    定义可变参数和定义list或tuple参数相比,仅仅在参数前面加了一个*号。在函数内部,参数numbers接收到的是一个tuple,因此,函数代码完全不变。但是,调用该函数时,可以传入任意个参数,包括0个参数:

    比如说

    def show2(*arg):
    for item in arg:
    print item

    show2('a','b','1',2,3)


    可变参数就是说:可以随意的传入参数,调用的时候,python会自动的给传入的参数包装成列表或者元祖的形式传给实参

    关键字参数:(**arg)

    关键字参数允许你传入0个或任意个含参数名的参数,这些关键字参数在函数内部自动组装为一个dict,然后。

    关键字参数的作用就是我们可以扩展函数的功能

    比如我我们现在定义一个学生信息函数

    def person(name,age,**args):
    print 'name: ',name,'age: ',age,'other: ',args
    #person('baoxy',25)
    person('baoxy ','25 ',city = 'anhui',sex = 'Man')

    输出的结果分别是

    C:Python27python.exe X:/708/lambda.py
    name:  baoxy age:  25 other:  {}

    name:  baoxy
    age:  25
    other:  {'city': 'anhui', 'sex': 'Man'}

    注:我们在使用参数组合的时候,我们要注意定义参数的顺序必须是:必选参数、默认参数、可变参数和关键字参数。

    还有一点要注意的是,我们在传可变参数的时候,直接传入参数就行,比如说函数名为Foo,那么我们可以使用Foo('a1','a2','a3')

    我们传关键字参数的时候也是这样Foo(name='bao',age =25)

    但是当我们传入一个列表或者是字典的时候要加上   *   和   **

    比如说:

    L=【1,2,3,4】

    调用的时候就的   Foo(*L)

    D = {'name':'bao','age':25}

    调用的时候就的   Foo(**D)

    现在我们看一下具体的实例

    def Foo(*arg):
    for item in arg:
    print item

    L = [1,2,3,4,5]
    Foo(L)

    得出的记过是:[1, 2, 3, 4, 5]

    Foo(*L)
    得出的结果是:
    1
    2
    3
    4
    5
    所以第二个才是我们想要的结果

    def Foo(**args):
    print args
    D = {'name':'bao','age':25,'city':'anhui'}
    #Foo(D) 这个执行后得出的结果是格式错误
    Foo(**D) 这个才是我们想要的结果



  • 相关阅读:
    36、基于TCP、UDP协议的嵌套字通信
    34、异常以及网络编程
    作业4月15号
    31、反射与内置方法、元类
    30、多态与鸭子类型以及内置函数
    作业4月9号
    29、继承
    作业4月8号
    28、封装
    27、面向对象
  • 原文地址:https://www.cnblogs.com/smail-bao/p/5654273.html
Copyright © 2020-2023  润新知