一、方位参数
调用函数时依据函数界说的参数方位来传递参数。
#!/usr/bin/env python
# coding=utf-8
def print_hello(name, sex):
sex_dict = {1: u’先生’, 2: u’女士’}
print ‘hello %s %s, welcome to python world!’ %(name, sex_dict.get(sex, u’先生’))
# 两个参数的次序有必要一一对应,且少一个参数都不能够
# print_hello(‘tanggu’, 1)
二、关键字参数
用于函数调用,经过“键-值”方法加以指定。能够让函数愈加明晰、简单运用,一起也清除了参数的次序需求。
# 以下是用关键字参数正确调用函数的实例
# print_hello(‘tanggu’, sex=1)
# print_hello(name=’tanggu’, sex=1)
# print_hello(sex=1, name=’tanggu’)
# 以下是过错的调用方法
# print_hello(1, name=’tanggu’)
# print_hello(name=’tanggu’, 1)
# print_hello(sex=1, ‘tanggu’)
经过上面的代码,咱们能够发现:有方位参数时,方位参数有必要在关键字参数的前面,但关键字参数之间不存在先后次序的
三、默许参数
用于界说函数,为参数供给默许值,调用函数时可传可不传该默许参数的值(留意:一切方位参数有必要出现在默许参数前,包含函数界说和调用)
# 正确的默许参数界说方法–> 方位参数在前,默许参数在后
def print_hello(name, sex=1):
….
# 过错的界说方法
def print_hello(sex=1, name):
….
# 调用时不传sex的值,则运用默许值1
# print_hello(‘tanggu’)
# 调用时传入sex的值,并指定为2
# print_hello(‘tanggu’, 2)
四、可变参数
界说函数时,有时分咱们不确定调用的时分会传递多少个参数(不传参也能够)。此刻,可用包裹(packing)方位参数,或许包裹关键字参数,来进行参数传递,会显得十分便利。
1、包裹方位传递
def func(*args):
….
# func()
# func(a)
# func(a, b, c)
咱们传进的一切参数都会被args变量搜集,它会依据传进参数的方位合并为一个元组(tuple),args是元组类型,这便是包裹方位传递。
2、包裹关键字传递
def func(**kargs):
….
# func(a=1)
# func(a=1, b=2, c=3)
kargs是一个字典(dict),搜集一切关键字参数
五、解包裹参数
*和**,也能够在函数调用的时分运用,称之为解包裹(unpacking)
1、在传递元组时,让元组的每一个元素对应一个方位参数
def print_hello(name, sex):
print name, sex
# args = (‘tanggu’, ‘男’)
# print_hello(*args)
# tanggu 男
2、在传递词典字典时,让词典的每个键值对作为一个关键字参数传递给函数
def print_hello(kargs):
print kargs
# kargs = {‘name’: ‘tanggu’, ‘sex’, u’男’}
# print_hello(**kargs)
# {‘name’: ‘tanggu’, ‘sex’, u’男’}
六、方位参数、默许参数、可变参数的混合运用
基本原则是:先方位参数,默许参数,包裹方位,包裹关键字(界说和调用都应遵从)
def func(name, age, sex=1, *args, **kargs):
print name, age, sex, args, kargs
# func(‘tanggu’, 25, 2, ‘music’, ‘sport’, class=2)
# tanggu 25 1 (‘music’, ‘sport’) {‘class’=2}