1.函数参数带默认值
def helloworld(hello="hello", name="world"):
print("{}, {} !".format(hello, name))
调用:
import Funciton as Fun
#以下三种调用都可以。
Fun.helloworld()
Fun.helloworld("hi")
Fun.helloworld("hi","zhangjing")
输出:
hello, world !
hi, world !
hi, zhangjing !
2.带一个型号(*),表示收集参数。按元组收集参数
def printparameter(title, *param):
print(title)
if param:
print(param)
else:
print("Null")
调用:
import Funciton as Fun
Fun.printparameter("aaa")
Fun.printparameter("aaa", 123, "abc")
输出:
aaa
Null
aaa
(123, 'abc') #这是一个元组
3.带两个型号(**),表示收集参数。按字典收集参数
def printparameter1(title, **param):
print(title)
if param:
print(param)
else:
print("Null")
调用:
Fun.printparameter("aaa")
Fun.printparameter1("aaa", a=123, b=456, c="zhangjing")
输出:
aaa
Null
aaa
{'a': 123, 'b': 456, 'c': 'zhangjing'} #这是一个字典
以上都可以在写函数时用到,注意第2和第3个方法的写法,特别是函数调用时的写法。
在Python中定义函数,可以用必选参数、默认参数、可变参数和关键字参数,这4种参数都可以一起使用,或者只用其中某些,但是请注意,参数定义的顺序必须是:必选参数、默认参数、可变参数和关键字参数。
Python中函数定义主要包含4类参数:
(1)必选参数;
(2)默认参数;
(3)可变参数;
(4)关键字参数;
必选参数
def power(x):
"""
x: 必选参数
"""
return x ** 2
默认参数
def power(x, n=2):
"""
n: 默认参数
"""
return x ** n
可变参数(带一个星号*)(元组)
即传入的参数个数是可变的。
def calc(*numbers):
"""
numbers: 可变参数
"""
print numbers
sum = 0
for n in numbers:
sum = sum + n * n
return sum
调用方式:
(1) calc(1, 2, 3)
(2) aa = [1, 2, 3]
calc(*aa)
参数numbers接收到的是一个tuple: (1, 2, 3)
关键字参数(带两个星号**)(字典)
关键字参数允许你传入0个或任意个含参数名的参数,这些关键字参数在函数内部自动组装为一个dict。
def person(name, age, **kw):
"""
kw: 关键字参数
"""
print 'name:', name, 'age:', age, 'other:', kw
调用方式:
(1)person(‘Adam’, 45, gender=’M’, job=’Engineer’)
(2)kw = {‘city’: ‘Beijing’, ‘job’: ‘Engineer’}
person(‘Jack’, 24, **kw)
***********************************************************************************
def printparameter2(title, name="abc", *param1, **param2): print(title) print(name) if param1: print(param1) else: print("可变参数为空。") if param2: print(param2) else: print("关键字参数为空。")
调用:
t = (1, 3, 4) v = {"a": 1, "b": 2} Fun.printparameter2("zhangjing", "love you.", *t, **v) #注意调用时 实参 t 和 实参 v 之前要加 * 和 ** 。 如果不定义 t 和 v ,可直接 按照下面的写。 Fun.printparameter2("zhangjing", "love you.", 1, 3, 4, a=1, b=2)
两个输出的结果是一样的。