python面试

2022/7/31 14:25:56

本文主要是介绍python面试,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

1. Python 是一个解释性、编译性、互动性和面向对象的脚本语言

2. python标识符: 

  第一个字符必须是字母表中字母或下划线 _ 。

  标识符的其他的部分由字母、数字和下划线组成。

  标识符对大小写敏感。

  Python 3 中,可以用中文作为变量名,非 ASCII 标识符也是允许的

3. 默认情况下,Python 3 源码文件以 UTF-8 编码,所有字符串都是 unicode 字符串。 当然你也可以为源码文件指定不同的编码

4. python保留字:保留字即关键字,我们不能把它们用作任何标识符名称。Python 的标准库提供了一个 keyword 模块,可以输出当前版本的所有关键字

>>> import keyword
>>> keyword.kwlist
['False', 'None', 'True', 'and', 'as', 'assert', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 
'except', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'nonlocal', 'not', 'or',
 'pass', 'raise', 'return', 'try', 'while', 'with', 'yield']

5. 注释: 

  Python中单行注释以 # 开头

  多行注释可以用多个 # 号,还有 ''' 和 """

6. 行与缩进

  python最具特色的就是使用缩进来表示代码块,不需要使用大括号 {} 

  缩进的空格数是可变的,但是同一个代码块的语句必须包含相同的缩进空格数。

  缩进的空格数是可变的,但是同一个代码块的语句必须包含相同的缩进空格数

  语句缩进数的空格数不一致,会导致运行错误

7. 多行语句

  Python 通常是一行写完一条语句,但如果语句很长,我们可以使用反斜杠 \ 来实现多行语句

    total = item_one + \

        item_two + \

        item_three

     str1 = "1111 \

          2222 \

          3333"

  在 [], {}, 或 () 中的多行语句,不需要使用反斜杠 \

8. 数字类型:python中数字有四种类型:整数、布尔型、浮点数和复数。

    int (整数), 如 1, 只有一种整数类型 int,表示为长整型,没有 python2 中的 Long。

    bool (布尔), 如 True。

   float (浮点数), 如 1.23、3E-2

   complex (复数), 如 1 + 2j、 1.1 + 2.2j

