zoukankan      html  css  js  c++  java
  • Python基础-12-函数的参数

     

    函数内部

    函数外部

    return

    参数的作用:

    函数参数的作用是传递数据给函数使用。

    在使用的过程中,参数有两种形式:形式参数和实际参数

    形参:定义函数时的参数

    实参:调用函数时的参数

    根据实际参数类型不同,将实际参数传递给形参的方式有两种:值传递和引用传递

    值传递:实参为不可变对象,传递给形参后,形参的值改变,实参值不变。如fun(a),传递的只是a的值,没有影响a对象本身。比如在 fun(a)内部修改 a 的值,只是修改另一个复制的对象,不会影响 a 本身。

    引用传递:实参为可变对象,传递给形参后,形参的值改变,实参值改变。如 fun(la),则是将 la 真正的传过去,修改后fun外部的la也会受影响

    #值传递与引用传递
    def demo(obj):
        print obj
        obj+=obj
    
    obj1="123456"
    demo(obj1)
    print "函数调用后obj1:"+obj1
    
    obj2=[1,2,3]
    demo(obj2)
    print "函数调用后obj2:"+str(obj2)
    #结果
    123456
    函数调用后obj1:123456
    [1, 2, 3]
    函数调用后obj2:[1, 2, 3, 1, 2, 3]
    复制代码

    二、位置参数、关键字参数、默认参数、可变参数

    1.位置参数(必备参数)

    函数调用时的数量,位置,参数类型必须和定义时的一致。

    2.关键字参数

    函数调用时,使用形参的名字=输入的参数值,此时位置可与定义时不一致。

    3.默认参数

    函数定义时,为参数设置一个默认值,当函数调用时,没有传入这个参数值,直接使用这个默认值。注意:

    定义函数时,默认参数必须指向不可变对象;如果指向可变对象,多次调用,可能得到的不是意料之内的结果。

    复制代码
    #默认参数必须指向不可变对象,如果指向可变对象,结果不对
    
    def demo1(obj=[]):
        print obj
        obj.append(1)
    
    def demo2(obj=None):
        if obj==None:
            obj=[]
        print obj
        obj.append(1)
    
    demo1()
    demo1()
    demo1()
    
    demo2()
    demo2()
    demo2()
    #结果
    []
    [1]
    [1, 1]
    []
    []
    []
    复制代码

    4.可变参数(不定长参数)

    可变参数有两种形式:一种是*args,另一种是**kwargs

    *args:这种形式表示接受任意多个实际参数将其放到一个元组中。

    **kwargs:这种形式表示接受任意多个实际参数将其放到一个字典中,类似关键字参数

    复制代码
    #可变参数
    #*args形式
    def demo3(*args):
        print "
     I like coffee:"
        for i in args:
            print i,
    #调用形式:可直接传一个tuple
    demo3('巴西','土耳其')
    #也可以通过list或者tuple的变量传
    obj1=['蓝山','摩卡','卡布奇诺']
    demo3(*obj1)
    
    #**kwargs形式
    def person(name, age, **kw):
        print'
     name:', name, 'age:', age, 'other:', kw
    def demo4(**kwargs):
        print "
     name:age"
        for i,j in kwargs.items():
            print i,':',j
    
    #调用:可直接传一个字典
    person("Paul",77,sex="male",job="teacher")
    #也可以通过字典变量传
    obj2={'Mary':23,'HanMeiMei':34,'Lily':12}
    demo4(**obj2)
    #结果
     I like coffee:
    巴西 土耳其 
     I like coffee:
    蓝山 摩卡 卡布奇诺 
     name: Paul age: 77 other: {'job': 'teacher', 'sex': 'male'}
    
     name:age
    Lily : 12
    Mary : 23
    HanMeiMei : 34
    复制代码

    三、参数组合

    在Python中定义函数,可以用必选参数、默认参数、可变参数、关键字参数组合使用。但是注意,参数定义的顺序必须是:必选参数、默认参数、可变参数、关键字参数。

     文章出处:https://www.cnblogs.com/josie-xu/p/10455702.html

  • 相关阅读:
    HDU 6143 Killer Names【dp递推】【好题】【思维题】【阅读题】
    HDU 6143 Killer Names【dp递推】【好题】【思维题】【阅读题】
    POJ 3974 Palindrome【manacher】【模板题】【模板】
    POJ 3974 Palindrome【manacher】【模板题】【模板】
    HDU 6127 Hard challenge【计算机几何】【思维题】
    HDU 6127 Hard challenge【计算机几何】【思维题】
    HDU 6129 Just do it【杨辉三角】【思维题】【好题】
    HDU 6129 Just do it【杨辉三角】【思维题】【好题】
    HDU 3037 Saving Beans【Lucas定理】【模板题】【模板】【组合数取余】
    8.Math 对象
  • 原文地址:https://www.cnblogs.com/jenny-jenny/p/14756071.html
Copyright © 2011-2022 走看看