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

【Python】学习笔记十三:函数的参数对应

时间:2017-10-17 18:52:45      阅读:166      评论:0      收藏:0      [点我收藏+]

标签:分享   name   width   元素   注意   png   传递值   元组   一个   

位置传递

我们在定义函数时候已经对函数进行了参数传递调用,但是那只是粗浅的位置传递

示例

def sum(a,b,c):
    d = a+b+c
    return d
print(sum(1,2,3))

调用函数sum的时候,1,2,3分别传递给a,b,c

关键字传递

关键字传递是根据每个参数的名字传递参数

print(sum(c=3,b=2,a=1))

关键字可以跟位置传递混合使用,但是位置参数要出现在关键字参数之前

print(sum(1,c=3,b=2))

参数默认值

在定义参数时,使用形如a=10的方式,可以给参数赋予默认值(default),如果参数最终没有被传递值,将使用该默认值。

def sum(b,c,a=10):
    d = a+b+c
    return d
print(sum(c=3,b=2))

默认值需要写在最后,否则报错!

技术分享

调用时候没有a的值,则使用了默认值

打印屏幕结果为:

技术分享

包裹传递

在定义函数时候,我们并不知道调用函数的时候需要传递多少个参数。这时候,使用包裹传递会非常有用

下面是包裹位置传递的例子

def func(*num):
    print(type(num))
    print(num)

func(1,2,3)
func(1,2,3,44,56)

两次调用,尽管参数个数不同,但是都是基于函数func定义。在func的参数表中,所有的参数被name收集,根据位置合成了一个元组(tuple),这就是包裹传递

在元组前加*

下面是包裹关键字传递的例子

def func(**dict):
    print(type(dict))
    print(dict)

func(a=1,b=2,c=3)
func(a=1,b=2,c=3,d=44,e=56)

dict是一个字典,收集所有的关键字,传递函数给func。为了提醒Python,参数dict是包裹关键字传递所用的字典,

在dict前加**

解包裹

*与**也可以在调用的时候使用

下面为例子:

def func(a,b,c):
    print(a,b,c)
args = (1,6,3)
func(*args)

所谓的解包裹,就是在传递tuple时,让tuple的每一个元素对应一个位置参数。在调用func时使用*,是为了提醒Python:我想要把args拆成分散的三个元素,分别传递给a,b,c。

相应的,也存在对词典的解包裹,使用相同的func定义,然后:

def func(a,b):
    print(a,b)

dict={‘a‘:1,‘b‘:2}
func(**dict)

注意:请注意定义时和调用时的区分。包裹和解包裹并不是相反操作,是两个相对独立的过程。

【Python】学习笔记十三:函数的参数对应

标签:分享   name   width   元素   注意   png   传递值   元组   一个   

原文地址:http://www.cnblogs.com/OliverQin/p/7682942.html

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