9.字符串类型: 

  Python 中单引号 ' 和双引号 " 使用完全相同。

  使用三引号(''' 或 """)可以指定一个多行字符串。

  转义符 \。

  反斜杠可以用来转义,使用 r 可以让反斜杠不发生转义。 如 r"this is a line with \n" 则 \n 会显示,并不是换行。

  按字面意义级联字符串,如 "this " "is " "string" 会被自动转换为 this is string

  字符串可以用 + 运算符连接在一起,用 * 运算符重复。

  Python 中的字符串有两种索引方式,从左往右以 0 开始,从右往左以 -1 开始。

  Python 中的字符串不能改变。

  Python 没有单独的字符类型,一个字符就是长度为 1 的字符串。

  字符串的截取的语法格式如下:变量[头下标:尾下标:步长]

10. 空行

  函数之间或类的方法之间用空行分隔,表示一段新的代码的开始。类和函数入口之间也用一行空行分隔,以突出函数入口的开始。

  空行与代码缩进不同,空行并不是 Python 语法的一部分。书写时不插入空行,Python 解释器运行也不会出错。但是空行的作用在于分隔两段不同功能或含义的代码,便于日后代码的维护或重构。

  空行也是程序代码的一部分。

 11. 等待用户输入: input("\n\n按下 enter 键后退出。")

12. 同一行显示多条语句:Python 可以在同一行中使用多条语句,语句之间使用分号 ; 分割

13. 多个二语句构成代码组

  缩进相同的一组语句构成一个代码块,我们称之代码组。

  像if、while、def和class这样的复合语句,首行以关键字开始,以冒号( : )结束,该行之后的一行或多行代码构成代码组。

  将首行及后面的代码组称为一个子句(clause)。

14. print输出: print 默认输出是换行的,如果要实现不换行需要在变量末尾加上 end=""

15. import 与 from...import

  在 python 用 import 或者 from...import 来导入相应的模块。

  将整个模块(somemodule)导入,格式为: import somemodule

  从某个模块中导入某个函数,格式为: from somemodule import somefunction

  从某个模块中导入多个函数,格式为: from somemodule import firstfunc, secondfunc, thirdfunc

  将某个模块中的全部函数导入,格式为: from somemodule import *

16.命令行参数:很多程序可以执行一些操作来查看一些基本信息,Python可以使用-h参数查看各参数帮助信息

17. python3数据类型:

  Python 中的变量不需要声明。每个变量在使用前都必须赋值,变量赋值以后该变量才会被创建。

  在 Python 中,变量就是变量,它没有类型,我们所说的"类型"是变量所指的内存中对象的类型。

  等号(=)用来给变量赋值。

  等号(=)运算符左边是一个变量名,等号(=)运算符右边是存储在变量中的值。

  多个变量赋值:Python允许你同时为多个变量赋值  a = b = c = 1  a, b, c = 1, 2, "runoob"

  标准数据类型: Number(数字)String(字符串)List(列表)Tuple(元组)Set(集合)Dictionary(字典)

    不可变数据(3 个):Number(数字)、String(字符串)、Tuple(元组);

    可变数据(3 个):List(列表)、Dictionary(字典)、Set(集合)。

18. Number(数字):

  Python3 支持 int、float、bool、complex(复数)

   在Python 3里,只有一种整数类型 int,表示为长整型,没有 python2 中的 Long。

 

   内置的 type() 函数可以用来查询变量所指的对象类型。

   还可以用 isinstance 来判断

   isinstance 和 type 的区别在于:

    type()不会认为子类是一种父类类型。

    isinstance()会认为子类是一种父类类型。

    Python3 中,bool 是 int 的子类,True 和 False 可以和数字相加, True==1、False==0 会返回 True,但可以通过 is 来判断类型。

    在 Python2 中是没有布尔型的,它用数字 0 表示 False,用 1 表示 True。

     issubclass(bool, int)
is True
is False
    变量指定一个值时,对象就会被创建;也可以使用del语句删除一些对象引用;通过使用del语句删除单个或多个对象 del var1 del var1 var2
    数字运算:
      1、Python可以同时为多个变量赋值,如a, b = 1, 2。
      2、一个变量可以通过赋值指向不同类型的对象。
     3、数值的除法包含两个运算符:/ 返回一个浮点数,// 返回一个整数(当除数和被除数都为整数时,// 得到的并不一定是整数类型的数,它与分母分子的数据类型有关系)。
     4、在混合计算时,Python会把整型转换成为浮点数。
        5. Python还支持复数,复数由实数部分和虚数部分构成,可以用a + bj,或者complex(a,b)表示, 复数的实部a和虚部b都是浮点型
     6. 在交互模式中,最后被输出的表达式结果被赋值给变量 _ , _ 变量应被用户视为只读变量
   数值类型转化:
      int(x) 将x转换为一个整数。
        float(x) 将x转换到一个浮点数。
      complex(x) 将x转换到一个复数,实数部分为 x,虚数部分为 0。
      complex(x, y) 将 x 和 y 转换到一个复数,实数部分为 x,虚数部分为 y。x 和 y 是数字表达式。
   数学函数:
    

 


    随机数函数:

     

 

    三角函数:

      

 

     数学常量: 

      

 19. string 字符串

  Python中的字符串用单引号 ' 或双引号 " 括起来,同时使用反斜杠 \ 转义特殊字符

  字符串的截取的语法格式:变量[头下标:尾下标:步长] 。 索引值以 0 为开始值,-1 为从末尾的开始位置。字符串更新可以截取字符串的一部分并与其他字段拼接

  加号 + 是字符串的连接符, 星号 * 表示复制当前字符串,与之结合的数字为复制的次数

  Python 使用反斜杠 \ 转义特殊字符,如果你不想让反斜杠发生转义,可以在字符串前面添加一个 r,表示原始字符串

  反斜杠(\)可以作为续行符,表示下一行是上一行的延续。也可以使用 """...""" 或者 '''...''' 跨越多行

  Python 不支持单字符类型,单字符在 Python 中也是作为一个字符串使用

  与 C 字符串不同的是,Python 字符串不能被改变。向一个索引位置赋值,比如word[0] = 'm'会导致错误

  字符串内建函数:     

序号方法及描述
1

capitalize()
将字符串的第一个字符转换为大写

2

center(width, fillchar)

返回一个指定的宽度 width 居中的字符串,fillchar 为填充的字符,默认为空格。
3

count(str, beg= 0,end=len(string))


返回 str 在 string 里面出现的次数,如果 beg 或者 end 指定则返回指定范围内 str 出现的次数
4

bytes.decode(encoding="utf-8", errors="strict")


Python3 中没有 decode 方法,但我们可以使用 bytes 对象的 decode() 方法来解码给定的 bytes 对象,这个 bytes 对象可以由 str.encode() 来编码返回。
5

encode(encoding='UTF-8',errors='strict')


以 encoding 指定的编码格式编码字符串,如果出错默认报一个ValueError 的异常,除非 errors 指定的是'ignore'或者'replace'
6

endswith(suffix, beg=0, end=len(string))
检查字符串是否以 obj 结束,如果beg 或者 end 指定则检查指定的范围内是否以 obj 结束,如果是,返回 True,否则返回 False.

7

expandtabs(tabsize=8)


把字符串 string 中的 tab 符号转为空格,tab 符号默认的空格数是 8 。
8

find(str, beg=0, end=len(string))


检测 str 是否包含在字符串中,如果指定范围 beg 和 end ,则检查是否包含在指定范围内,如果包含返回开始的索引值,否则返回-1
9

index(str, beg=0, end=len(string))


跟find()方法一样,只不过如果str不在字符串中会报一个异常。
10

isalnum()


如果字符串至少有一个字符并且所有字符都是字母或数字则返 回 True,否则返回 False
11

isalpha()


如果字符串至少有一个字符并且所有字符都是字母或中文字则返回 True, 否则返回 False
12

isdigit()


如果字符串只包含数字则返回 True 否则返回 False..
13

islower()


如果字符串中包含至少一个区分大小写的字符,并且所有这些(区分大小写的)字符都是小写,则返回 True,否则返回 False
14

isnumeric()


如果字符串中只包含数字字符,则返回 True,否则返回 False
15

isspace()


如果字符串中只包含空白,则返回 True,否则返回 False.
16

istitle()


如果字符串是标题化的(见 title())则返回 True,否则返回 False
17

isupper()


如果字符串中包含至少一个区分大小写的字符,并且所有这些(区分大小写的)字符都是大写,则返回 True,否则返回 False
18

join(seq)


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

len(string)


返回字符串长度
20

ljust(width[, fillchar])


返回一个原字符串左对齐,并使用 fillchar 填充至长度 width 的新字符串,fillchar 默认为空格。
21

lower()


转换字符串中所有大写字符为小写.
22

lstrip()


截掉字符串左边的空格或指定字符。
23

maketrans()


创建字符映射的转换表,对于接受两个参数的最简单的调用方式,第一个参数是字符串,表示需要转换的字符,第二个参数也是字符串表示转换的目标。
24

max(str)


返回字符串 str 中最大的字母。
25

min(str)


返回字符串 str 中最小的字母。
26

replace(old, new [, max])


把 将字符串中的 old 替换成 new,如果 max 指定,则替换不超过 max 次。
27

rfind(str, beg=0,end=len(string))


类似于 find()函数,不过是从右边开始查找.
28

rindex( str, beg=0, end=len(string))


类似于 index(),不过是从右边开始.
29

rjust(width,[, fillchar])


返回一个原字符串右对齐,并使用fillchar(默认空格)填充至长度 width 的新字符串
30

rstrip()


删除字符串末尾的空格或指定字符。
31

split(str="", num=string.count(str))


以 str 为分隔符截取字符串,如果 num 有指定值,则仅截取 num+1 个子字符串
32

splitlines([keepends])


按照行('\r', '\r\n', \n')分隔,返回一个包含各行作为元素的列表,如果参数 keepends 为 False,不包含换行符,如果为 True,则保留换行符。
33

startswith(substr, beg=0,end=len(string))


检查字符串是否是以指定子字符串 substr 开头,是则返回 True,否则返回 False。如果beg 和 end 指定值,则在指定范围内检查。
34

strip([chars])


在字符串上执行 lstrip()和 rstrip()
35

swapcase()


将字符串中大写转换为小写,小写转换为大写
36

title()


返回"标题化"的字符串,就是说所有单词都是以大写开始,其余字母均为小写(见 istitle())
37

translate(table, deletechars="")


根据 table 给出的表(包含 256 个字符)转换 string 的字符, 要过滤掉的字符放到 deletechars 参数中
38

upper()


转换字符串中的小写字母为大写
39

zfill (width)


返回长度为 width 的字符串,原字符串右对齐,前面填充0
40

isdecimal()


检查字符串是否只包含十进制字符,如果是返回 true,否则返回 false。

 20. 列表

  List(列表) 是 Python 中使用最频繁的数据类型。

  列表可以完成大多数集合类的数据结构实现。列表的数据项不需要具有相同的类型,它支持数字,字符串甚至可以包含列表(所谓嵌套)。

  列表是写在方括号 [] 之间、用逗号分隔开的元素列表。

  和字符串一样,列表同样可以被索引和截取,列表被截取后返回一个包含所需元素的新列表。

  列表截取的语法格式:变量[头下标:尾下标], 索引值以 0 为开始值,-1 为从末尾的开始位置。

  加号 + 是列表连接运算符,星号 * 是重复操作

  与Python字符串不一样的是,列表中的元素是可以改变的

  List 内置了有很多方法,例如 append()、pop() 等等

  Python 列表截取可以接收第三个参数,参数作用是截取的步长, 如果第三个参数为负数表示逆向读取

  列表都可以进行的操作包括索引,切片,加,乘,检查成员。

  Python 已经内置确定序列的长度以及确定最大和最小的元素的方法

  访问列表中的值: 与字符串的索引一样,列表索引从 0 开始,第二个索引是 1,索引也可以从尾部开始,最后一个元素的索引为 -1,往前一位为 -2,使用下标索引来访问列表中的值,同样你也可以使用方括号 [] 的形式截取字符

  更新列表:对列表的数据项进行修改或更新,也可以使用 append() 方法来添加列表项

  删除列表:使用 del 语句来删除列表的的元素

  列表脚本操作符:列表对 + 和 * 的操作符与字符串相似。+ 号用于组合列表,* 号用于重复列表。

  嵌套列表:使用嵌套列表即在列表里创建其它列表

  列表比较:引入 operator 模块的 eq 方法; operator.eq(a,b)

  Python列表函数&方法:

    

 

 

     

 

 

 21. Tuple(元组):

  元组(tuple)与列表类似,不同之处在于元组的元素不能修改。元组写在小括号 () 里,元素之间用逗号隔开。

  元组中的元素类型也可以不相同

  元组与字符串类似,可以被索引且下标索引从0开始,-1 为从末尾开始的位置。也可以进行截取。 可以把字符串看作一种特殊的元组

  虽然tuple的元素不可改变,但它可以包含可变的对象,比如list列表。

  构造包含 0 个或 1 个元素的元组比较特殊,所以有一些额外的语法规则:tup1 = () # 空元组   tup2 = (20,) # 一个元素,需要在元素后添加逗号

  元组也可以使用+操作符进行拼接

  元组中只包含一个元素时,需要在元素后面添加逗号 , ,否则括号会被当作运算符使用

  元组与字符串类似,下标索引从 0 开始,可以进行截取,组合等

  元组可以使用下标索引来访问元组中的值

  元组中的元素值是不允许修改的,但我们可以对元组进行连接组合

  元组中的元素值是不允许删除的,但我们可以使用del语句来删除整个元组    del tup

  元组运算符: 与字符串一样,元组之间可以使用 + 号和 * 号进行运算。 这就意味着他们可以组合和复制,运算后会生成一个新的元组

  元组也是一个序列,可以访问元组中的指定位置的元素,也可以截取索引中的一段元素

  元组内置函数:

    

  关于元组是不可变的:所谓元组的不可变指的是元组所指向的内存中的内容不可变。 重新赋值的元组 ,绑定到新的对象了,不是修改了原来的对象

 22.Set(集合)

  集合(set)是由一个或数个形态各异的大小整体组成的,构成集合的事物或对象称作元素或是成员。

  基本功能是进行成员关系测试和删除重复元素。

  可以使用大括号 { } 或者 set() 函数创建集合,注意:创建一个空集合必须用 set() 而不是 { },因为 { } 是用来创建一个空字典。

  创建格式:parame = {value01,value02,...} 或者  set(value)

  a - b  # 集合a中包含而集合b中不包含的元素

  a | b  # 集合a或b中包含的所有元素

  a & b  # 集合a和b中都包含了的元素

  a ^ b  # 不同时包含于a和b的元素

  集合内置方法:

    

 

 

23. Dictionary(字典)

 

  列表是有序的对象集合,字典是无序的对象集合。两者之间的区别在于:字典当中的元素是通过键来存取的,而不是通过偏移存取。

  字典是另一种可变容器模型,且可存储任意类型对象。

 

  字典是一种映射类型,字典用 { } 标识,它是一个无序的 键(key) : 值(value) 的集合。

 

 

  字典的关键字必须为不可变类型,且不能重复。键必须是唯一的,但值则不必。值可以取任何数据类型,但键必须是不可变的,如字符串,数字。

  构造函数 dict() 可以直接从键值对序列中构建字典 dict([('Runoob', 1), ('Google', 2), ('Taobao', 3)])      dict(Runoob=1, Google=2, Taobao=3)

  dict 作为 Python 的关键字和内置函数,变量名不建议命名为 dict

  字典类型也有一些内置的函数,例如 clear()、keys()、values() 等

  创建空字典使用 { }  dict()

  访问字典值:把相应的键放入到方括号中, 如果用字典里没有的键访问数据,会输出错误

  修改字典: 向字典添加新内容的方法是增加新的键/值对,修改或删除已有键/值对

  删除字典元素: 能删单一的元素也能清空字典,清空只需一项操作。 显式删除一个字典用del命令  del tinydict['Name']   del tinydict  tinydict.clear()  但这会引发一个异常,因为用执行 del 操作后字典不再存在

  字典键的特性: 

        字典值可以是任何的 python 对象,既可以是标准的对象,也可以是用户定义的,但键不行

        两个重要的点需要记住:1)不允许同一个键出现两次。创建时如果同一个键被赋值两次,后一个值会被记住

                   2)键必须不可变,所以可以用数字,字符串或元组充当,而用列表就不行

  字典内置函数&方法:

    

 

    

 

 

 24. Python数据类型转换

  Python 数据类型转换可以分为两种:

    隐式类型转换 - 自动完成     

      (对两种不同类型的数据进行运算,较低数据类型(整数)就会转换为较高数据类型(浮点数)以避免数据丢失;整型和字符串类型运算结果会报错,输出 TypeError。 Python 在这种情况下无法使用隐式转换)

    显式类型转换 - 需要使用类型函数来转换

 

    

 

 

 25.Python 推导式

  Python 推导式是一种独特的数据处理方式,可以从一个数据序列构建另一个新的数据序列的结构体。

  Python 支持各种数据结构的推导式:

    列表(list)推导式

[表达式 for 变量 in 列表] 
[out_exp_res for out_exp in input_list]

或者 

[表达式 for 变量 in 列表 if 条件]
[out_exp_res for out_exp in input_list if condition]

 

    字典(dict)推导式

{ key_expr: value_expr for value in collection }

或

{ key_expr: value_expr for value in collection if condition }

 

    集合(set)推导式

{ expression for item in Sequence }
或
{ expression for item in Sequence if conditional }

 

    元组(tuple)推导式

(expression for item in Sequence )
或
(expression for item in Sequence if conditional )

    元组推导式和列表推导式的用法也完全相同,只是元组推导式是用 () 圆括号将各部分括起来,而列表推导式用的是中括号 [],另外元组推导式返回的结果是一个生成器对象。

 

26. Python3 运算符

  Python 语言支持以下类型的运算符: 算术运算符  比较关系运算符  赋值运算符  逻辑运算符  位运算符  成员运算符  身份运算符  运算符优先级

 

  算术运算符:+ - * / % ** //

  比较关系运算符:==  !=  >  <  >=  <=

  赋值运算符: =  +=   -=   *=   /=  %=  **=  //=   :=

  位运算符: &  |  ^  ~  <<  >> 

  逻辑运算符: and (布尔"与" - 如果 x 为 False,x and y 返回 x 的值,否则返回 y 的计算值。)        10 and 20 ===20 

        or(布尔"或" - 如果 x 是 True,它返回 x 的值,否则它返回 y 的计算值。)     10 or 20 === 10

        not(布尔"非" - 如果 x 为 True,返回 False 。如果 x 为 False,它返回 True。)  not (10 and 20) === False

  成员运算符: in    not in

  身份运算符: 

    is  ( is 是判断两个标识符是不是引用自一个对象)        x is y, 类似 id(x) == id(y) , 如果引用的是同一个对象则返回 True,否则返回 False

     is not (is not 是判断两个标识符是不是引用自不同对象)   x is not y , 类似 id(x) != id(y)。如果引用的不是同一个对象则返回结果 True,否则返回 False。

     id() 函数用于获取对象内存地址

    is 与 == 区别:

      is 用于判断两个变量引用对象是否为同一个, == 用于判断引用变量的值是否相等。

   运算符优先级: 

      以下表格列出了从最高到最低优先级的所有运算符, 相同单元格内的运算符具有相同优先级。 相同单元格内的运算符从左至右分组(除了幂运算是从右至左分组)

      

 

     and 比 or 拥有更高优先级:

    Python3 已不支持 <> 运算符,可以使用 != 代替

27. 

 

 

 

 


 

 

 

  

 



这篇关于python面试的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程