Python高级

元类

42.Python中类方法、类实例方法、静态方法有何区别?

类方法: 是类对象的方法,在定义时需要在上方使用 @classmethod 进行装饰,形参为cls,表示类对象,类对象和实例对象都可调用

类实例方法: 是类实例化对象的方法,只有实例对象可以调用,形参为self,指代对象本身;

静态方法: 是一个任意函数,在其上方使用 @staticmethod 进行装饰,可以用对象直接调用,静态方法实际上跟该类没有太大关系

43.遍历一个object的所有属性,并print每一个属性名?

class Car:

def __init__(self,name,loss): # loss [价格,油耗,公里数]

self.name = name

self.loss = loss

def getName(self):

return self.name

def getPrice(self):

# 获取汽车价格

return self.loss[0]

def getLoss(self):

# 获取汽车损耗值

return self.loss[1] * self.loss[2]

Bmw = Car("宝马",[60,9,500]) # 实例化一个宝马车对象

print(getattr(Bmw,"name")) # 使用getattr()传入对象名字,属性值。

print(dir(Bmw)) # 获Bmw所有的属性和方法

结果为:

宝马

['__class__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', '__lt__', '__module__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__', 'getLoss', 'getName', 'getPrice', 'loss', 'name']

44.写一个类,并让它尽可能多的支持操作符?

class Array:

__list = []

def __init__(self):

print("constructor")

def __del__(self):

print("destruct")

def __str__(self):

return "this self-defined array class"

def __getitem__(self,key):

return self.__list[key]

def __len__(self):

return len(self.__list)

def Add(self,value):

self.__list.append(value)

def Remove(self,index):

del self.__list[index]

def DisplayItems(self):

print("show all items---")

for item in self.__list:

print(item)

45.介绍Cython,Pypy Cpython Numba各有什么缺点

PyPy

在选择CPython的简易替代语言时,PyPy无疑是最佳之选(如Quora就是由它编写而成)。由于与现有Python代码保持高度兼容性,PyPy也是默认程序运行时的一个很好选择。

PyPy使用了Just-in-Time(JIT)即时编译器,即动态编译器,与静态编译器(如gcc,java等)不同,它是利用程序运行的过程的数据进行优化,拥有同谷歌Chrome V8 JavaScript引擎相同的语言加速技术。本月初,最新版本PyPy 2.5即将发布,此版本会有一系列的性能改进,提供更全面的如NumPy的支持,用于加速Python性能的共享库。

Python 3.x必须由单独的PyPy3项目构建而成。不过,对于边缘语言特性 爱好者来说,尽管预期支持3.3,但实际此版本最多仅支持Python3.2.4及以下版本。

Cython

Cython是Python 的C语言扩展。准确说Cython是单独的一门语言,专门用来写在Python里面import用的扩展库。实际上Cython的语法基本上跟Python一致,而Cython有专门的编译器:先将 Cython代码转变成C(自动加入了一大堆的C-Python API),然后使用C编译器编译出最终的Python可调用的模块。不过Cython的缺点是,你并不能真正编写Python代码,这样一来,现有代码将不会完全自动转移成功。

也就是说,Cython在提速方面有很大优势,它是一个用来快速生成Python扩展模块(extention module)的工具。而在Cython,C里的类型,如int,float,long,char*等都会在必要的时候自动转成python对象,或者从python对象转成C类型,在转换失败时会抛出异常,这正是Cython最神奇的地方。另外,Cython对回调函数的支持也很好。总之,如果你有写python扩展模块的需求,那么Cython真的是一个很好的工具。

Numba

Numba综合了前两种方法,是Cython的竞争项目。同样的,numba把Python源码通过LLVMPy生成JIT后的.so文件来加速。不同点在于,Numba是以JIT为主的,加速对源码的侵入性较小。而Cython则重点在加速高性能Python模块的开发上,不依赖LLVMPy项目。此外numba还很不成熟,目前兼容性相当差。

46.请描述抽象类和接口类的区别和联系

标签:__,Cython,16,python,self,Python,loss,100,def

来源: https://www.cnblogs.com/Fiona-Y/p/10573225.html

