手写一个完整的装饰器模版

# 用于修复被装饰对象的名称空间
from functools import wrape def wrapper(func):
@wraps(func)
def inner(*args, **kwargs):
# func执行之前的操作
res = func(*args, **kwargs)
# func执行之后的操作
return res
return inner

简述面向对象三大特性及各自特点

'''
封装:将属性和方法放在类的内部,通过类的实例化出对象,用对象访问属性或方法,隐藏功能的实现细节,可设置访问权限
好处:提高了代码的复用性,安全性,降低代码的冗余度 继承:实现代码的重用,也可以理解为让类与类之间建立父子关系,使子类拥有父类的属性和方法,并可衍生出自己独有的属性和方法。需要注意的是,在python中存在多继承,这是其他编程语言没有的一个特性
好处:减少代码的重用,提高代码的可读性,规范编程模式 多态:同一个方法,不同对象调用,实现的功能不一样。python中的多态不像其他编程语言,崇尚“鸭子类型”,即不用通过具体的继承关系来约束其他类,只要这些不同的类具有相同的方法名,利用统一的方式来调用
好处:增加代码的灵活度,调用方法,不会影响到类的内部设计
'''

简述解释性语言和编译性的区别

'''
- 解释型:每次执行程序都要重新编译,降低了执行效率,但提供相应的解释器后,跨平台比较容易,调试方便,比如说Python,JavaScript、C# - 编译型:一次编译,重复执行,执行效率相对较高,但由于编译成特定的机器码,导致跨平台性差,调试麻烦,比如C,C++,PHP 总结:
解释型语言,执行速度慢、效率低;依靠解释器、跨平台性好
编译型语言,执行速度快、效率高;依靠编译器、跨平台性较差 java语言(了解)
可以说是编译型,所有的java代码都要编译,不经过编译啥也没有;
也可以说是解释型,java代码编译后不能直接运行,在jvm上解释运行
由于java对于多种不同的操作系统有不同的jvm,所以java实现了真正意义上的跨平台
'''

列举你所知道的python2与python3之间的区别

# 参照https://www.cnblogs.com/zengyi1995/p/10736673.html
# 参照https://www.cnblogs.com/xiaoyuanqujing/articles/11721989.html
'''
1.解释器默认编码
python2:ASCII
python3:utf-8
2.str(字符串)的区别
python2:Unicode类型表示字符串序列,str类型表示字节序列
python3:str类型表示字符串序列,byte类型表示字节序列
3.输入
python2:raw_input('请输入用户名:')
python3:input('请输入用户名') # 等价于python2中的raw_input
ps:python2中的input()必须指定数据类型,否则会抛异常
4.输出
python2:
print('hello', 'world') # 结果:('hello','world')
print '你好' # 结果:你好
python3:
print('hello', 'world') # 结果:hello world
print('你好') # 结果:你好
5.数字的表示
python2:64位机器,范围-2^63~2^63-1;超出这个范围,自动转换成long(长整型)
python3:所有整型都是int,没有long(长整型)
6.整除:1/2的结果
python2:0 只保留整数位
python3:0.5 保留所有内容
7.range/xrange
python2:
range:在内存中立即把所有的值创建
xrange:不会在内存中立即创建,边循环边创建
python3:
range:不会在内存中立即创建,边循环边创建,等价于python2中的xrange
没有xrange
8.dict(字典)的keys/values/items方法
python2:返回列表,可通过索引取值
python3:返回类,只能通过循环取值
9.新式类和经典类
python2:没有继承Object类的类是经典类,继承了Object类的类是新式类
python3:默认所有类都继承Object类,只有新式类,没有经典类
ps:
新式类:广度优先,遵循mro
经典类:深度优先,不遵循mro
10.global和nonlocal
python2:使用关键字global声明某个变量为全局变量,但嵌套函数中,声明某个变量为非局部变量无法实现
python3:除了global关键字,新增了关键字nonlocal,实现了嵌套函数中,声明某个变量为非局部变量
'''

什么是匿名函数。匿名函数一般结合什么一起使用,请列举几个常用的

'''
不用显式定义的函数,即没有函数名的函数,通过lambda关键字表示。本身没有任何意义,就是一个表达式,一般结合内置函数使用,比如max,min,sorted,map,reduce,filter ps:
max(可迭代对象, key=函数对象):根据函数对象返回结果为依据,返回可迭代对象中的最大值 min(可迭代对象, key=函数对象):根据函数对象返回结果为依据,返回可迭代对象中的最小值 sorted(可迭代对象, [key=函数对象], [reverse=True]):根据函数对象返回的结果作为依据(可选),对可迭代对象进行排序,默认为升序,reverse=True表示结果为降序(该参数可选) map(函数对象,可迭代对象):将可迭代对象中的元素依次通过函数对象修改后,依次映射到map对象中,通过转换成容器类型的数据展示,只能转换一次 reduce(函数对象, 可迭代对象, [初始值]):使用前,导包→from functools import reduce;每次从可迭代对象中获取两个元素进行累积计算,即reduce(func,[1,2,3]) 等价于 func(func(1,2),3)。如果求和,初始值默认为0,求乘积时,初始值为1(该参数可选) filter(函数对象, 可迭代对象)根据函数对象中的返回值是True还是False决定保留还是丢弃可迭代对象中的元素,如果该元素在函数对象中的结果为True,则添加到filter对象中,通过转换成容器类型数据展示,只能转换一次
'''

