python面试题总结

python面试题总结,第1张

python面试题总结

什么是python?有什么特点?

        python是一种解释性、面向对象、动态数据类型的高级程序设计语言,python在编写时无须定义变量类型,在运行时变量类型强制固定,属于强类型语言,python无需编译,可以在解释器环境下直接运行

        特点:是一种解释性语言,因此不需要编译

                   动态类型语言,不需要指定变量类型

                   面向对象的编程,至此通过组合和继承的方式定义类

                   python代码比较容易,运行速度比编译语言慢

                   用途广泛,被称为‘胶水语言’

                   专注于算法和数据结构,不需要处理底层的语言

python2.0和python3.0版本的区别?

       (1) print语句没有了,取而代之的是print()函数

        (2)python2.0默认使用ASCII编码,不支持中文,且变量名只能使用英文

                python3.0默认使用UTF-8编码,默认支持中文,且变量名能够使用中文

         (3)python2.0中整除相除是一个整数,会把小数点忽略掉

                python3.0整除相除的结果也会是浮点数

         (4)python3中使用as作为关键字,捕获异常由except exc var 改成except  exc  as var

         (5)python3中range完全取代了xrange函数

         (6)python2中不等于有两种写法 “!=” 和“<>”,python3只有‘!=’一种写法

         (7)python2中一个tab和8个span等价,python3中tab和span共存会报错

        (8)打开文件,python2中使用file()或open(),python3只能使用open()

python常见的运算符

        python算数运算符

        python比较运算符

        python赋值运算符

        python位运算符

        python逻辑运算符

        python成员运算符

        python身份运算符

运算符is与==的区别?

        is判断a对象是否是b对象,用于判断两个对象是否为同一个,通过id判断

        ==判断a对象的值是否和b对象相等,通过value判断

python有哪些数据类型,可变数据类型和不可变数据类型分别包括哪些?

        python自带的数据类型分为可变数据类型和不可变数据类型

        可变数据类型:表示允许变量的值发生变化,如果改变了该数据类型的对应变量的值,不会重新分配内存空间

                                可变数据类型包括:列表(list),集合(set)和字典(dict)

        不可变数据类型:不允许变量的值发生变化,如果改变了该数据类型的对应变量的值,那么会重新分配内存空间

                                不可变数据类型:字符串(str)元组(tuple)数组(number)

列表、元组、集合、字典的区别有哪些?

        列表(list):是长度可变有序的数据存储容器,可以通过下标索引到相应的数据

        元组(tuple):固定长度不可变的顺序容器,访问效率高,适合存储一些常量数据,可以作为字典的键使用

        集合(set):无序,元素只出现一次,可以自动去重

        字典(dict):长度可变的hash字典容器,存储的方式为键值对,可以获取相应的键获取相应的值,key支持多种类型,key必须是不可变类型且唯一

列表和元组的区别有哪些?

        列表是可以修改的,而元组不能修改,如果要增添和删除元素,只能使用列表,元组被称为只读列表,数据可以被查询,但不能被修改,元组一旦被定义,长度和内容是固定的,不能被修改,

        列表用[]表示,元组用()表示

        列表不能作为字典的key使用,而元组可以

        如果元组中仅有一条元素,那么需要在元素后加上逗号

如何反序地迭代一个序列

        使用内置的reversed()和range()来实现,也可以使用扩展切片[::-1]的形式实现

        如果序列是列表:使用reverse()

        reversed()是python内置的函数,参数可以是字符串、列表、元组等序列

        range(start,stop[,step])

        start:计数从start开始,默认从0开始

        end:计数结束,但不包括end

        step:步长,默认为1

列表的sort方法和sorted方法有何区别?

        sort方法和内置方法sorted方法都有key和reverse参数,key参数接收一个函数来实现自定义排序,reverse默认是false,表示不需要反向排序,如果需要反向排序,设置为true

        sort是列表方法,只可用来对列表进行排序,是在原序列上进行修改,不会产生新的序列,内置的sorted方法可以用于任何可迭代的对象(字符串、列表、元组、字典),它会产生一个新的序列,旧的对象仍然存在。

什么是列表生成式?

        用来创建列表的表达式就是列表生成式,也被称为列表推导式,它相当于for循环的简写形式,列表生成式返回的是一个列表,它提供了从序列创建列表的简单途径,通常应用程序将一些 *** 作应用于某个序列的每个元素,用其获得的结果作为生成新列表的元素,或者根据确定的判定条件创建子序列

        列表生成式的语法:[表达式for循环]

字符串格式化%和.format的区别是什么?

        一般情况下,使用%已经足够满足程序的要求,但是像那种需要在一个位置添加元素或列表类型的代码,最好选择format方法,在format中,{}表示占位符

