一、函数的定义
函数代码块以 def 关键词开头,后接函数标识符名称和圆括号()。
任何传入参数和自变量必须放在圆括号中间。圆括号之间可以用于定义参数。
函数的第一行语句可以选择性地使用文档字符串—用于存放函数说明。
函数内容以冒号起始,并且缩进。
return [表达式] 结束函数,选择性地返回一个值给调用方。不带表达式的return相当于返回 None。
例子
#!/usr/bin/env python
# -*- coding:utf-8 -*-
# author: xulinjie time:2017/10/13
def func(a):
print('number is:',a)
return
h=func(1)
print(h)
#输出:
#D:\Py3.6\python.exe D:/Pylearn/函数.py
#number is: 1
#None
二、函数参数
其实上面的例子一句用到了函数参数,这里我再举一个比较与其语言不一样的一个python特点
#!/usr/bin/env python
# -*- coding:utf-8 -*-
# author: xulinjie time:2017/10/13
def func(a,b):
return a,b
h,y=func(1,2)
print(h,y)
#输出:
#1,2
上面例子说明python可以再函数中一次返回多个值,至少这个这样的return再CC++是行不通的!
三、参数默认值
设置默认值
def func(x):
return x * x
这个函数是在计算x的二次方,那我现在如果想计算三次方
def func(x):
return x * x * x
上面的方法显得有点麻烦,所以可以用默认值
#!/usr/bin/env python
# -*- coding:utf-8 -*-
# author: xulinjie time:2017/10/13
def func(a,n=3):
return a*a*a**n
h=func(2)
print(h)
y=func(2,4)
print(y)
#输出:
#32
#64
从上面的例子可以看出,默认参数可以简化函数的调用。设置默认参数时,有几点要注意:
一是必选参数在前,默认参数在后,否则Python的解释器会报错
二是如何设置默认参数。
当函数有多个参数时,把变化大的参数放前面,变化小的参数放后面。变化小的参数就可以作为默认参数。
使用默认参数有什么好处?最大的好处是能降低调用函数的难度。
四、可变参数(利用一个或两个)
def func(a,*b,**c):
print(a,b,c)
上面的两个可变参数,*b它的类型是tuple(元组类型),**c是dict(字典类型),待会输出可以观察出来
元组类型test = (1, 2, 3)
字典类型(需要有键值-值)d={‘xulinjie’:’xlj@qq.com’,’xjxjxj’:’op@qq.com’}
def func(a,*b,**c):
print(a,b,c)
func(1,2,3,4,xu=1,ja=2)
输出如下(除了第一个数1是a的,其他都是元组或者字典):2,3,4代表一个元组,xu=1,ja=2代表一个字典。所以说参数数量是可变的!
可变参数就是能够再函数参数中定义任意变量,也就是说参数数量是可变的,通过使用*号来实现
def func(*num):
for num2 in num:
print(num2)
func(1,2,3,4)
#输出
#1
#2
#3
#4
五、关键字参数
如果具有许多参数的函数,而你又希望只对其中的一些进行指定,那么就可以通过关键字参数,我们使用命名(关键字)而非位置来指定函数中的参数
利用关键字参数的优点
1.不再需要考虑参数顺序
2.我们可以只对那些我们希望赋予参数以赋值,只要其他的参数都具有默认参数值
例子
#!/usr/bin/env python
# -*- coding:utf-8 -*-
# author: xulinjie time:2017/10/13
def func(a,b=2,c=5):
print('a:',a,'b:',b,'c:',c)
func(1,3,6)
func(1,3)
func(1,c=8)
func(c=8,a=9)
输出:
六、组合参数
可以用必选参数、默认参数、可变参数和关键字参数,这4种参数都可以一起使用,或者只用其中某些,但是请注意,参数定义的顺序必须是:必选参数、默认参数、可变参数和关键字参数。(这里指的可变参数是*d,关键字参数指**d)
def func(a, b, c=0, *args, **kw):
print 'a =', a, 'b =', b, 'c =', c, 'args =', args, 'kw =', kw
七、递归函数
#!/usr/bin/env python
# -*- coding:utf-8 -*-
# author: xulinjie time:2017/10/13
def func(n):
if n==1:
print('递归结束')
else:
print('递归在跑')
func(n-1)
func(10)