一、函数作为参数
#### 例1
def f1():
print('F1被执行')
def f2(arg):
arg() #f1 = arg 当f1被作为参数传进来的时候,arg() 就相当于f1()也就是调用了f1函数
return 'F2被执行'
ret = f2(f1) #f1不加括号时,代指函数,
print(ret)
#### 例2
def Myfilter(founc,li):
result = []
for i in li:
ret = founc(i) #由于执行函数的时候传的是f1,这里执行f1函数,返回的值赋给ret
if ret:
result.append(i)
return result
def f1(x):
return True if x > 22 else False #当执行到founc(i)的时候,调用函数f1,并判断x(也就是i)的值
r = Myfilter(f1,[11,22,33,44]) #执行函数Myfilter并返回值赋值给r
print(r)
二、冒泡排序
利用一个中间值,讲两个数值交换
li = [11,22,33,44,55]
temp = li[1] #temp = 22
li[1] = li[2] #li[1] =33
li[2] = temp #li[2] = temp = 22
print(li) #[11,33,22,44,55]
li = [33,2,10,1]
for j in range(1,len(li)):
for i in range(len(li)-j): #逐渐减少次数
if li[i] > li[i + 1]: #每循环一次判断两个值的大小,交换位置
temp = li[i]
li[i] = li[i + 1]
li[i + 1] = temp
print(li) #[1, 2, 10, 33]
三、递归
#不是递归,递归执行步骤
def f1():
return 'f1' #第五步执行f1函数,得到返回值f1,将其返回给调用他的函数
def f2(): #第四步当f2函数执行的时候,内部执行f1函数
r = f1() #第六步,收到f1的返回值,并返回
return r
def f3(): #第三步当f3函数执行的时候,内部执行f2函数
r = f2() #第七步,收到f2的返回值,并返回
return r
def f4(): #第二步当f4函数执行的时候,内部执行f3函数
r = f3() #第八步,收到f3的返回值,并返回给f4
return r
ret = f4() #第一步执行f4函数,返回值赋给ret
print(ret) #第九步,打印收到的返回值
# #递归,在函数中调用自身
def func(a1, a2):
print(a1)
a3 = a1 + a2
func(a2,a3)
func(0,1)
#用递归获取 菲波那契数列 第10个返回值
def func(num, x, y):
if num == 10:
return x
z = x + y
r = func(num + 1, y, z)
ret = func(1,0,1)
print(ret)
四、装饰器初识
def outer(func):
r = func() #f1被作为参数传递过来,等于func,这里执行f1
return r
@outer #执行outer函数,将下面的函数作为参数,传给outer函数
def f1():
print('f1')
评论
发表评论