47、metaclass作用?以及应用场景?

metaclass,直译为元类,简单的解释就是:当我们定义了类以后,就可以根据这个类创建出实例,

所以:先定义类,然后创建实例。但是如果我们想创建出类呢?那就必须根据metaclass创建出类,

所以:先定义metaclass,然后创建类。换句话说,你可以把类看成是metaclass创建出来的“实例”

48、用尽量多的方法实现单例模式。

1、基于__new__()方法

class Person:

def __new__(cls, *args, **kwargs):

if not hasattr(cls,cls._instance):

# cls._instance = object.__new__(cls)

cls._instance = super().__new__(cls)

return cls._instance

2、基于模块导入方式,现在一个py文件中写好一个类,实例化一个对象。以后用这个类直接导入这个模块就是单例模式。

3、基于装饰器方法实现

def singleton(cls, *args, **kwargs):

instance_dic = {}

def inner(*args, **kwargs):

if cls not in instance_dic:

instance_dic['cls'] = cls(*args, **kwargs)

return instance_dic['cls']

return inner

@singleton

class Person:

pass

49、装饰器的写法以及应用场景。

装饰器的写法:

def wrapper(func):

def inner(*args,**kwargs):

'被装饰之前的操作'

ret = func(*args,**kwargs)

'被装饰之后的操作'

return ret

return inner

装饰器的应用场景:

比如注册登录、插入日志,性能测试,事务处理,缓存等等场景 类装饰器的写法:

class Foo():

...     def __init__(self, func): # 初始化函数中传入函数对象的参数

...         self._func = func

...     def __call__(self): # 定义__call__方法,直接实现装饰功能

...         start_time = time.time()

...         self._func()

...         end_time = time.time()

...         print('花费了 %.2f' % (end_time - start_time))

...

>>> @Foo  # bar=Foo(bar)

... def bar():

...     print('bar函数的执行时间为:')

...     time.sleep(2.5)

...

>>> bar() # bar=Foo(bar)(),没有嵌套关系了,直接执行Foo的 __call__方法,实现装饰功能

50、什么是Python的单元测试?

Python中的单元测试框架被称为unittest。它支持共享设置,自动化测试,测试关机代码,测试集合等。

51、在Python中unittest是什么?

从列表,元组,字符串等序列类型中选择一系列项目的机制被称为unittest。

52、__new__和__init__的区别

53、什么是Python中的模块和包?

在Python中,模块是构造程序的方式。每个Python程序文件都是一个模块,它导入其他模块,如对象和属性。

Python程序的文件夹是一个模块包,包可以有模块或子文件夹。

54、怎样才能跨模块共享全局变量?

要在单个程序的模块之间共享全局变量,请创建一个配置模块。在应用程序的所有模块中导入配置模块,该模块将作为跨模块的全局变量提供。

55、解释如何在Unix上创建一个Python脚本可执行文件?

要在Unix上创建Python脚本可执行文件需要做两件事情:

Script文件的模式必须是可执行的

第一行必须以#(#!/ usr / local / bin / python)开头

56、Python垃圾回收机制

Python GC主要使用引用计数(reference counting)来跟踪和回收垃圾。在引用计数的基础上,通过“标记-清除”(mark and sweep)解决容器对象可能产生的循环引用问题,通过“分代回收”(generation collection)以空间换时间的方法提高垃圾回收效率。

这将返回范围[0,1)中的随机浮点数

57、解释如何访问用C语言编写的Python模块?

你可以通过下面的方法访问一个用C写成的模块,

Module = = PyImport_ImportModule(“”);

58、提到使用Python的五个好处?

Python包含了大多数互联网平台(如电子邮件,HTML等)的巨大标准库。

Python不需要显式的内存管理,因为解释器本身将内存分配给新变量并自动释放它们

由于使用方括号而提供易读性

易于初学者学习

具有内置的数据类型,可以节省编程时间和工作量,从而声明变量。

59、解释什么是Flask及其好处?

Flask是一个基于“Werkzeug,Jinja 2和良好意图”BSD许可的web微型框架,Werkzeug和jingja是它的两个依赖项。

Flask是微观框架的一部分。这意味着它将很少或不依赖于外部库,它使框架轻而易举,更新和安全漏洞更少。

60、Django,Pyramid和Flask有什么区别?

Flask是一个“微框架”,主要用于需求更简单的小型应用程序。在Flask中,你必须使用外部库。

