函数的定义
def 函数名(参数):
# 函数在执行过程中一旦遇到return时,函数就执行完毕,并将结果返回。
# 函数在执行过程中没有遇到return时,返回值为None.
def hello():
return 'hello'
print 'fentiao'
print hello()
调用函数
Python 内置了很多有用的函数,我们可以直接调用:
• abs()
• cmp()
• 数据类型转换函数:
int(), float(), str(),unicode(),bool()
函数返回值
# 函数返回多个值,实质上是返回一个元组touple,返回时元组可以省略括号,
# 函数调用接受返回值时,按照位置赋值给变量
def func(a, b):
if not isinstance(a, int) or not isinstance(b, int):
print 'error type'
avg = sum((a, b)) / 2
maxnum = max(a, b)
return (avg, maxnum)
myavg, mymax = func(2, 9)
print myavg, mymax
函数的参数
1.默认参数
# 默认参数必须是不可变数据类型
def func1(a=None):
if a is None:
return ['END']
a.append('END')
return a
def func(li=[]):
if len(li) == 0:
return ['END']
li.append('END')
return li
print func([1, 2, 3])
print func()
2.可变参数
# 可变参数
# 定义函数时,形参可以为*args,使函数可以接收多个参数;
# 如果想将一个列表或者元组传入函数,也可以通过*li 或 *t,将参数传入函数里。
def fun(*args):
print type(args)
return max(args), min(args)
li = 87, 23, 34, 77, 2, 66
print fun(*li)
3.关键字参数
# 关键字参数
def enroll(name, age=22, **kwagrgs):
print 'name:', name, '\nage:%d' % age
for key, value in kwagrgs.items():
print '%s:%s' % (key, value)
print type(kwagrgs)
enroll('cici', myclass='linux', gender='male', feel='ll', )
3.总结
参数定义的顺序:必选参数 > 默认参数 > 可变参数 > 关键字参数
*args,可变参数,args接收的是touple
**kwargs,关键字参数,kwargs接收的是dic
# 默认参数,必选参数同时存在函数中存在时,一定将必选参数放在默认参数前面;
# 设置默认参数时,把变化大的参数放在前面,变化小的参数放在后面,变化小的参数可以设置为默认参数。
def enroll(name, age=22, myclass='linux'):
print 'name:', name, '\t age:%d' % age, '\t class:', myclass
enroll('hehe')
enroll('xiaoxiao', 18)
enroll('cici', 24, 'all')
4.变量的作用域
b = 2 # 全局变量,在整个代码中生效
def a():
global b # 将局部变量转换为全局变量
b = 1 # 局部变量,只在函数中生效
print b
a()
print b
示例:
求绝对值的函数
def myabs(a):
if isinstance(a, (int, float)):
# print abs(a)
return abs(a)
else:
print 'bad type for myabs()'
# a = input()
print myabs('ad')