test.py中的内容:
#coding:utf-8 #支持中文
#函数的声明/定义
def func1(): #无参数
print "爽歪歪"
def func2(name): #有参数
print (name + "我爱你")
def add1(num1,num2): #有参数
print num1+num2
def add2(num1,num2): #有返回值
return num1+num2
#函数的调用
func1()
func2('小甲鱼')
add1(10,20)
count = add2(1,2)
print count
gjw@gjw:~/TEST_PYTHON$ python ./test.py
爽歪歪
小甲鱼我爱你
30
3
–
def sayword(name = '小甲鱼',word = '爽歪歪'): #实参用关键字索引
print name+'->'+word
sayword(word = '让编程改变世界',name = '小甲鱼')
sayword()
结果:
小甲鱼->让编程改变世界
小甲鱼->爽歪歪
–
收集参数
【1】编写函数,很多情况下我们都会传递一系列值作为参数。为了让用户更加方便地给函数提供任意多的值作为参数, Python 中实现了一个 收集参数 的机制:在参数名前面加星号 ( * )。即: def cParam( *params ): pass 。来几行代码看看具体情况:
>>> def cParam1( *params ):
print params
函数调用:
>>> cParam1() #无参数时,返回空的元组
()
>>> cParam1(1) #输出的是元组
(1,)
>>> cParam1(1, 2) #输出的是元组
(1, 2)
【2】
【局限性】上面不能传递“关键字参数”
【解决方案】引出两个星号(**),例:
>>> def cParam2( **params ):
print params
函数调用:
>>> cParam2() #输出的是字典
{}
>>> cParam2( a=1, b=2, c=3 ) #输出的是字典
{'a': 1, 'c': 3, 'b': 2}
【3】* 和 ** 是可以一起使用的,返回元组/字典的结合体。
>>> def cParam3( *params1,**params2 ):
print params1
print params2
函数调用:
>>> cParam3()
() #空元组
{} #空字典
>>> cParam3(1)
(1,) #元组
{} #空字典
>>> cParam3(1,2,3,a=10,b=20)
(1,2,3) #元组
{'a': 10, 'b': 20}
【4】*与元组一起使用,作为函数的实参
#coding:utf-8 #支持中文
def add(a,b):
return a+b
def cParam(*params):
return params
print(cParam(1,2)) #(1, 2)
print(add(*cParam(1,2))) #3
输出:
(1, 2)
3