参数2

# -*- coding: utf-8 -*-
#python 27
#xiaodeng
#参数2


#默认情况下,参数都是通过其位置进行匹配,从左到右,而且必须精确地传递和函数头部参数名一样多的参数
#关键点:
'''
1、位置:从左到右进行匹配,按照顺序将参数传递给函数头部的参数名称
2、关键字参数:通过参数名进行匹配
   调用者可以定义哪一个函数接受这个值,使用name=value的方式来传递参数
3、默认参数:为没有传入值的参数定义默认的参数值
    使用name=value的方式,首先默认给参数传递一个值,如url=None,如果不给参数赋值就参数默认的值为None
4、可变参数:收集任意多基于位置或关键字的参数
   如:*args,支持可变长度参数的tuple
5、*kwargs传递值的方式,传入的格式是一个dict
'''


#语法匹配
'''
func(value)                     #常规参数:通过位置进行匹配
func(name=value)                #关键字参数:通过变量名匹配
func(*args)                     #tuple,以name传递所有的对象,并作为独立的基于位置的参数
func(**dict)                    #以name成对的传递所有的关键字/值,并作为独立的关键字参数
'''



#细节:
#在函数调用中,参数出现的先后顺序:任何位置参数(value),任何关键字参数(name=value),*args、**dict
#


#案例
#常规参数
def f(a,b,c):
        print a,b,c
        
f(1,2,3)


#关键字参数及其优点
#先后顺序已经不重要。
#起到数据标签的作用,可以一目了然的知道数据的含义是什么,如:name='xiaodeng',可以清楚的知道xiaodeng是名字
f(a=2,b=2,c=5)



#任意参数的实例
#*args和**kwargs让函数支持接受任意数目的参数
#收集参数
#python将所有位置相关的参数收集到一个新的元组中
def f(*args):
        print args


f(1)#注意结果是一个tuple结构
f(1,2)
f(1,2,3)


def my(**args):
        print args


my()
my(name='xiaodeng',age=28)
my(name='xiaodeng', age=28, sex = 1)#name等name值是不需要引号的,请特别注意

 

posted @ 2015-10-22 21:37  Xiao|Deng  阅读(140)  评论(0编辑  收藏  举报