什么是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中,所有的名字都存在与一个空间中,他们在该空间中存在和被 *** 作,他就好像一个盒子,每一个变量名字都对应装着一个对象,当查询变量时,会从该盒子里查找相应的对象
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)