Python的面试问答题有哪些

发布时间:2022-02-23 09:47:33 作者:iii
来源:亿速云 阅读:134

今天小编给大家分享一下Python的面试问答题有哪些的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。

一、基础知识

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

import os

import sys

import re

import math

import time

import datetime

import random

import threading

import multiprocessing

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

int、float、complex         # 数值型

bool            # 布尔型

str             # 字符串

list            # 列表

tuple           # 元组

dict            # 字典

3. 简述 with 方法打开处理文件帮我我们做了什么?

with context_expression [as target(s)]:

    with-body

这里 context_expression 要返回一个上下文管理器对象,该对象并不赋值给as子句中的 target(s),而是会将上下文管理器的__enter__() 方法的返回值赋值给target(s)。

4. Python 的可变和不可变数据类型?

5. Python 获取当前日期?

import datetime

import time

print(time.time())           # 时间戳

print(time.strftime("%Y-%m-%d %H:%M:%S %w", time.localtime()))  # 年月日时分秒

print(datetime.datetime.now())      # 年月日时分秒

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

def word_amount(sentence):

    split_list = sentence.split()

    dict_result = {}

    for word_name in split_list:

        if word_name not in dict_result.keys():

            dict_result[word_name] = 1

        else:

            dict_result[word_name] += 1

    return dict_result

if __name__ == '__main__':

    sentence = "I can because i think i can"

    dict_result = word_amount(sentence)

    print(dict_result)

或者:

if __name__ == '__main__':

    sentence = "I can because i think i can"

    result = {word: sentence.split().count(word) for word in set(sentence.split())}

    print(result)

或者:

from collections import Counter

if __name__ == '__main__':

    sentence = "I can because i think i can"

    counts = Counter(sentence.split())

    print(counts)

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

import os

os.remove("demo.txt")

rm demo.txt

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

class printException(Exception):

    pass

def testRaise():

    raise printException('printErr')

if __name__ == '__main__':

    try:

        testRaise()

    except printException, e:

        print e

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

def read_filedata(file_name):

    file_obj = ""

    try:

        # 需要检测的异常代码片段

        file_obj = open(file_name, "r")

        result_data = file_obj.read()

    except IOError, e:

        # 发生“IOError”异常进行处理的代码片段

        file_obj = "文件不存在:"+ str(e)

    else:

        # 没有引发“IOError”异常执行的代码片段,返回读取到的数据

        return result_data

    finally:

        # 不管有没有引发错误都会执行的代码片段,isinstance()用于判断一个数据类型

        if isinstance(file_obj, str):

            return file_obj

        elif isinstance(file_obj, file):

            file_obj.close()

        else:

            return "未知错误,请检查您的代码..."

if __name__ == '__main__':

    result = read_filedata("abc.txt")

    print(result)

10. 遇到 bug 如何处理?

二、语言特性

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

Python 是一门语法简洁优美,功能强大无比,应用领域非常广泛,具有强大完备的第三方库的一门强类型动态,可移植,可扩展,可嵌入的解释型编程语言。

强类型语言、弱类型语言的区别:

动态语言、静态语言的区别:

编译型语言、解释型语言的区别:

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

可参考上一条的解释内容。

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

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

编码:Python2 的默认编码是 asscii,这也是导致 Python2 中经常遇到编码问题的原因之一,至于是为什么会使用 asscii 作为默认编码,原因在于 Python 这门语言诞生的时候还没出现 Unicode。Python3 默认采用了 UTF-8 作为默认编码,因此你不再需要在文件顶部写 # coding=utf-8 了。

字符串:Python2 中字符的类型,str:已经编码后的字节序列,unicode:编码前的文本字符;而 Python3 中字符的类型,str:编码过的 unicode 文本字符,bytes:编码前的字节序列。

可以认为字符串有两种状态,即文本状态和字节(二进制)状态。Python2 和 Python3 中的两种字符类型都分别对应这两种状态,然后相互之间进行编解码转化。编码就是将字符串转换成字节码,涉及到字符串的内部表示;解码就是将字节码转换为字符串,将比特位显示成字符。