Pyramid是为更大的应用程序建立的。它提供了灵活性,并让开发人员为他们的项目使用正确的工具。开发人员可以选择数据库,URL结构,模板样式等等。Pyramid可重新配置。

像Pyramid一样,Django也可以用于更大的应用程序。 它包括一个ORM。

61、Flask-WTF是什么,有什么特点?

Flask-WTF提供了与WTForms的简单集成,功能包括

与wtforms集成

使用csrf令牌安全形式

全球csrf保护

Reptcha支持

与Flask Uploads一起使用的文件上传

62、给定字典进行排序

给定dict = {'a':3,'bc':5,'c':3,'asd':4,'33':56,'d':0}

根据其键值进行排序

sorted(dict.items(),key = lambda i:i[0],reverse = True)

list2 = [[1,2],[4,6],[3,1]]

list2.sort(key = lambda x:x[0],reverse = False)

print list2

63、列出5个python标准库

os:提供了不少与操作系统相关联的函数

sys:   通常用于命令行参数

re:   正则匹配

math: 数学运算

datetime:处理日期时间

64、谈下python的GIL

GIL 是python的全局解释器锁,同一进程中假如有多个线程运行,一个线程在运行python程序的时候会霸占python解释器(加了一把锁即GIL),使该进程内的其他线程无法运行,等该线程运行完后其他线程才能运行。如果线程运行过程中遇到耗时操作,则解释器锁解开,使其他线程运行。所以在多线程中,线程的运行仍是有先后顺序的,并不是同时进行。

多进程中因为每个进程都能被系统分配资源,相当于每个进程有了一个python解释器,所以多进程可以实现多个进程的同时运行,缺点是进程系统资源开销大

65、两个栈实现一个队列&两个队列实现一个栈

# 两个栈实现队列

# 入队:元素进栈A

# 出队:先判断栈B是否为空,为空则将栈A中的元素 pop 出来并 push 进栈B,再栈B出栈,如不为空则栈B直接出栈

class QueueWithTwoStacks(object):

def __init__(self):

self._stack1 = []

self._stack2 = []

def appendTail(self,x):

self._stack1.append(x)

def deleteHead(self):

if self._stack2:

return self._stack2.pop()

else:

if self._stack1:

while self._stack1:

self._stack2.append(self._stack1.pop())

return self._stack2.pop()

else:

return None

# 两个队列实现一个栈

# 进栈:元素入队列A

# 出栈:判断如果队列A只有一个元素,则直接出队。否则,把队A中的元素出队并入队B,直到队A中只有一个元素,再直接出队。为了下一次继续操作,互换队A和队B。

class Stock:

def __init__(self):

self.queueA=[]

self.queueB=[]

def push(self, node):

self.queueA.append(node)

def pop(self):

if len(self.queueA)==0:

return None

while len(self.queueA)!=1:

self.queueB.append(self.queueA.pop(0))

self.queueA,self.queueB=self.queueB,self.queueA #交换是为了下一次的pop

return self.queueB.pop()

66、10个Linux常用命令

ls  pwd  cd  touch  rm  mkdir  tree  cp  mv  cat  more  grep  echo

31、两个列表[1,5,7,9]和[2,2,6,8]合并为[1,2,2,3,6,7,8,9]

32、用python删除文件和用linux命令删除文件方法

33、log日志中,我们需要用时间戳记录error,warning等的发生时间,请用datetime模块打印当前时间戳 “2018-04-01 11:38:54”

34、数据库优化查询方法

35、请列出你会的任意一种统计图(条形图、折线图等)绘制的开源库,第三方也行

36、写一段自定义异常代码

37、正则表达式匹配中,(.*)和(.*?)匹配区别?

38、简述Django的orm

39、[[1,2],[3,4],[5,6]]一行代码展开该列表,得出[1,2,3,4,5,6]

40、x="abc",y="def",z=["d","e","f"],分别求出x.join(y)和x.join(z)返回的结果

41、举例说明异常模块中try except else finally的相关意义

42、python中交换两个数值

43、举例说明zip()函数用法

44、a="张明 98分",用re.sub,将98替换为100

45、写5条常用sql语句

46、a="hello"和b="你好"编码成bytes类型

47、[1,2,3]+[4,5,6]的结果是多少?

48、提高python运行效率的方法

49、简述mysql和redis区别

50、遇到bug如何处理

51、1、正则匹配,匹配日期2018-03-20

