008python路--函数
函数
概念
1.重复代码变得简洁
2.方便功能的修改
3.代码一处修改,处处修改
创建
def add(x,y): print('x+y=%s'%(x+y)) add(3,4) #调用
参数
def add( name, age ):
print(name ,age)
#==========================
add( name = 'xiaohu' ,age = 12)
默认参数--放最后
def add( name, age ,sex='male'):
print(name ,age,sex)
#==========================
add( name = 'xiaohu' ,age = 12)
不定长参数
def add(*args): #放到元组 print(args) #(1, 2, [5, 3],) add(1,2,[5,3], )
def info(**kwargs): #放到字典 print(kwargs) #{'name': 'alex', 'age': 15} info( name='alex',age=15)
传参
def f(*args): print(args) f(*[1,2,3,]) #(1, 2, 3)
return
如果返回多个值,会将值封装在一个元组中
info = {"name":age}
return info
接受字典,得到封装后的数据,
定义域
count= 10 def f(): global count #定义count是全局的,就能修改count的值 print(count) count = 5 f() print(count) #10 #5
变量位置不同,加的标识符也不同
def outer():
count =10
def inner():
nonlocal count
count = 20
print(count)
inner()
print(count)
outer()
高阶函数
def fm(a,b,fun):
return fun(a)+fun(b)
def f(n):
return n*n
print(fm(3,4,f))
函数名代表地址,函数()表示内容
匿名函数
# 普通函数
def add(a, b):
return a + b
print(add(2, 3))
# 匿名函数
add = lambda a, b: a + b
print(add(2, 3))
递归函数
阶乘
def f(n):
if n == 0:return 1
return n*f(n-1)
print( f(5))
斐波那契
def f(n):
if n==1:return 0
if n==2:return 1
return f(n-1)+f(n-2)
print(f(7))
内置函数
filter(function, sequence)
str = ['a', 'b', 'c', 'd']
def fun1(s):
if s != 'a':
return s
ret = filter(fun1, str)
print(list(ret)) # ret是一个迭代器对象
#结果['b', 'c', 'd']
map(function, sequence)
str = ['a', 'b']
def fun2(s):
return s + "alvin"
ret = map(fun2, str)
print(list(ret)) # map object的迭代器
#结果['aalvin', 'balvin']
reduce(function, sequence, starting_value)
from functools import reduce
def add1(x, y):
return x + y
print(reduce(add1, range(1, 101))) ## 4950 (注:1+2+...+99)
print(reduce(add1, range(1, 101), 20)) ## 4970 (注:1+2+...+99+20)

浙公网安备 33010602011771号