单引号、双引号和三引号的区别?

        单引号和双引号式等效的,如果需要换行,那么需要使用符号(),三引号可以直接换行,并且可以包含注释

        注意:三引号括起来的字符串可以换行

                单引号里面不能再加单引号,但是可以加双引号进行转义输出

                双引号里面不能再加双引号,可以加单引号进行转移输出

python常见的字符串函数

        center(width,fillchar)返回一个原字符串居中,并使用空格填充至长度width,默认填充字符为 空格

        count(str,beg=0,end=len(string))返回str在string里面出现的次数,如果beg或者end指定,返回指定范围内str出现的次数

        isalnum()字符串至少有一个字符并且所有字符都是字母或者数字则返回true,否则返回false

        isalpha()字符串至少有一个字符并且所有字符都是字母则返回true,否则返回false

        join(seq)以指定字符串作为分隔,将seq中所有元素合并为一个新的字符串

        len(string)返回字符串的长度

        lower()转换字符串中所有大写字符转为小写

        lstrip()截掉字符串左边的空格或指定字符串

        max(str)返回字符串str中最大的字母

        min(str)  返回字符串str中最小的字母

判断一个字符串为全数字的方法

        isdigit() 检测字符串是否只由数字组成

        isnumeric() 这个方法只针对Unicode字符串,定义Unicode在字符串前加u即可,例:str=u'12344'

        自定义函数is_number

字典的items()与iteritems()有什么不同?

        字典的items方法可以将所有的字典项以列表的方式返回,因为字典是无序的,所以用items方法返回字典的所有项,也是无序的

        items会一次性取出所有的值,并以列表返回,iteritems方法与items方法用法大致相同,只是它返回的不是列表,而是一个迭代器,通过迭代取里面的值,一般数据量大的时候,iteritems比items效率高些

        python3中已经废除了iteritems(),用items替代了iteritems,可以用for循环遍历

python中pass的作用?

        pass是一个在python中不会被执行的语句,pass语句一般作为占位符或者创建占位程序,在复杂语句中,如果一个地方需要被暂时留白,可以使用pass语句

except的作用?

        捕获异常,当使用try语句时,发生异常会执行except代码块,若try语句正常执行,则执行else块代码

常见的异常

        IOError:输入输出异常

        AttributeError:视图访问一个对象没有的属性

        importError:无法引入模块或包,基本是路径问题

        IndentationError:语法错误,代码没有正确的对齐

        IndexError:下标索引超出序列边界

        KeyError:试图访问字典里不存在的键

        SyntaxError:python代码逻辑语法出错,不能执行

        NameError:使用一个还未赋值的的变量

xrange和range的区别?

        range([start,]stop,[,step]),根据start与stop指定的范围以及step设定的步长,生成一个序列,xrange用法与range完全相同,但是,xrange生成的是一个生成器,他的数据可以一个一个取出来,在需要生成很大的数字序列时,xrange比range性能更优,因为不需要在一开始的时候就开辟一块很大的内存空间

python的编码规范

代码编排

        缩进:4个空格实现缩进,尽量不要使用tab        

        行:每行长度不超过79,换行用

        空行:类和top-level函数之间空两行,类中的方法定义空一行

        空格:括号内的第一个位置,不要空格,紧靠右的位置也不能空格

注释规范

        块注释,在代码前增加注释,#

        行注释,在一句代码后加注释

编程建议

        字符串拼接,尽量使用join

        单例对象,尽量使用is 、is not,不要使用==

        使用is not  而不是not  is

        使用drf来定义函数,而不是将匿名函数赋值给某个变量

        尽量代码整齐,简洁

        使用isinstance()来判断instance的类型

python的命名规则?

        标识符由字母、下划线和数字组成,且数字不能开头

        严格区分大小写

        不能使用关键字

        采用驼峰法命名:大驼峰:第一个字母以小写字母开头,第二个首字母大写

                                     小驼峰:第一个字母以大写字母开头,第二个首字母小写

简述‘鸭子类型’

        当看到一只鸟走起路来像鸭子,游泳起来像鸭子、叫起来也像鸭子、那么这只鸟就是鸭子,在鸭子类型中,关注的不是对象的类型本身,而是他如何使用

python命名空间

        在python中,所有的名字都存在与一个空间中,他们在该空间中存在和被 *** 作,他就好像一个盒子,每一个变量名字都对应装着一个对象,当查询变量时,会从该盒子里查找相应的对象

                 

        

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5521331.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-13
下一篇 2022-12-13

发表评论

登录后才能评论

评论列表(0条)

保存