int、float、complex # 数值型bool # 布尔型str # 字符串list # 列表tuple # 元组dict # 字典
3. 简述with方法打开处理文件帮我我们做了什么?
with语句适用于对资源进行访问的场合,确保不管利用过程中是否发生非常都会实行必要的清理操作,开释资源,比如文件利用后自动关闭、线程中锁的自动获取和开释等;with语句即高下文管理器,在程序中用来表示代码实行过程中所处的前后环境。高下文管理器:含有__enter__和__exit__方法的工具便是高下文管理器。enter():在实行with语句之前,首先实行该方法,常日返回一个实例工具,如果with语句有as目标,则将工具赋值给as目标。exit():在实行with语句结束后,自动调用__exit__()方法,用户开释资源,若此方法返回布尔值True,程序会忽略非常。利用环境:文件读写、线程锁的自动开释等。with context_expression [as target(s)]: with-body
这里context_expression要返回一个高下文管理器工具,该工具并不赋值给as子句中的target(s),而是会将高下文管理器的__enter__()方法的返回值赋值给target(s)。
不太清楚的可以参考链接:深入理解 Python 中的高下文管理器。

Python的可变和不可变数据类型?
不可变数据类型:即数据被创建之后,数据的值将不再发生改变,有数值、字符、元祖类型;可变数据类型:数据别创建之后,数据的值可以发生变革,有列表、字典、凑集类型。5. Python获取当前日期?
# -- coding: UTF-8 --import datetimeimport timeif __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_resultif __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 Counterif __name__ == '__main__': sentence = "I can because i think i can" counts = Counter(sentence.split()) print(counts)
7. 用python删除文件和用linux命令删除文件方法。
import osos.remove("demo.txt")
rm demo.txt
8. 写一段自定义非常代码?
class printException(Exception): passdef 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 如何处理?
首先查看报错信息,根据报错信息找到相应代码,常日一样平常的数据构造或者算法缺点只要找到报错代码就可以顺利办理;
如果碰着暂时不能办理的缺点先不要慌,我们可以利用编译器的Debug模式或者自己在代码中加注断点进行代码排查;
如果依然不能办理bug,我们可以拷贝报错信息,在搜索引擎中进行搜索。 没有人写代码不出bug,如果你在一个bug上耗费韶光超过半小时,可以与其他同事磋商(把稳节制,可能有些费同事);
另辟路子:方法总比困难多,在进行快速开拓时,我们该当优先实现功能而不是拘泥于运行效率,以是碰着一些暂时不能办理的BUG可以考虑其余的实现方法。
措辞特性谈谈对Python的理解和其他措辞的差异?Python是一门语法简洁幽美,功能强大无比,运用领域非常广泛,具有强大完备的第三方库的一门强类型的动态,可移植,可扩展,可嵌入的阐明型编程措辞。
强类型措辞、弱类型措辞的差异:
如果措辞常常隐式地转换变量的类型,那这个措辞便是弱类型措辞,如果很少会这样做,那便是强类型措辞。Python很少会隐式地转换变量的类型,以是Python是强类型的措辞。强类型措辞和弱类型缘故原由其判断的根本是是否会隐式进行措辞类型转变。强类型缘故原由在速率上可能略逊于弱类型措辞,但是强类型定义语带来的严谨性又避免了不必要的缺点。强类型措辞包括:Java、.net、Python、C++等措辞。个中Python是动态措辞,是强类型定义措辞,是类型安全的措辞,Java是静态措辞,是强类型定义措辞,也是类型安全的措辞;弱类型措辞包括:VB,PHP,JavaScript等措辞。个中VBScript是动态措辞,是一种类型不屈安的缘故原由。动态措辞、静态措辞的差异:
动态类型措辞:动态性措辞是指在运行期间才去做数据类型检讨的措辞,也便是说动态类型措辞编程时,永久不用给任何变量指天命据类型,该措辞会在第一次赋值给变量时,在内部将数据类型记录下来。Python和Ruby便是一种范例的动态类型措辞,其他的各种脚本措辞如VBScript也多少属于动态类型措辞。静态类型措辞:静态类型措辞与动态类则刚好相反,它的数据类型在编译期间检讨,也便是说在写程序时要声明所有变量的数据类型,C/C++是静态类型措辞的范例代表,其他静态措辞还有C#、Java等。对付动态措辞与静态措辞的区分,其根本在于数据类型是在运行期间检讨还是在编译期间检讨。编译型措辞、阐明型措辞的差异:
编译型措辞:须要将一段程序直接翻译成机器码(对付C/C++这种非跨平台的措辞)或者中间码(Java这种跨平台措辞,须要虚拟机再将中间码印射成机器码)。一样平常需经由编译(compile)、链接(linker)这两个步骤。编译是把源代码编译成机器码,链接是把各个模块的机器码和依赖库串连起来天生可实行文件。阐明型措辞:利用阐明器将源码逐行阐明成机器码并立即实行,不会进行整体性的编译和链接处理,比较编译型措辞省了道工序。一个像是用饭等菜都上全了再开动,一个像是吃火锅,边涮边吃,机遇不一样。阐明型措辞的优点:跨平台随意马虎,只需供应特定平台的阐明器;缺陷:每次运行的时候都要阐明一遍,性能上不如编译型措辞。简述阐明型和编译型编程措辞?可参考上一条的阐明内容。
3. Python的阐明器种类以及干系特点?
CPython:官方版本的阐明器。这个阐明器是用C措辞开拓的,以是叫CPython。在命令行下运行python便是启动CPython阐明器。 CPython是利用最广的Python阐明器。IPython:IPython是基于CPython之上的一个交互式阐明器,也便是说,IPython只是在交互办法上有所增强,但是实行Python代码的功能和CPython是完备一样的。CPython用>>>作为提示符,而IPython用In [序号]:作为提示符。PyPy:它的目标是实行速率。PyPy采取JIT技能,对Python代码进行动态编译(把稳不是阐明),以是可以显著提高Python代码的实行速率。绝大部分Python代码都可以在PyPy下运行,但是PyPy和CPython有一些是不同的,这就导致相同的Python代码在两种阐明器下实行可能会有不同的结果。Jython:Jython是运行在Java平台上的Python阐明器,可以直接把Python代码编译成Java字节码实行。说说你知道的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的理解:python2和python3 通过import导入模块和包的差异
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简析
Python3和Python2中int和long差异?可参考上一条的阐明内容。
xrange和range的差异?可参考上上一条的阐明内容。