python全栈开发 * 11知识点汇总 * 1806011

Posted j-7-h-2-f-7

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python全栈开发 * 11知识点汇总 * 1806011相关的知识,希望对你有一定的参考价值。

一.函数名的运?, 第?类对象
函数名是?个变量, 但它是?个特殊的变量, 与括号配合可以执?函数的变量
1. 函数名的内存地址
def func(fn):
print(fn)
print(func) #结果:打印函数的内存地址 <function func at 0x0000028AA22F2EA0>
2.函数名可以赋值给其他变量
def func1():
print("端午节")
b=func1 #将函数名func1赋值给b ,
b() #执行结果和 func1的执行结果一样 "端午节"
3. 函数名可以当做容器类的元素
def func2():
print("贝贝")
def func3():
print("京京")
def func4():
print("欢欢")
lst=[func2,func3,func4] #如果加括号打印 e ,结果是三个None. 因为没有返回值.
for e in lst:
e() #结果是 贝贝 京京 欢欢;
4.函数名可以当做函数的参数
def func5():
print("端午节要放假,哈哈哈")
def func6(fn): # fn= func5
print("下周就是端午节") #第一步
fn() #第二步 相当于执行func5() 结果是:端午节要放假,哈哈哈
print("真的吗") #第三步
func6(func5) #func5 作为参数,
5.函数名可以作为函数的返回值
def func7():
print("函数一")
def func8():
print("函数二")
print("函数一")
return func8
ret=func7() #func7()反悔的结果是func8,并赋值给ret
ret() #ret() 就相当于func8() 结果是"函数二"
?.闭包就是内层函数, 对外层函数(非全局)的变量的引?.
闭包的作用 让?个变量能够常驻内存. 供后?的程序使?.
def func():
name="mary"
def func1():
print(name) #闭包 如果是 # name = "alex" 则返回None.
func1()
print(func1.__closure__) #_ _closure_ _来检测函数是否是闭包,返回 cell 就是闭包,(<cell at 0x000002AF8F9475B8: str object at 0x000002AF8F9D89D0>,)
# 返回 None就不是闭包.
func()
#多层嵌套:
def func1():
def func2():
def func3():
print("嘿嘿")
return func3
return func2
func1( )( )( )
三.装饰器初识
开闭原则, ?被成为开放封闭原则,你的代码对功能的扩展是开放的, 你的程序对修改源代码是封闭的. 这样的软件设计思路可以
更好的维护和开发.
1.定义一个函数
def creat_people():
print("抟泥土,捏泥人")
creat_people()
2.添加功能
def creat_people():
print("浇水") #增加功能 (但是改变代码了,不符合开放封闭原则)
print("抟泥土,捏泥人")
creat_people()
""" 装饰器执行流程
1. ?先访问warter(create_people).
2. 把你的?标函数传递给warter的形参fn. 那么后?如果执?了fn意味着执?了你的?标函数create_people
3. warter()执?就?句话. 返回inner函数. 这个时候. 程序认为warter()函数执?完. 那么前?的create_people函数名
被重新覆盖成inner函数
4 执?create_people函数. 实际上执?的是inner函数. ?inner中访问的恰恰使我们最开
始传递进去的原始的create_people函数
"""
3.装饰器雏形 用语法糖简化代码 语法糖语法( @装饰器 )
def water(fn):
def inner():
print("浇水")
fn()
print("吹仙气")
return inner
@water
def creat_people():
print("抟泥土,捏泥人")
creat_people()
4.装饰器的完整模型代码
def wrapper(func):
def inner(*args,**kwargs): # * 聚合
print("快放假了")
#目标函数之前的内容
ret=func(*args,**kwargs) # * 打散
print("好开心")
#目标函数后面的内容
return ret
return inner
@wrapper #target_func=wrapper(func)
def target_func():
print("我是目标函数,你们都让路")
target_func()





























































































以上是关于python全栈开发 * 11知识点汇总 * 1806011的主要内容,如果未能解决你的问题,请参考以下文章

python全栈开发 * 10知识点汇总 * 180612

python全栈开发* 02 知识点汇总 * 180531

python全栈开发 * 22 知识点汇总 * 180703

python全栈开发 * 18 面向对象知识点汇总 * 180530

python全栈开发 * 23 面向对象 知识点汇总 * 180704

python全栈开发 * 30知识点汇总 * 180713