python知识点总结01(不定时更新)的更多相关文章

  1. python知识点总结02(不定时更新)

    请用至少两种方式实现m与n值交换m=10,n=5 # 方式一 temp = 0 m = 10 n = 5 print(f'方式一交换前,m:{},n:{}') temp = m m = n n = t ...

  2. python --error整理(不定时更新)

    1.TabError: inconsistent use of tabs and spaces in indentation Python 中需要用tab 键来空格 2.SyntaxError: in ...

  3. python 常用函数(不定时更新)

    1.遍历文件夹 import os def FileList(rootDir): FL=[] for lists in os.listdir(rootDir): path=os.path.join(r ...

  4. Python有趣现象(不定时更新)

    1.list中extend方法有趣现象 1.1 List+=Str 与 List.extend(Str) list1 = [11,2,45] str1 = 'Michael' list1.extend ...

  5. Python知识点汇总

    */ * Copyright (c) 2016,烟台大学计算机与控制工程学院 * All rights reserved. * 文件名:text.cpp * 作者:常轩 * 微信公众号:Worldhe ...

  6. python2.x和3.x的区别(不定时更新)

    python2.x和3.x的区别 文:铁乐与猫 2018.3.16新增博文,为方便以后总结Python2.x与3.x的不同版本之间的区别,随时更新. python原本的宗旨是崇尚优美.清晰.简单.但p ...

  7. Python并发编程01 /操作系统发展史、多进程理论

    Python并发编程01 /操作系统发展史.多进程理论 目录 Python并发编程01 /操作系统发展史.多进程理论 1. 操作系统 2. 进程理论 1. 操作系统 定义:管理控制协调计算机中硬件与软 ...

  8. Python数学建模-01.新手必读

    Python 完全可以满足数学建模的需要. Python 是数学建模的最佳选择之一,而且在其它工作中也无所不能. 『Python 数学建模 @ Youcans』带你从数模小白成为国赛达人. 1. 数学 ...

  9. iOS 属性修饰符记录 --不定时更新

    重新审视了一下OC在属性修饰符,特意记录一下来.以后不定时更新 > retain:只有在非ARC下才会有效,所有如果在ARC下使用了retain修饰也白搭 如以下的data属性用retain修饰 ...

随机推荐

  1. UVA_458:The Decoder

    Language:C++ 4.8.3  PS:ASCII值减去七 #include<stdio.h> #include<string.h> int main(void) { c ...

  2. Libevent:8Bufferevents高级主题

    本章描述的是Libevent的bufferevent实现的一些高级特性,这对于普通应用来说并非必须的.如果你只是学习如何使用bufferevent,则应该跳过本章去阅读evbuffer的章节. 一:成 ...

  3. python 约束. 异常处理. MD5. 日志处理

    一.约束 1.抛异常 # # 项目经理写的 class Base: # # 对子类进行了约束. 必须重写该方法 # # 以后上班了. 拿到公司代码之后. 发现了NotImplementedError ...

  4. Unity3dShader学习合集暂存

    http://www.cnblogs.com/flappy/archive/2012/08/10/2631348.html 1. Unity3d的參考手冊, 里面涵盖Unity3d官方的描写叙述 ht ...

  5. Android横竖屏切换和灭屏亮屏时Activity的生命周期探究(1)

    研究这个问题的初衷在于项目中碰到了一个问题:横屏的时候灭屏再亮屏,亮屏的时候用户能够清晰的看到先启动竖屏(过程1)再切换到横屏的过程,因为灭屏的时候onSaveInstanceState()保存的时横 ...

  6. linux centos 一键安装环境

    phpStudy for Linux 支持Apache/Nginx/Tengine/Lighttpd, 支持php5.2/5.3/5.4/5.5切换 已经在centos-6.5,debian-7.4. ...

  7. 请注意更新TensorFlow 2.0的旧代码

    TensorFlow 2.0 将包含许多 API 变更,例如,对参数进行重新排序.重新命名符号和更改参数的默认值.手动执行所有这些变更不仅枯燥乏味,而且容易出错.为简化变更过程并让您尽可能顺畅地过渡到 ...

  8. oracle函数greatest(exp1,exp2,exp3,……,expn)

    [功能]返回表达式列表中值最大的一个.如果表达式类型不同,会隐含转换为第一个表达式类型. [参数]exp1……n,各类型表达式 [返回]exp1类型 [示例] SELECT greatest(10,3 ...

  9. HZOJ 星际旅行

    正解欧拉路,其实看完题解还是挺简单的,由于对欧拉路这种东西没怎么接触过,所以考试时没想出来,知识还是有漏洞啊. 另外这题的题解写的也不是很清楚(可能大佬作者觉得这是一道送分题……),首先判断联通(注意 ...

  10. Android Studio(十二):打包多个发布渠道的apk文件

    Android Studio相关博客: Android Studio(一):介绍.安装.配置 Android Studio(二):快捷键设置.插件安装 Android Studio(三):设置Andr ...