1.day1知识点复习
三元运算符
接收结果的变量 = 条件为真的结果 if 条件 else 条件为假的结果
接收结果的变量 = “真结果” if 条件 else “假结果”
# 命名空间 和 作用域
# 三种:内置 全局 局部
# 作用域:全局 局部 globals() locals()
# global 在局部声明一个全局变量
# nonlocal 在局部声明最近的上一层局部中的变量
# 作用域链 : 小范围用变量的时候,先从自己的名字空间找,
# 找不到就一层一层向外层找,知道找到为止。
# 找不到就报错。
# 函数的嵌套调用和嵌套定义
# 定义在函数内部的函数不能被外界直接调用
# 内部函数可以使用外部的变量
# 函数名的本质
# 就是一串内存地址
# 可以赋值、可以作为容器类型的元素、函数的参数和返回值 —— 第一类对象
# 闭包 : 内部函数使用外部函数的变量
def outer():
a = 1
def inner():
print(a)
return inner
i = outer()
i()
二,作业
1、写函数,接收n个数字,求这些参数数字的和。
def sum_func(*args):
total = 0
for i in args:
total += i
return total
print(sum_func(1,2,3,8,23,6))
2、读代码,回答:代码中,打印出来的值a,b,c分别是什么?为什么?
a=10
b=20
def test5(a,b):
print(a,b)
c = test5(b,a)
print(c)
//20,10,null
3、读代码,回答:代码中,打印出来的值a,b,c分别是什么?为什么?
a=10
b=20
def test5(a,b):
a=3
b=5
print(a,b)
c = test5(b,a)
print(c)
//3,5,null
装饰器形成的过程 : 最简单的装饰器 有返回值的 有一个参数 万能参数
装饰器的作用
原则 :开放封闭原则
语法糖 :@
装饰器的固定模式
不懂技术
import time
print(time.time()) 获取当前时间
time.sleep(10) 让程序在执行到这个位置的时候停一会儿
def timmer(f): 装饰器函数
def inner():
start = time.time()
ret = f() 被装饰的函数
end = time.time()
print(end - start)
return ret
return inner
@timmer 语法糖 @装饰器函数名
def func(): 被装饰的函数
time.sleep(0.01)
print('老板好同事好大家好')
return '新年好'
func = timmer(func)
ret = func() #inner()
print(ret)
装饰器的作用 —— 不想修改函数的调用方式 但是还想在原来的函数前后添加功能
timmer就是一个装饰器函数,只是对一个函数 有一些装饰作用
原则: 开放封闭原则
开放 : 对扩展是开放的
封闭 : 对修改是封闭的
封版
def outer():
def inner():
return 'inner'
inner()
outer()
装饰带参数函数的装饰器
def timmer(f): 装饰器函数
def inner(*args,**kwargs):
#(1,2) /(1)
start = time.time()
ret = f(*args,**kwargs) #f(1,2) 被装饰的函数
end = time.time()
print(end - start)
return ret
return inner
@timmer 语法糖 @装饰器函数名
def func(a,b): 被装饰的函数
time.sleep(0.01)
print('老板好同事好大家好',a,b)
return '新年好'
@timmer 语法糖 @装饰器函数名
def func1(a): 被装饰的函数
time.sleep(0.01)
print('老板好同事好大家好',a)
return '新年好'
func = timmer(func)
ret = func(1,2) #inner()
ret = func(1,b = 2) #inner()
print(ret)
def wrapper(f): #装饰器函数,f是被装饰的函数
def inner(*args,**kwargs):
'''在被装饰函数之前要做的事'''
ret = f(*args,**kwargs) #被装饰的函数
'''在被装饰函数之后要做的事'''
return ret
return inner
@wrapper 语法糖 @装饰器函数名
def func(a,b): 被装饰的函数
time.sleep(0.01)
print('老板好同事好大家好',a,b)
return '新年好'
def wrapper():
def inner():
pass
return inner
def wrapper(func): qqxing
def inner(*args,**kwargs):
ret = func(*args,**kwargs) 被装饰的函数
return ret
return inner
@wrapper qqxing = wrapper(qqxing)
def qqxing():
print(123)
ret = qqxing() #inner