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

装饰器:

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

python基础一 day10(2)的更多相关文章

  1. python基础学习Day10 函数形参的动态参数、*args **kwargs 命名空间 global 与 nonlocal

    一.函数形参的动态参数 原因:为了拓展,对于实参数量不固定,故需要万能参数,即动态参数, *args   **kwargs # def sum1(*args): # 在函数定义时,在*位置参数,聚合. ...

  2. python 基础知识-day10(面向对象)

    1.面向对象的概念 拥有共同属性的一类进行归类的过程叫做面向对象. 2.注意事项 class定义类的时候,类名的首字母必须大写 3.面向对象案例 1 class Person(object): 2 d ...

  3. python基础之Day10

    一.函数的返回值 1.什么是返回值返回值是一个函数的处理结果, 2.为什么要有返回值如果我们需要在程序中拿到函数的处理结果做进一步的处理,则需要函数必须有返回值 3.函数的返回值的应用函数的返回值用r ...

  4. python基础一 day10(1)

    要背的:

  5. python之最强王者(2)——python基础语法

    背景介绍:由于本人一直做java开发,也是从txt开始写hello,world,使用javac命令编译,一直到使用myeclipse,其中的道理和辛酸都懂(请容许我擦干眼角的泪水),所以对于pytho ...

  6. Python开发【第二篇】:Python基础知识

    Python基础知识 一.初识基本数据类型 类型: int(整型) 在32位机器上,整数的位数为32位,取值范围为-2**31-2**31-1,即-2147483648-2147483647 在64位 ...

  7. Python小白的发展之路之Python基础(一)

    Python基础部分1: 1.Python简介 2.Python 2 or 3,两者的主要区别 3.Python解释器 4.安装Python 5.第一个Python程序 Hello World 6.P ...

  8. Python之路3【第一篇】Python基础

    本节内容 Python简介 Python安装 第一个Python程序 编程语言的分类 Python简介 1.Python的由来 python的创始人为吉多·范罗苏姆(Guido van Rossum) ...

  9. 进击的Python【第三章】:Python基础(三)

    Python基础(三) 本章内容 集合的概念与操作 文件的操作 函数的特点与用法 参数与局部变量 return返回值的概念 递归的基本含义 函数式编程介绍 高阶函数的概念 一.集合的概念与操作 集合( ...

随机推荐

  1. Laravel中使用模型对数据进行操作

    public function orm(){ //查询表的所有记录 //$user = Admin::all(); //dd($user); //查询某一条记录 //$user = Admin::fi ...

  2. vue key值的重复键问题报错

    1.问题描述:在vue2.0+ 中做一个公用的评论组件,:key使用的时创建评论的时间,当加载更多的时候,会报错: Duplicate keys detected: '2019-01-24T07:15 ...

  3. Easyui TextBox 添加事件的方法

    $("#txtPaySideId").textbox('textbox').bind("click", function () { showPlatform() ...

  4. spring boot 使用Schedule创建轻量级定时任务

    Scheduled SpringBoot配置定时任务可以直接使用自带的Scheduled,这相当于一个轻量级的Quartz,它可以让我们直接使用注解来完成定时任务的配置. Scheduled调度时间设 ...

  5. OPENGL_变换与坐标系

    参考:http://blog.csdn.net/kandyer/article/details/12449973 坐标系 世界坐标系:绝对坐标 物体坐标系:以物体自身为原点的坐标系 摄像机坐标系:以摄 ...

  6. PostgreSQL - 查询表结构和索引信息

    前言 PostgreSQL的表一般都是建立在public这个schema下的,假如现在有个数据表t_student,可以用以下几种方式来查询表结构和索引信息. 使用\d元命令查看表字段信息和索引信息 ...

  7. MySQL 索引及优化实战

    https://blog.csdn.net/qq_21987433/article/details/79753551 https://tech.meituan.com/mysql_index.html ...

  8. 如何实现序列化为json

    因为需要观察对象的数据,所以寻找能自动描述对象中字段名和其值的描述类,咨询了不少人,都推荐使用json,但是json使用起来有一点额外的操作. 需要在文件中引用 using System.Web.Sc ...

  9. oracle 数据库 存储过程

    destinct(去除重复行), to_char(转换自符串), to_date(日期格式函数), substr(截取自符串), lower(将字母转换为小写), upper(将字母转换为小写), t ...

  10. HashMap的小总结 + 源码分析

    一.HashMap的原理 所谓Map,就是关联数组,存的是键值对——key&value. 实现一个简单的Map,你也许会直接用两个LIst,一个存key,一个存value.然后做查询或者get ...