url='https://sycm.taobao.com/bda/tradinganaly/overview/get_summary.json?dateRange=2018-03-20%7C2018-03-20&dateType=recent1&device=1&token=ff25b109b&_=1521595613462'

52、list=[2,3,5,4,9,6],从小到大排序,不许用sort,输出[2,3,4,5,6,9]

53、写一个单列模式

54、保留两位小数

题目本身只有a="%.03f"%1.3335,让计算a的结果,为了扩充保留小数的思路,提供round方法(数值,保留位数)

55、求三个方法打印结果

56、列出常见的状态码和意义

57、分别从前端、后端、数据库阐述web项目的性能优化

58、使用pop和del删除字典中的"name"字段,dic={"name":"zs","age":18}

59、列出常见MYSQL数据存储引擎

60、计算代码运行结果,zip函数历史文章已经说了,得出[("a",1),("b",2),("c",3),("d",4),("e",5)]

61、简述同源策略

62、简述cookie和session的区别

63、简述多线程、多进程

64、简述any()和all()方法

65、IOError、AttributeError、ImportError、IndentationError、IndexError、KeyError、SyntaxError、NameError分别代表什么异常

66、python中copy和deepcopy区别

67、列出几种魔法方法并简要介绍用途

68、C:\Users\ry-wu.junya\Desktop>python 1.py 22 33命令行启动程序并传参,print(sys.argv)会输出什么数据?

69、请将[i for i in range(3)]改成生成器

70、a = "  hehheh  ",去除收尾空格

71、举例sort和sorted对列表排序,list=[0,-1,3,-10,5,9]

72、对list排序foo = [-5,8,0,4,9,-4,-20,-2,8,2,-4],使用lambda函数从小到大排序

73、使用lambda函数对list排序foo = [-5,8,0,4,9,-4,-20,-2,8,2,-4],输出结果为

[0,2,4,8,8,9,-2,-4,-4,-5,-20],正数从小到大,负数从大到小

74、列表嵌套字典的排序,分别根据年龄和姓名排序

75、列表嵌套元组,分别按字母和数字排序

76、列表嵌套列表排序,年龄数字相同怎么办?

77、根据键对字典排序(方法一,zip函数)

78、根据键对字典排序(方法二,不用zip)

79、列表推导式、字典推导式、生成器

80、最后出一道检验题目,根据字符串长度排序,看排序是否灵活运用

81、举例说明SQL注入和解决办法

82、s="info:xiaoZhang 33 shandong",用正则切分字符串输出['info', 'xiaoZhang', '33', 'shandong']

83、正则匹配以163.com结尾的邮箱

84、递归求和

85、python字典和json字符串相互转化方法

86、MyISAM 与 InnoDB 区别:

87、统计字符串中某字符出现次数

88、字符串转化大小写

89、用两种方法去空格

90、正则匹配不是以4和7结尾的手机号

91、简述python引用计数机制

92、int("1.4"),int(1.4)输出结果?

93、列举3条以上PEP8编码规范

94、正则表达式匹配第一个URL

95、正则匹配中文

96、简述乐观锁和悲观锁

97、r、r+、rb、rb+文件打开模式区别

98、Linux命令重定向 > 和 >>

99、正则表达式匹配出

www.itcast.cn

