1.函数对象复习一、函数对象:把函数的内存地址当作一种变量值去使用1.引用x = 10y = xdef func1():print('from func')func1 = 函数的内址func2 = func1 func2()2.可以当作参数传给另外的函数def func1():print('from func')def bar(xxx):print(xxx)xxx()bar(func1)3.可以当作一个函数的返回值def func1():print('from func')def bar():return func1f = bar()f()4.可以当作容器类型的元素def func1():print('from func')l=[func1]print(l)l[0]()def register():print('注册')def login():print('登录')def shopping():print('购物')def pay():print('支付')func_dic={'1':register,'2':login,'3':shopping,'4':pay}while True:print('''0 退出1 注册2 登录3 购物4 支付''')choice=input('>>>: ').strip()if choice == '0':breakif choice in func_dic:func_dic[choice]()else:print('输入错误的指令')2.函数嵌套复习函数嵌套定义def outter():def inner():passx = 10y = 20from math import pidef circle(radius,mode=0):def perimiter(radius):return 2 * pi *radiusdef area(radius):return pi *(radius **2)if mode == 0:return perimiter(radius)elif mode == 1:return area(radius)circle(10,0)函数嵌套调用def max2(x,y):if x > y:return xelse:return ydef max4(a,b,c,d):res1 = max2(a,b)res2 = max2(res1,c)res3 = max2(res2,d)return res33.名称空间与作用域1)什么是名称空间namespaces存放名字与值内存地址绑定关系的地方2)为何要有名称空间3)如何用名称空间内置名称空间全局名称空间局部名称空间4)总结结论:1.查找名字的顺序是从当前位置往外查找2.名称空间的嵌套关系是在函数定义阶段就固定死的与调用位置无关def outter():x = 11111def inner():print(x)return innerf = outter()def foo():x = 222222222f()foo()1 = []def func():l.append(111)l.append(2222)func()print(1)def f1():y = 1111def f2():x = 3333def f3():nonlocal yy = 22224.闭包函数1.什么是闭包函数闭函数:该函数一定是定义在函数内的函数包函数:该内部函数包含对外层函数作用域名字的引用def outter():x = 111def inner():print(x)return innerf = outter()x = 2222f()2.为何要用闭包函数3.如何用为函数体传值的方案一:直接以参数的形式传入def f(x):print(x)f(10)f(11)为函数体传值的方案二:直接以参数的形式传入def outter(x):def f():print(x)return ffff=outter(10)fff()fff1=outter(11)fff1()def outter(x):#x=10def f():print(x)return fxxx=outter(10)yyy=outter(11)print(xxx)5.装饰器1.什么是装饰器装饰器指的是为被装饰对象添加新功能的工具装饰器本身可以是任意可调用对象被装饰对象本身也可以是任意可调用对象2.为何要用装饰器开放封闭原则:对修改封闭,对扩展开发装饰器的实现原则:1.不能修改被装饰对象的源代码2.不能修改被装饰对象的调用方式装饰器的目的:就是在遵循原则1和2的前提为被装饰对象添加新功能3.如何用part1import timedef index():time.sleep(l)print('welcome to index page')def wrapper():start=time.time()func()stop=time.time()print('run time is %s' %(stop-start))wrapper()part2import timedef outter(func):#func=最原始那个index的内存地址def wrapper(*args,**kwargs):start=time.time()res=func(*args,**kwargs)#最原始那个index的内存地址stop=time.time()print('run time is %s' %(stop-start))return res return wrapper@outter#index=outter(index)#index=outter(最原始那个index的内存地址)def index():time.sleep(1)print('welcome to index page')return 1234@outter #home=outter(home)def home(name):time.sleep(1)print('welcome %s to home page' %name)res=index() #wrapper的内存地址()print('返回值',res)home('egon')小练习import timedef auth(func):#func=indexdef wrapper(*args,**kwargs):name=input('name>>>:').strip()pwd=input('pwd>>>:').strip()if name == 'egon' and pwd == '123':print('login successfull')res=func(*args,**kwargs)return reselse:print('user or pwd error')return wrapperdef outter(func):def wrapper(*args,**kwargs):res=func(*args,**kwargs)return wrapperreturn wrapper@outterdef index():time.sleep(1)print('welcome to index page')return 1234index()

转载于:https://www.cnblogs.com/Nayami-L/p/10066199.html

