Python180道面试题 [:19] 语言特性

1. 列出 5 个常用 Python 标准库

os:提供了不少与操作系统相关联的函数
sys:通常用于命令行参数
re:正则匹配
math:数学运算
datetime:处理日期时间

2. Python 内建数据类型有哪些

int, float
bool
str
list
tuple
dict

3. 简述 with 方法打开处理文件帮我我们做了什么?
一个很好的例子是文件处理,你需要获取一个文件句柄,从文件中读取数据,然后关闭文件句柄。

# 一般做法
try:
    f = open('xxx')
except:
    print 'fail to open'
    exit(-1)
try:
    do something
except:
    do something
finally:
     f.close()
# 使用with
with open("/tmp/foo.txt") as file:
    data = file.read()

with作用:简化代码,处理异常,清理工作

4. 列出 Python 中可变数据类型和不可变数据类型,为什么?

可变数据类型:当该数据类型对应变量的值发生变化时,对应内存地址并没有开辟新的内存,而是在原来的内存值上进行修改。

列表、集合、字典都是属于可变数据类型

不可变数据类型:当该数据类型对应变量的值发生变化时,原来内存中的值不变,而是会开辟一块新的内存,变量指向新的内存地址。

元祖、字符串、整型、浮点型、布尔型都是不可变数据类型

5. Python 获取当前日期?

>>> import datetime
>>> today = datetime.date.today()
>>> print(today)
2019-09-24
>>> today_format = today.strftime('%y%m%d')
>>> print(today_format)
190924

6. 统计字符串每个单词出现的次数

# 传统方法
message = "..."
count = {}
for i in message:
    if i not in count:
        count[i] = 1
    else:
        count[i] += 1
print(count)
# Counter方法
message = "..."
from collections import Counter
count = Counter(message)
print(count)

7.用 python 删除文件和用 linux 命令删除文件方法

python: os.remove(文件名)
linux: rm 文件名

8.写一段自定义异常代码

def f():
    try:
        for i in range(10):
            if i > 2:
                raise Exception("数字大于2了")
    except Exception as exc:
        print(exc)
f()

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

try..except..else没有捕获到异常,执行else语句

try..except..finally不管是否捕获到异常,都执行finally语句

10.遇到 bug 如何处理

>1. 细节上的错误,通过print()打印,能执行到print()说明一般上面的代码没有问题
>2. pycharm里的debug工具

语言特性

1. 谈谈对 Python 和其他语言的区别

  • 语言特点

简洁 优雅 省略了各种大括号和分号,还有一些关键字,类型说明

  • 语言类型

解释型语言,运行的时候是一行一行的解释,并运行,所以调试代码很方便,开发效率高

  • 第三方库

python是开源的,并且python的定位时任由其发展,应用领域很多
比如Web,运维,自动化测试,爬虫,数据分析,人工智能。Python具有非常完备的第三方库

  • 缺点

1.Python是一门解释型语言,所以它的速度相较于c/c++ 会慢一些。但是并不影响使用。因为现在的硬件配置都非常的高,基本没什么影响。除非是一些实时性比较强的程序可能会受到一些影响,但是也是有解决办法的,可以嵌入c\c++代码。
2.Python的GIL(Global Interpreter Lock)全局解释器锁

  • Python和Java相比

Python比Java要简单。Python是函数为一等公民的语言,而Java是类为一等公民的语言。Python是弱类型语言,而Java是强类型语言。

  • Python和C相比

对于使用:
Python的类库齐全并且使用简洁,很少代码实现的功能用C可能要很复杂
对于速度:
Python的运行速度相较于C,很慢。Python和CPython解释器都是C语言编写的

2. 简述解释型和编译型编程语言

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

解释型语言
使用专门的解释器对源程序逐行解释成特定平台的机器码并立即执行。

3. Python 的解释器种类以及相关特点?

  • CPython
    由C语言开发的,使用最广的解释器,在命名行下运行python,就是启动CPython解释器
  • IPython
    基于cpython之上的一个交互式计时器,交互方式增强,功能和cpython一样
  • PyPy
    目标是执行效率,采用JIT技术,对python代码进行动态编译,提高执行效率
  • JPython
    运行在Java上的解释器,直接把python代码编译成Java字节码执行
  • IronPython
    在微软 .NET 平台上的解释器,把python编译成 .NET 的字节码

4. 说说你知道的Python3 和 Python2 之间的区别?

  • print
    py2:print语句,语句就意味着可以直接跟要打印的东西,如果后面接的是一个元组对象,直接打印
    py3:print函数,函数就以为这必须要加上括号才能调用,如果接元组对象,可以接收多个位置参数,并可以打印

5. Python3 和 Python2 中 int 和 long 区别?
python2中有long类型
python3中没有long类型,只有int类

6. xrange 和 range 的区别?

  1. range和xrange都是在循环中使用,输出结果一样。
  2. range返回的是一个list对象,而xrange返回的是一个生成器对象(xrange object)。
  3. xrange则不会直接生成一个list,而是每次调用返回其中的一个值,内存空间使用极少,因而性能非常好。

编码规范

7. 什么是 PEP8?

1 缩进 4个空格的缩进(编辑器都可以完成此功能),不使用Tap,更不能混合使用Tap和空格。
2 每行最大长度79,换行可以使用反斜杠,最好使用圆括号。换行点要在操作符的后边敲回车。
3 类和top-level函数定义之间空两行;类中的方法定义之间空一行;函数内逻辑无关段落之间空一行;其他地方尽量不要再空行。
4 模块导入的顺序:按标准、三方和自己编写顺序依次导入,之间空一行。
5 不要在一句import中多个库,比如import os, sys不推荐
6 避免不必要的空格
7 注释必须要有
8 函数命名要遵循规范
10 尽可能使用 ‘is’ ‘is not’ 取代 ‘==’,比如if x is not None 要优于if x。
11 使用基于类的异常,每个模块或包都有自己的异常类,此异常类继承自Exception。
12 异常中try的代码尽可能少

8.了解 Python 之禅么?

import this

9. 了解 docstring 么?
10. 了解类型注解么?
11. 例举你知道 Python 对象的命名规范,例如方法或者类等
12. Python 中的注释有几种?
13. 如何优雅的给一个函数加注释?
14. 如何给变量加注释?
15. Python 代码缩进中是否支持 Tab 键和空格混用。

不能混用Tab和空格

16. 是否可以在一句 import 中导入多个库?

导入多个模块按下面顺序书写,使用空行将其分割

  • Python 标准库模块
  • Python 第三方模块
  • 自定义模块

17. 在给 Py 文件命名的时候需要注意什么?
18. 例举几个规范 Python 代码风格的工具

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值