python高级开发面试题_python面试的100题(16)相关推荐

  1. python测试开发面试题_python测试开发面试之深浅拷贝

    先来道题热热身 a = ('a', 'b','c') c = copy.copy(a) d = copy.deepcopy(a) if c == d: print("c和d的值相等" ...

  2. 耗时118天爆肝【1296页】的“Android高级开发面试题”,终于成功上岸字节

    前言 本人16年毕业于一家普通二本,考研裂开了且没有实习经验,只做过两个项目,每天就是不断地投简历.刷面经,感觉自己都要抑郁了,最后勉强进入了一家学校合作的互联网公司,后面陆陆续续也换了几家公司,毕业 ...

  3. python测开面试题_python十道经典面试题,测试你的python功底!

    来源:python学习专栏 第一题,对象的类属性指向类对象class A(): def show(self): print( A_show ) class B(): def show(self): p ...

  4. 用友java面试题_用友网络科技Java高级开发面试题(2019)

    面试岗位:Java高级开发 面试形式:电话面试 这些天在boss上逛了下,看见北京Java开发工资比较诱人,便萌生了去北京的想法,做一名北漂的程序猿.约了几家面试,由于是异地,当然优先电话面了.本篇记 ...

  5. Android-Notes|BottomNavigationView-爱上-Lottie,android高级开发面试题

    } 复制代码 封装个 BasicData,存放 App 内置的一些基本数据,这里主要针对 Lottie 文件: val mNavigationAnimationList = arrayListOf( ...

  6. python有趣的面试题_python面试题目

    问题一:以下的代码的输出将是什么? 说出你的答案并解释. class Parent(object): x = 1 class Child1(Parent): pass class Child2(Par ...

  7. Android面试题——高级开发面试题一

    一 面试题概述 请简单的分析一下Android系统启动流程的原理? App启动状态有哪几种,各自的启动流程是怎么样的? 当项目中遇到黑白屏问题,你有什么好的解决方案? 如何查看方法内的耗时时间与方法分 ...

  8. 高级开发面试题,朋友给的,怕忘了

    基本概念 操作系统中 heap 和 stack 的区别 什么是基于注解的切面实现 什么是 对象/关系 映射集成模块 什么是 Java 的反射机制 什么是 ACID BS与CS的联系与区别 Cookie ...

  9. Python后端开发面试题汇总

    一.系统相关 1.并发编程? 为什么需要并发编程? 提高程序的运行速度 Python对并发编程的支持? 多进程(multiprocessing):利用多核cpu的能力并行执行任务 多线程(thread ...

最新文章

  1. hibernate中inverse作用
  2. 机器学习从入门到精通50讲(一)-大数据平台下的数据质量管理
  3. 计算机专业能用ipad吗,iPad 能不能代替电脑?说说我这 3 个月的使用体验
  4. oracle进程用户,关于oracle用户进程,服务进程,后…
  5. 数据库系统的维护与优化(二)
  6. mysql 按时间分库分表_sharding-jdbc 按时间分库分表
  7. linux中启动不了服务,Linux系统xinetd服务启动不了
  8. nginx负载均衡文件服务器配置虚拟目录代理refer防盗链
  9. Java通过FFMPEG获取视频时长
  10. 推荐iOS模拟器截图工具iOS-Simulator Cropper
  11. hive partition 分区详解一
  12. Windows 下的 electron 开发笔记一
  13. linux访问vdma的数据,Xilinx VDMA 24位流输出与32位AXI总线的内存流数据关系
  14. Win7 x64无法安装VS2010 SP1包解决方法
  15. Vue复刻华为官网(三)
  16. python爬虫——爬取链家网北京租房信息
  17. 关于GTP-4,这是14个被忽略的惊人细节!
  18. 周志华 机器学习初步 线性模型
  19. 2021 计算机 保研经历 保研经验贴 保研知识扫盲 保研时间线(合肥工业大学 软件工程 rk4/165,211 3%)
  20. Android 手机抓包

热门文章

  1. java Export Excel POI 转
  2. Knockout 新版应用开发教程之visible绑定
  3. WPF和Silverlight设计实例
  4. [转]GetProcAddress函数
  5. cramer定理_Lundberg-Cramer定理
  6. java poi3.15 ppt,Apache POI PPT - 演示( Presentation)
  7. java sleep线程吗_JAVA的线程的sleep()方法是否占用CPU
  8. mysql 导入一个数据库_mysql导入一个数据库
  9. 全国大学智能车竞赛完全模型组中的赛道标志
  10. 整理第十六届全国大学智能车竞赛比赛数据