Python学习Day12相关推荐

  1. Python学习day12(生成器,列表/生成器推导式)

    Python学习day12(生成器,列表/生成器推导式) 生成器 初始生成器 我们知道的迭代器有两种:一种是调用方法直接返回的,一种是可迭代对象通过执行iter方法得到的,迭代器有的好处是可以节省内存 ...

  2. python 学习DAY12

    一.函数名的应用 可作为劣表中元素进行储存 可作为参数传递给函数 可作为函数的返回值 二.闭包 具体操作是使内层函数访问外层函数的变量 优点 可以保护局内元素不受外界影响 可以让变量常驻内存,便于快速 ...

  3. Python学习笔记:Day1-2 开发环境搭建

    前言 最近在学习深度学习,已经跑出了几个模型,但Pyhton的基础不够扎实,因此,开始补习Python了,大家都推荐廖雪峰的课程,因此,开始了学习,但光学有没有用,还要和大家讨论一下,因此,写下这些帖 ...

  4. Python学习笔记:Day 16 编写移动App

    前言 最近在学习深度学习,已经跑出了几个模型,但Pyhton的基础不够扎实,因此,开始补习Python了,大家都推荐廖雪峰的课程,因此,开始了学习,但光学有没有用,还要和大家讨论一下,因此,写下这些帖 ...

  5. Python学习笔记:Day15 部署Web App

    前言 最近在学习深度学习,已经跑出了几个模型,但Pyhton的基础不够扎实,因此,开始补习Python了,大家都推荐廖雪峰的课程,因此,开始了学习,但光学有没有用,还要和大家讨论一下,因此,写下这些帖 ...

  6. Python学习笔记:Day14 完成Web App

    前言 最近在学习深度学习,已经跑出了几个模型,但Pyhton的基础不够扎实,因此,开始补习Python了,大家都推荐廖雪峰的课程,因此,开始了学习,但光学有没有用,还要和大家讨论一下,因此,写下这些帖 ...

  7. Python学习笔记:Day13 提升开发效率

    前言 最近在学习深度学习,已经跑出了几个模型,但Pyhton的基础不够扎实,因此,开始补习Python了,大家都推荐廖雪峰的课程,因此,开始了学习,但光学有没有用,还要和大家讨论一下,因此,写下这些帖 ...

  8. Python学习笔记:Day 12 编写日志列表页

    前言 最近在学习深度学习,已经跑出了几个模型,但Pyhton的基础不够扎实,因此,开始补习Python了,大家都推荐廖雪峰的课程,因此,开始了学习,但光学有没有用,还要和大家讨论一下,因此, 写下这些 ...

  9. Python学习笔记:Day11 编写日志创建页

    前言 最近在学习深度学习,已经跑出了几个模型,但Pyhton的基础不够扎实,因此,开始补习Python了,大家都推荐廖雪峰的课程,因此,开始了学习,但光学有没有用,还要和大家讨论一下,因此,写下这些帖 ...

最新文章

  1. 亚信产业互联网生态亮相2016南京软博会
  2. sap和OA之间数值传递2(工程创建)
  3. YoloV3网络模型搭建
  4. gh0st支持win7和win8
  5. pythonqt4上位机开发_上位机开发之单片机通信实践(一)
  6. Redis与数据库缓存一致性问题
  7. MQTT工作笔记0005---CONNECT控制报文2
  8. RoadStar创始人曝光真相:投资方忽然冻结账户,威逼利诱抢公章
  9. 信息发展树标杆 智慧城市筑屏障
  10. 如何使用计算机蓝牙设备管理器,电脑设备管理器连接蓝牙的方法
  11. cesium 构建天空盒
  12. 动作捕捉助力无人车多源传感器信息融合导航技术
  13. 如何在PS(Adobe Photoshop)安装Portraiture3插件教程
  14. 做互联网最重要的是希望! 【水木周平】
  15. matplotlib库的pyplot的plot()函数详解
  16. 一起写RPC框架(一)RPC之我所见
  17. 第十五天 11-常见的网络相关命令
  18. FH8626V100之开发环境搭建
  19. 底层软硬件及物联网传感技术决定数字人系统“进化”水平
  20. 程序员——应届生毕业,竟有20k高薪岗位?!

热门文章

  1. linux脚本 let,通过shell 脚本查看服务器的时时流量
  2. SpringBoot常用注解说明
  3. tomcat的连接数与线程池
  4. php rabbitmq延迟队列示例
  5. Go语言标准库之fmt.Print
  6. 定位导航方案在特殊环境下的适用说明
  7. [python机器学习及实践(2)]Sklearn实现朴素贝叶斯
  8. Xcode9 2 编译在iOS8 1 系统上图片显示异常
  9. 《人机交互与戏剧表演:用戏剧理论构建良好用户体验》一导读
  10. Spring Boot使用自定义的properties