Python第十课学习
www.cnblogs.com/yuanchenqi/articles/5828233.html
函数:
1 减少代码的重复
2 更易扩展,弹性更强;便于日后文件功能的修改
3 保持代码的一致性
#计算机中的函数; subroutine 子程序 ;procedures 过程
定义:
函数是指...
函数的创建:
def (define)函数的关键字
#创建
def f():
print("OK")
#调用
f()
# f() 调用 ;f 变量
调用时,一定要加上()
函数名的命名规则:
1 字母数字下划线;不能是特殊字符
2 区分大小写
3 不能使用关键字
默认参数一定要跟在其他参数后面
关于不定长参数位置:
*args 放在前面 ;**kwargs 放在右边;如果有默认参数,放左边
优先级;
def function(name,age=22,*args,**kwarga)
函数作用域:
4 大作用域
4大参数: 必要参数 关键字参数 默认参数 不定长参数
函数的名字既可以作为参数也可以作为返回值
只有 模块 类 函数 才能引入新的作用域
关于递归:
1 内部自己调用自己
2 需要存在一个结束条件
注意: 但凡是递归可以写的程序,循环都可以做
而且,通常递归的效率非常的
内置函数:
abs(n) 绝对值
all(iterable) 当列表内的所有元素为真时,返回为True
参考: www.cnblogs.com/yuanchenqi/aritcles/5830025.html
装饰器
复习:
1 作用域: L E G B
x=10
def f():
t=5
a=3
def inner():
count=7
print (a)
return 1
2 高阶函数:(满足两个条件:1 函数名可以作为参数输入;2 函数名还可作为返回值)
3 闭包: 闭包=函数块+定义函数时的环境
def outer():
x=10
def inner(): # inner是一个内部函数
print(x) # 外部环境的一个引用
return inner # 此时 inner是一个闭包
outer()() # 等价于 f=outer() f()
# 执行f=outer()时,outer()被执行完毕,此时将
def inner():
print(x)
return inner
赋给f,再执行f()时 ,会调用 inner()
def outer(x):
inner(): # inner是一个内部函数
print(x) # 外部环境的一个引用
return inner # 此时 inner是一个闭包
f=outer(10)
f()
# 等价于 outer()()
装饰器:
def foo():
print('foo...')
foo()
import time
start = time.time() # 打印当前时间
time.sleep(1) # 停留一秒
end = time.time()
print(start)
print(end-start)
开放,封闭原则
def show_time():
start = time.time()
foo()
end = time.time()
print('spend %s' %(end-start))
show_time()
升级
def show_time(f):
start = time.time()
f()
end = time.time()
print('spend %s' %(end-start))
show_time(foo)
再升级
def show_time(f):
def inner()
start = time.time()
f()
end = time.time()
print('spend %s' %(end-start))
return inner
@show_time # 等价于 foo=show_time(foo)
foo() # 执行inner 函数
###>>>撰写程序时,需要去考虑会不会影响其他应用场景<<<###
def logger(flag):
def show_time(f):
def inner(*x,**y)
start = time.time()
f(*x,**f)
end = time.time()
print('spend %s' %(end-start))
if flag == 'true':
print('日志记录')
return inner
return show_time
@logger('true') @ 相当于做了 @show_time
def add(*a,*bb)