Linux环境变量隔代,python基础题 - osc_vwtuqll7的个人空间 - OSCHINA - 中文开源技术交流社区...相关推荐

  1. python 条件表达式换行_Python基础语法 - LongKing-Xu的个人空间 - OSCHINA - 中文开源技术交流社区...

    python基础语法 一.标识符 在Python中,所有标识符可以包括英文.数字以及下划线(_),但不能以数字开头. 在Python中的标识符是区分大小写的. 在Python中以下划线开头的标识符是有 ...

  2. 关于linux内存管理说法不正确,Linux自我检测题 - osc_8wyy9cyu的个人空间 - OSCHINA - 中文开源技术交流社区...

    因为工作需要开始使用Linux,决定跟着刘超老师学习趣谈Linux操作系统,记录下他出的12个练习题,把这套题目当作一个工具,在后面的不断学习中,一个个解答这些问题,还要时常回过头来检测一下自己,对照 ...

  3. jmu-python-函数-找钱_python函数题 - osc_wv1mxwu2的个人空间 - OSCHINA - 中文开源技术交流社区...

    请大家严格按照下面顺序编写圆形生成器程序. : 定义函数getCircleArea(r),可以对指定r计算圆面积.计算公式math库的pi*r*r. 定义函数get_rList(n),功能:输入n个值 ...

  4. linux中nfs存储权限,NFS权限管理 - 麦苗的个人空间 - OSCHINA - 中文开源技术交流社区...

    对于NFS中权限管理的理解,首先需要熟悉Linux中关于文件或文件夹的访问控制策略,其次要认识NFS中服务器如何控制客户端的访问. 默认情况下,Linux对于文件或文件夹的权限管理分为所属者(ownu ...

  5. linux rmi端口,RMI 两个端口 - 差不多先生的个人空间 - OSCHINA - 中文开源技术交流社区...

    在项目中使用rmi,发布到linux,unix,由于开了防火墙.需要配置防火墙端口.刚开始配置了一个固定端口,死都连接不通,后来同netstat -antup |grep pid 查看进程监听的端口, ...

  6. linux冒泡算法程序,用蛮力法解决冒泡排序 - linux-tao的个人空间 - OSCHINA - 中文开源技术交流社区...

    冒泡排序是蛮力法的另一个经典体现. 算法思想:比较列表中相邻的元素,如果是逆序的话,就交换他们的位置.重复多次之后,最大的元素就排到了最后一个位置.第二遍操作将第二个元素排到了倒数第二个位置上,这样一 ...

  7. mysql mtq_MySQL基础知识 - osc_r3mtqivi的个人空间 - OSCHINA - 中文开源技术交流社区

    01)查看当前存在的全部数据库 show databases; 02)创建数据库 create database 数据库名称; 03)查看创建好的数据库信息 show create database ...

  8. 计算机硬件知识大赛,计算机硬件基础知识 - osc_v8xs2czi的个人空间 - OSCHINA - 中文开源技术交流社区...

    一.编程 1.什么是编程?为何要编程? 编程就是程序员用计算机所能理解的表达方式(即编程语言)来将自己的思维逻辑写下来,编程的结果就是一堆文件,这些文件称之为软件或程序. 2.什么是编程语言? 语言就 ...

  9. java 写入环境变量_Java环境变量配置 - import_key的个人空间 - OSCHINA - 中文开源技术交流社区...

    Java 环境变量和路径 在 Solaris 系统上,必须先设置 JAVA_HOME 和 PATH 环境变量,Sun Management Center 3.6 安装向导.设置向导和 Java 控制台 ...

最新文章

  1. linux(Ubuntu/Centos) iproute 路由IP地址等命令集合,查看端口链接
  2. Java有线程安全的set吗?
  3. 分享你的见解与经验|RocketMQ Summit 2022 议题征集中
  4. JDK 8 新特性 之 Lambda表达式
  5. 在Ubuntu 16.04环境下安装Docker-CE(附视频教程)
  6. SpringMVC 返回json的两种方式
  7. Java原子操作类AtomicInteger应用场景
  8. latex填充段落之间的留白
  9. Microsoft Edge 83 稳定版发布
  10. 每隔一段时间自动执行一次某个方法(使用线程)[C#]
  11. 图像处理与计算机视觉经典文章
  12. 远程管理 Mac OSX 设备
  13. Docker Redis 安装
  14. 分类算法学习(一)——KNN算法的原理及简单实现
  15. java ee课程目标
  16. 记:判断三个点是否在一条直线上
  17. qq企业邮箱怎么删除邮件服务器,腾讯企业邮箱如何删除邮件,有什么要注意的呢?...
  18. python2.7实现简单日记本,兼容windows和linux
  19. linux函数参数的长度限制,关于命令行长度限制
  20. Word高版本打开低版本显示兼容模式

热门文章

  1. 图像变换-图像拉伸、收缩、扭曲、旋转[1] - 仿射变换(cvWarpAffine)
  2. 梯度下降,损失函数-讲的很好
  3. php手绘功能,基于纯CSS3的6种手绘涂鸦按钮效果
  4. 服务器 声音文件 nginx,docker nginx搭建视频音频服务器
  5. 3字节转换为有符号整型C语言,3.C语言整型数据
  6. php 返回数组 键名,php array_keys 返回数组的键名
  7. hive python udf_python udf方法
  8. 计算机键盘的设计原理图,人体工程学键盘的设计原理
  9. php框架where条件使用,where条件
  10. 这里提供了在Linux上显示某个进程的线程的几种方式