1.day 10 内容复习

# 之前做得的题 以后再遇到能保证会
# 下周二考 :所有的知识
# 面试题:认真对待
#
# 三元运算符
# 接收结果的变量 = 条件为真的结果 if 条件 else 条件为假的结果
# 接收结果的变量 = “真结果” if 条件 else “假结果”
#
# 命名空间 和 作用域
# 三种:内置 全局 局部
# 作用域:全局 局部 globals() locals()
# global 在局部声明一个全局变量
# nonlocal 在局部声明最近的上一层局部中的变量
# 作用域链 : 小范围用变量的时候,先从自己的名字空间找,
# 找不到就一层一层向外层找,知道找到为止。
# 找不到就报错。
# 函数的嵌套调用和嵌套定义
# 定义在函数内部的函数不能被外界直接调用
# 内部函数可以使用外部的变量
# 函数名的本质
# 就是一串内存地址
# 可以赋值、可以作为容器类型的元素、函数的参数和返回值 —— 第一类对象 # 闭包 : 内部函数使用外部函数的变量
def outer():
a = 1
def inner():
print(a)
return inner i = outer()
i()

2.作业讲解

 # 2、写函数,接收n个数字,求这些参数数字的和。
def sum_func(*args):
total = 0
for i in args:
total += i
return total
print(sum_func(1,2,3,8,23,6)) # 3、读代码,回答:代码中,打印出来的值a,b,c分别是什么?为什么?
# a=10
# b=20
# def test5(a,b):
# print(a,b)
# c = test5(b,a)
# print(c) # 4、读代码,回答:代码中,打印出来的值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.装饰器

 # 装饰器形成的过程 : 最简单的装饰器 有返回值的 有一个参数 万能参数
# 装饰器的作用
# 原则 :开放封闭原则
# 语法糖 :@
# 装饰器的固定模式 #不懂技术 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 #
# 讲解元旦作业 扩展装饰器

day 11 装饰器的更多相关文章

  1. 从零开始的Python学习Episode 11——装饰器

    装饰器 装饰器是用来处理其他函数的函数,主要作用是在不修改原有函数的情况下添加新的功能,装饰器的返回值也是一个函数对象. 简单的装饰器 import time def show_time(f): de ...

  2. django 笔记11 装饰器

    在views.py创建 一般用来cookies的装饰器 def auth(func): def inner(request, *args, **kwargs): v = request.COOKIES ...

  3. 函数与装饰器Python学习(三)

    1.1 文件处理 1.1.1 打开文件过程 在Python中,打开文件,得到文件句柄并赋值给一个变量,默认打开模式就为r f=open(r'a.txt','w',encoding='utf-8') p ...

  4. python学习之【第十四篇】:Python中的装饰器

    1.什么是装饰器? 器即函数 装饰即修饰,意指为其他函数添加新功能 装饰器定义:本质就是函数,功能是为其他函数添加新功能 2.遵循的原则 装饰器必须遵循以下两个原则: 不修改被装饰函数的源代码(开放封 ...

  5. day28-描述符应用与类的装饰器

    #!/usr/bin/env python# -*- coding:utf-8 -*-# ------------------------------------------------------- ...

  6. 十一. Python基础(11)—补充: 作用域 & 装饰器

    十一. Python基础(11)-补充: 作用域 & 装饰器 1 ● Python的作用域补遗 在C/C++等语言中, if语句等控制结构(control structure)会产生新的作用域 ...

  7. Day 11 函数名,闭包,装饰器. +作业

    '''一.函数名.def func(): print(5555)print(func)#输出结果 <function func at 0x026B5E88> 打印函数地址. # 1. 函数 ...

  8. python 基础篇 11 函数进阶----装饰器

    11. 前⽅⾼能-装饰器初识本节主要内容:1. 函数名的运⽤, 第⼀类对象2. 闭包3. 装饰器初识 一:函数名的运用: 函数名是一个变量,但他是一个特殊变量,加上括号可以执行函数. ⼆. 闭包什么是 ...

  9. 总结了11条,我对Python 装饰器的理解

    对于每一个学习 Python 的同学,想必对 @ 符号一定不陌生了,正如你所知, @ 符号是装饰器的语法糖,@符号后面的函数就是我们本文的主角:装饰器. 装饰器放在一个函数开始定义的地方,它就像一顶帽 ...

随机推荐

  1. 小米系统获取root权限的完整教程

    小米系统通过什么方法拥有root超级权限?我们都清楚,安卓机器有root超级权限,如果手机拥有root相关权限,能够实现更好的功能,打个比方我们企业的营销部门的同事,使用大多数营销应用都需要在root ...

  2. STM32按键输入

    下面3个接上拉电阻 WK_UP接上拉电阻 因为用到了PA,PC,PH所以要使能3个模块 STATIC静态变量只会初始化一次 每次调用flag++,不会再初始化为0:起记忆作用. 最关键的是头 件不要忘 ...

  3. 【JavaScript】标准日期、中国标准时间、时间戳、毫秒数互转

    转载自:https://blog.csdn.net/IT429/article/details/78341847 看到的一篇比较有用的前端js时间转换方法,留个备份 首先要明确这三种格式是什么样子的: ...

  4. Elasticsearch NEST 控制字段名称命名格式

    在使用NEST操作elasticsearch时,字段名会根据model中字段,默认为首字母小写. 如果需要调整NEST的默认明个规则,可以在 ConnectionSettings中进行自定义. var ...

  5. gulp插件实现压缩一个文件夹下不同目录下的js文件(支持es6)

    gulp-uglify:压缩js大小,只支持es5 安装: cnpm: cnpm i gulp-uglify -D yarn: yarn add gulp-uglify -D 使用: 代码实现1:压缩 ...

  6. 如何解决 React 官方脚手架不支持 Less 的问题

    说在前面 create-react-app 是由 React 官方提供并推荐使用构建新的 React 单页面应用程序的最佳方式,不过目前版本(1.5.x)其构建的项目中默认是不支持动态样式语言 Les ...

  7. java基础学习之"堆" "栈" "静态存储区" "方法区"

    引用部分 java中堆栈(stack)和堆(heap)(还在问静态变量放哪里,局部变量放哪里,静态区在哪里.....进来) Java堆.栈和常量池以及相关String的讲解 等我看完"深入理 ...

  8. react的this.setState没有触发render

    一.浅比较 出现情况: 明明改变了值, 并且回调函数也触发了, 但是就是不触发render import React, { PureComponent } from 'react' import { ...

  9. 从Scratch到Python——Python生成二维码

    # Python利用pyqrcode模块生成二维码 import pyqrcode import sys number = pyqrcode.create('从Scratch到Python--Pyth ...

  10. react native 0.55.4 rctsrwebsocket会崩溃的问题解决 直接原文覆盖

    //// Copyright 2012 Square Inc.//// Licensed under the Apache License, Version 2.0 (the "Licens ...