0
点赞
收藏
分享

微信扫一扫

基础面试题(一)

1.Python 是动态的解释性的强类型语言

编写时无需定义变量类型;运行时变量类型强制固定;无需编译,在解释器环境下直接运行。

静态语言与动态语言

  • 静态语言。在编译时确定变量的数据类型,这意味着在编写代码时必须明确声明所有变量的类型,静态语言的这一特点有助于编译器进行更早的错误检查,从而提高代码的可靠性和执行效率,但强制的类型声明可能会增加代码的复杂性,使程序员在编写代码时更多地关注变量的类型。
  • 动态语言。在运行时确定数据类型,这意味着变量的类型是根据它们所赋的值来确定的,在动态语言中,程序员可以在运行时改变对象的类型,这虽然提供了更大的灵活性,但也可能导致类型错误,因为编译器无法在编译时验证变量的类型。

解释与编译

编译:使用专门的编译器,针对特定的平台,将高级语言源代码一次性的编译成可被该平台硬件执行的机器码,并包装成该平台所能识别的可执行性程序的格式。

解释使用专门的解释器对源程序逐行解释成特定平台的机器码并立即执行。是代码在执行时才被解释器一行行动态翻译和执行,而不是在执行之前就完成翻译。

Java可以说是特殊的,它既是编译又是解释。主要归功于它的虚拟机(JVM)。它会先将.java的源文件编译成.class的类文件后再解释。所以它有一次编译到处运行之说。

区别:

  1. 编译是将源程序翻译成可执行的目标代码;解释程序不产生目标代码。
  2. 解释程序可跨平台使用;编译程序跨平台性不好。
  3. 解释程序可以随时修改,立刻生效;编译程序不行。
  4. 解释程序运行效率低;编译程序执行速度快。

强类型与弱类型

弱类型语言:弱类型定义语言,某一个变量被定义类型,该变量可以根据环境变化自动进行转换,不需要经过显性强制转换。弱类型语言包括PHP、javascript等。

强类型语言:强制类型定义语言,一旦某一个变量被定义类型,如果不经过强制转换,则它永远就是该数据类型了,强类型语言包括Java、Python、C++等。因此python定义了进行类型转换的方法。

2.python的优缺点

优点:

  1. 简单易学,简洁易读:Python语法简单,代码风格清晰,易于学习,易于阅读,易于理解。
  2. 开源免费,并且有社区支持:开源,即开放源代码。Python是FLOSS(自由/开放源码软件)的一部分,用户可以自由地使用、修改和发布Python软件。免费,使用 Python 进行开发或者发布程序,不需要支付任何费用,也不用担心版权问题,即使作为商业用途,Python 也是免费的。Python拥有庞大的开源社区,提供了丰富的资源库,框架和技术支持。开发人员可以获取各种实用工具,以提高开发效率。
  3. 解释型语言。Python程序不需要编译成二进制代码,直接从源代码运行,这使得程序开发和调试更加便捷。13
  4. 通用性和灵活性。Python支持面向过程和面向对象编程,用户可以根据需要选择合适的编程范式。
  5. 可扩展性(胶水语言):Python 具有脚本语言中最丰富和强大的类库,这些类库覆盖了文件 I/O、GUI、网络编程、数据库访问、文本操作等绝大部分应用场景。这些类库的底层代码不一定都是 Python,还有很多 C/C++ 的身影。当需要一段关键代码运行速度更快时,就可以使用 C/C++ 语言实现,然后在 Python 中调用它们。Python 能把其它语言“粘”在一起,所以被称为“胶水语言”。
  6. 跨平台性:Python可以在不同操作系统上运行,包括Windows、Mac和Linux等,提供了更广泛的应用领域。
  7. 广泛应用领域:Python被广泛应用于Web开发、数据科学、人工智能、机器学习等领域,具备强大的生态系统,有大量的库和框架可以支持快速开发。

缺点:

  1. 运行效率相对较低:与编译型语言相比,Python的运行效率较低。因为它是一种解释型语言,需要逐行解释执行。同时由于动态类型和解释执行的特性,Python的执行速度相对较慢,特别是在需要大规模计算的场景下。
    与C、C++或Java等编译型语言相比,Python的运行速度慢。
  2. 全局解释器锁(GIL):CPython解释器中存在全局解释器锁(GIL),在多线程任务中限制了Python的并行性能提升。
  3. 内存占用较大:Python的内存占用相对较高,对于特定的内存密集型任务可能会有一定的限制。
  4. 相对底层控制能力较弱:与C/C++等底层语言相比,Python对硬件的底层控制能力较弱,不适合对性能要求极高的底层开发。
  5. 国内市场较小(国内以 Python 来做主要开发的,目前只有一些 web2.0 公司)。但时间推移,目前很多国内软件公司,尤其是游戏公司,也开始规模使用他。
  6. 代码加密困难。由于Python源代码不被编译成可执行程序,加密源代码变得更加困难。

3.python解释器

CPython

这个解释器是用C语言开发的,所以叫CPython。CPython是Python编程语言最常用的解释器, 也是Python默认的解释器,Python 所有版本都支持它。

PyPy

PyPy采用JIT技术,并支持C,CLI和JVM后端。对Python代码进行动态编译,可以显著提高Python代码的执行速度。PyPy支持Python 2.7,Python 3.5以及Python 3.6版本。

IronPython

IronPython用C#编程语言编写的。 IronPython允许您与 Microsoft.NET 框架集成,从而允许您同时使用.NET和Python库。 它是在动态语言基础结构 (DLR) 和公共语言基础结构之上实现的,允许动态类型和动态方法调度等,用于动态语言。 IronPython 最高支持 Python 3.4 版本。

Jython

Jython是运行在Java平台上的Python解释器,是用Java和Python编程语言编写的。可以直接把Python代码编译成Java字节码执行,还允许Python代码在任何支持JVM的机器上运行。

4.PEP8

PEP(Python Enhancement Proposals    python增强建议)简单说就是Python编码规范,编码规范是程序编码时所要遵循的规则。

PEP 8 是一个文档,其中包含编写可读 Python 代码的各种准则。PEP 8 讨论了如何作为开发人员构建漂亮的代码。它由Guido van Rossum,Barry Warsaw和Nick Coghlan于2001年正式编写。PEP 的主要目标是提高代码的可读性和一致性。具体内容可以去查询网址:PEP 8: The Style Guide for Python Code






举报

相关推荐

0 条评论