在 Python2 中,str 和 unicode 都有 encode 和 decode 方法。但是不建议对 str 使用 encode,对 unicode 使用 decode, 这是Python2 设计上的缺陷。Python3 则进行了优化,str 只有一个 encode 方法将字符串转化为一个字节码,而且 bytes 也只有一个 decode 方法将字节码转化为一个文本字符串。

print:Python2 中的 print 是语句;Python3 中的 print 是函数。例如:

>>> print("hello", "world")

('hello', 'world')

# py3

>>> print("hello", "world")

hello world

这个例子就比较明显了,在 py2 中,print 语句后面接的是一个元组对象,而在 py3 中,print 函数可以接收多个位置参数。如果希望在 Python2 中把 print 当函数使用,那么可以导入 future 模块中的 print_function。

import:python2 默认是按照相对路径导入模块和包,python3 默认则是按照绝对路径导入。

input:Python3:input 解析输入为str字符型;Python2:input 解析输入为int型,raw_input 解析输入为 str 类型。

算法符:在 Python2 中,/ 执行传统除法,对于整数执行截断除法,浮点数执行浮点除法(保留小数部分,即使整除);// 执行 Floor 除法,截除掉余数并且针对整数操作数返回一个整数,如果有任何一个操作数是浮点数,则返回一个浮点数。在 Python3 中,/ 总是执行真除法,不管操作数的类型,都会返回包含任何余数的浮点结果;// 执行 Floor 除法,截除掉余数并且针对整数操作数返回一个整数,如果有任何一个操作数是浮点数,则返回一个浮点数。

int/long:Python3 里,只有一种整数类型 int,大多数情况下,它很像 Python2 里的长整型。Python2 有为非浮点数准备的 int 和 long 类型。int 类型的最大值不能超过 sys.maxint,而且这个最大值是平台相关的。

True和False:在 Python2 中,True 和 False 是两个全局变量(名字),在数值上分别对应 1 和 0,既然是变量,那么它们就可以指向其它对象。Python3 修正了这个缺陷,True 和 False 变为两个关键字,永远指向两个固定的对象,不允许再被重新赋值。

迭代器:在 Python2 中很多返回列表对象的内置函数和方法在 Python3 都改成了返回类似于迭代器的对象,因为迭代器的惰性加载特性使得操作大数据更有效率。

例如:Python2 中使用 xrange() 来创建一个迭代器对象,使用 range() 创建一个 list 数组(要生成很大的数字序列的时候,用 xrange 会比 range 性能优很多,因为不需要一上来就开辟一块很大的内存空间);Python3 中使用 range() 创建迭代器对象,移除了 xrange() 方法。

另外,字典对象的 dict.keys()、dict.values() 方法都不再返回列表,而是以一个类似迭代器的 view 对象返回。高阶函数 map、filter、zip 返回的也都不是列表对象了。Python2 的迭代器必须实现 next 方法,而 Python3 改成了__iter__()、next。

nonlocal:在 Python2 中可以在函数里面可以用关键字 global 声明某个变量为全局变量,但是在嵌套函数中,想要给一个变量声明为非局部变量是没法实现的,在 Pyhon3,新增了关键字 nonlcoal,一般使用在闭包中的,使变量使用外层的同名变量。

LEGB作用域的理解:python3 的 local, global, nonlocal 简析

以上就是“Python的面试问答题有哪些”这篇文章的所有内容,感谢各位的阅读!相信大家阅读完这篇文章都有很大的收获,小编每天都会为大家更新不同的知识,如果还想学习更多的知识,请关注亿速云行业资讯频道。

推荐阅读:
  1. web前端的面试问答题有哪些
  2. 关于Python的面试问答题有哪些

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

python

上一篇:在HTML5超文本标记语言的实现方法有哪些

下一篇:html5中web字体加载方案有哪些

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》