首页 > 编程语言 > 详细

python 的参数总结

时间:2019-09-23 11:18:40      阅读:125      评论:0      收藏:0      [点我收藏+]

一、形参和实参

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

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

  形参:  

    定义函数的参数

  实参:

    调用函数时的参数

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

  值传递:

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

  引用传递:

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

# 值传递和引用传递
def fun(obj):
    print(obj)
    obj += 1

obj1 = "123456"
demo(obj1)
print("函数调用后 obj1:" + obj1)

obj2 = [1 ,2,3]
demo(obj2)
print("函数调用后:"+ 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、可变参数(不定长参数)

  可变参数有两种形式:一种时 *arg, 一种时 ** kwargs 

  *args :

    这种形式表示接受任意多个实际参数将其放到一个与那组中

  **kwargs:

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

#可变参数
#*args形式
def demo3(*args):
    print "\n I like coffee:"
    for i in args:
        print i,
#调用形式:可直接传一个tuple
demo3(巴西,土耳其)
#也可以通过list或者tuple的变量传
obj1=[蓝山,摩卡,卡布奇诺]
demo3(*obj1)

#**kwargs形式
def person(name, age, **kw):
    print\n name:, name, age:, age, other:, kw
def demo4(**kwargs):
    print "\n 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 中定义函数,可以用必选参数,默认参数,可变参数,关键字参数组合使用,但是注意,参数定义的顺序必须是: 

  必选参数、默认参数、可变参数、关键字参数

 

 

              

python 的参数总结

原文:https://www.cnblogs.com/jcjc/p/11570770.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!