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)。
不太清楚的可以参考链接:
https://juejin.cn/post/6844903795403522056
4. Python的可变和不可变数据类型?
5. Python获取当前日期?
- # -*- coding: UTF-8 -*-
- import datetime
- import time
-
-
- if __name__ == "__main__":
- 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的相关意义。
- # -*- coding: UTF-8 -*-
-
-
- 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是函数。例如:
- # py2
- >>> print("hello", "world")
- ('hello', 'world')
-
-
- # py3
- >>> print("hello", "world")
- hello world
这个例子就比较明显了,在py2中,print语句后面接的是一个元组对象,而在py3中,print函数可以接收多个位置参数。如果希望在Python2中把print当函数使用,那么可以导入future模块中的print_function。
import:python2默认是按照相对路径导入模块和包,python3默认则是按照绝对路径导入。
import的理解:
https://blog.csdn.net/Blateyang/article/details/89492570
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简析
5. Python3和Python2中int和long区别?
可以参考上一条的解释内容。
6. xrange和range的区别?
可参考上一条的解释内容。