Python面试常见的30个问题及答案

Python面试常见的30个问题及答案_第1张图片

Python面试问题

问题1。 Python的主要功能是什么?

python特性如下:

  1. 解释型
  2. 动态类型
  3. 面向对象
  4. 简洁明了
  5. 免费自由
  6. 有一个庞大的社区

Q.2。区分深层和浅层拷贝。

深拷贝将对象复制到另一个对象中。这意味着如果您对对象的副本进行更改,则不会影响原始对象。在Python中,我们使用函数 deepcopy(),我们导入拷贝模块,用法如下:

>>> import copy
>>> b=copy.deepcopy(a)

Python面试常见的30个问题及答案_第2张图片

深层复制 – Python面试问题与解答

但是,浅拷贝会将一个对象的引用复制到另一个对象。因此,如果我们在副本中进行更改,则会影响原始对象。方法 copy(),用法如下:

>>> b=copy.copy(a)

Python面试常见的30个问题及答案_第3张图片

浅拷贝 – Python访谈问题和答案

Q.3。区分列表和元组。

主要区别在于列表是可变的,但元组是不可变的。例子:

>>> mylist=[1,3,3]
>>> mylist[1]=2
>>> mytuple=(1,3,3)
>>> mytuple[1]=2

Traceback (most recent call last):

File “”, line 1, in

mytuple[1]=2

TypeError: ‘tuple’ object does not support item assignment

Q.4。用Python解释三元运算符。

在Python中,与C++不同,我们没有?:,但我们有:

[on true] if [expression] else [on false]

如果表达式为True,则执行[on true]下的语句。否则,在[on false]下执行。

以下是如何使用它:

>>> a,b=2,3
>>> min=a if a>> min

2

>>> print("Hi") if a

Hi

Q.5。如何在Python中实现多线程?

线程是一个轻量级的进程,并且**[多线程]**允许我们一次执行多个线程。如您所知,Python是一种多线程语言。它有一个multi-threading包。对于新手小白想更轻松的学好Python基础,Python爬虫,web开发、大数据,数据分析,人工智能等技术,这里给大家分享系统教学资源,架下我尉(同英): 2763177065 【教程/工具/方法/解疑】

GIL(全局解释器锁)确保一次执行单个线程。一个线程保存GIL并在将其传递给下一个线程之前做了一些工作。这就产生了并行执行的错觉。但实际上,它只是在CPU上轮流轮流。当然,所有传递都会增加执行的开销。

问题6。在Python中解释继承。

当一个类继承自另一个类时,它被称为继承自parent /base /super类的子类/派生/子类。它继承/获取所有成员(属性和方法)。

Python面试常见的30个问题及答案_第4张图片

Python访谈问题 – Python中的继承

继承使我们可以重用我们的代码,并且还可以更轻松地创建和维护应用程序。 Python支持以下类型的继承:

  1. **单一继承 – **类继承自单个基类。
  2. **多重继承 – **一个类继承自多个基类。
  3. **多级继承 – **类继承自基类,而基类又继承自另一个基类。
  4. **分层继承 – **多个类继承自单个基类。
  5. **混合遗传 – **混合继承是两种或更多种类型的继承的组合。

Q.7。什么是Flask?

**[Python Flask]*正如我们之前讨论的那样,是一个用于Python的Web微框架。它基于’Werkzeug,Jinja 2和良好意图’BSD许可证。它的两个依赖项是Werkzeug和Jinja2。这意味着它几乎不依赖于外部库。因此,我们可以称之为轻型框架。

会话使用签名cookie来允许用户查看和修改会话内容。它会记住从一个请求到另一个请求的信息。但是,要修改会话,用户必须具有密钥Flask.secret_key。

Q.8。如何在Python中管理内存?

Python有一个私有堆空间来容纳所有对象和数据结构。作为程序员,我们无法访问它;由解释器来管理它。但是使用核心API,我们可以访问一些工具。 Python内存管理器控制分配。

此外,内置的垃圾收集器会回收所有未使用的内存,以便可以将其用于堆空间。

Q.9。在Python中解释 help()和 dir()函数。

help()函数显示文档字符串及其参数的帮助。

>>> import copy
>>> help(copy.copy)

有关copy模块中的方法copy的帮助:

copy(X)

对任意的浅拷贝操作**Python对象**。

有关详细信息,请参阅模块的__doc__字符串。

dir()函数显示对象(任何类型)的所有成员。

>>> dir(copy.copy)

[ ‘annotations’, ‘call’, ‘class’, ‘closure’, ‘code’, ‘defaults’, ‘delattr’, ‘dict’, ‘DIR’, ‘doc’, ‘eq’, ‘format’,’ ge”, ‘get’, ‘getattribute’, ‘globals’, ‘gt’, ‘hash’, ‘init’, ‘init_subclass’, ‘kwdefaults’, ‘le’, ‘lt’, ‘module’, ‘name’ , ‘ne’, ‘new’, ‘qualname’, ‘reduce’, ‘reduce_ex’, ‘repr’, ‘setattr’, ‘sizeof’, ‘str’, ‘subclasshook’]

Q.10。每当你退出Python时,所有内存都是de-allocated吗?

这里的答案是否定的。该**模块**使用循环引用其他对象或从全局命名空间引用的对象,并不总是在退出Python时释放。

另外,C库保留的部分内存是不可能de-allocate的。

Q.11。什么是monkey补丁?

在run-time上动态修改类或模块。

>>> class A:
    def func(self):
        print("Hi")
>>> def monkey(self):
        print "Hi, monkey"
>>> m.A.func = monkey
>>> a = m.A()
>>> a.func()

输出

Hi,monkey

Q.12。 Python中的字典是什么?

A python dictionary 是我从未在其他语言中看到过的东西,比如C++或者Java编程。Python中的字典拥有key-value对。

>>> roots={25:5,16:4,9:3,4:2,1:1}
>>> type(roots)
>>> roots[9]

3

字典是可变的,我们也可以使用comprehension来创建它。

>>> roots={x**2:x for x in range(5,0,-1)}
>>> roots

{25:5,16:4,9:3,4:2,1:1}

Q.13。 * args和 kwargs是什么意思?**

如果我们不知道将多少个参数传递给函数,比如当我们想要传递一个列表或一个元组值时,我们使用* args。对于新手小白想更轻松的学好Python基础,Python爬虫,web开发、大数据,数据分析,人工智能等技术,这里给大家分享系统教学资源,架下我尉(同英): 2763177065 【教程/工具/方法/解疑】

>>> def func(*args):
    for i in args:
        print(i)  
>>> func(3,2,1,4,7)

3

2

1

4

7

**当我们不知道将会有多少关键字参数时,它会获取关键字参数。

>>> def func(**kwargs):
    for i in kwargs:
        print(i,kwargs[i])
>>> func(a=1,b=2,c=7)

A.1

B.2

C.7

args和kwargs这个词是一个惯例,我们可以使用任何东西代替它们,但最好延用管理。

Q.14。编写Python逻辑来计算文件中的大写字母数。

>>> import os
>>> os.chdir('C:\\Users\\lifei\\Desktop')
>>> with open('Today.txt') as today:
    count=0
    for i in today.read():
        if i.isupper():
            count+=1
    print(count)

26

Q.15。什么是负的索引?

我们来看一个list吧。

>>> mylist=[0,1,2,3,4,5,6,7,8]

与正索引不同,负索引从右边开始搜索。

>>> mylist[-3]

6

这也有助于从后面切片:

>>> mylist[-6:-1]

[3,4,5,6,7]

Q.16。你如何本地(in-place)随机化列表的内容?

为此,我们将从random模块中导入函数 shuffle()。

>>> from random import shuffle
>>> shuffle(mylist)
>>> mylist

[3,4,8,0,5,7,6,2,1]

Q.17。用Python解释 join()和 split()。

join()允许我们通过我们指定的字符将字符串中的字符连接在一起。

>>> ','.join('12345')

“1,2,3,4,5”

split()允许我们在指定的字符周围分割一个字符串。

>>> '1,2,3,4,5'.split(',')

[‘1’,’2’,’3’,’4’,’5’]

问题18。Python是区分大小写(case-sensitive)吗?

如果语言区分myname和Myname之类的标识符,则语言为case-sensitive。换句话说,它关心小写或大写。让我们用Python尝试一下。

>>> myname='Ayushi'
>>> Myname

Traceback (most recent call last):

File “”, line 1, in

Myname

NameError: name ‘Myname’ is not defined

如您所见,这引发了NameError。这意味着Python确实是case-sensitive。

Q.19。在Python中标识符可以多长?

在Python中,标识符可以是任意长度。除此之外,我们必须遵循一些规则来命名一个:

  1. 它只能以A-Z或a-z中的字符或下划线开头。
  2. 其余部分可以包含以下内容:A-Z /a-z /_ /0-9。
  3. 正如我们在前一个问题中所讨论的那样,Python是区分大小写的(case-sensitive)。
  4. 关键字不能用作标识符。 Python有以下关键字:

| and | def | False | import | not | True |
| as | del | finally | in | or | try |
| assert | elif | for | is | pass | while |
| break | else | from | lambda | print | with |
| class | except | global | None | raise | yield |
| continue | exec | if | nonlocal | return |

问题20。你如何将字符串转换为小写?

我们使用 lower()方法。

>>> 'AyuShi'.lower()

“ayushi”

要将其转换为大写,我们使用 upper()。

>>> 'AyuShi'.upper()

“AYUSHI”

另外,要检查字符串是全部大写还是全部小写,我们使用方法 isupper()和 islower()。

>>> 'AyuShi'.isupper()

False

>>> 'AYUSHI'.isupper()

True

>>> 'ayushi'.islower()

True

>>> '@yu$hi'.islower()

True

>>> '@YU$HI'.isupper()

True

因此,像@和$这样的字符同时满足大小写判断。

此外, istitle()将告诉我们字符串是否属于标题情况。

>>> 'The Corpse Bride'.istitle()

True

Q.21。 Python中的pass语句是什么?

我们的代码中可能有时候还没有决定要做什么,但我们必须输入一些东西才能使它在语法上正确。在这种情况下,我们使用pass语句。

>>> def func(*args):
           pass 
>>>

同样,break终止循环。

>>> for i in range(7):
    if i==3: break
    print(i)

0

1

2

最后,continue语句跳到下一次迭代。

>>> for i in range(7):
    if i==3: continue
    print(i)

0

1

2

4

6

Q.22。什么是Python中的闭包?

当嵌套函数引用其封闭范围中的值时,会产生闭包。这里的重点是它记住了价值。

>>> def A(x):
        def B():
            print(x)
    return B
>>> A(7)()

7

有关闭包的更多深度解析,请参阅**Python中的闭包**。

Q.23。解释Python中的//,%和运算符。**

//运算符执行除法(floor division)。它将返回除法结果的整数部分。

>>> 7.0//2

3

普通除法将在这里返回3.5。

同样,**执行取幂。

>>> 2**10

1024

最后,%是模数。

>>> 13%7

6

>>> 3.5%1.5

0.5

问题24。什么是membership操作符?

通过操作符’in’和’not in’,我们可以确认某个值是否是另一个的成员。

>>> 'me' in 'disappointment'

真正

>>> 'us' not in 'disappointment'

真正

Q.25。在Python中解释identity运算符。

操作符’是’和’不’告诉我们两个值是否具有相同的身份。

>>> 10 is '10'

False

>>> True is not False

True

Q.26。Python除了10进制,还可以使用那些进制?

在Python中,可以用二进制,八进制和十六进制输入数字。

  1. 二进制数由0和1组成。要输入二进制,我们使用前缀0b或0B。
>>> int(0b1010)

10

要将数字转换为二进制形式,我们使用 bin()。

>>> bin(0xf)

“0b1111”

  1. 八进制数可以包含0到7之间的数字。我们使用前缀0o或0O。
>>> oct(8)

“0o10”

  1. 十六进制数字可以包含0到15之间的数字。我们使用前缀0x或0X。
>>> hex(16)

“为0x10”

>>> hex(15)

“0xf”

问题27。如何获得字典中所有键的列表?

使用函数 keys()。

>>> mydict={'a':1,'b':2,'c':3,'e':5}
>>> mydict.keys()

dict_keys([‘a’,’b’,’c’,’e’])

Q.28。带有前导下划线的标识符的意义?

由于Python没有私有变量的概念,因此使用前导下划线来声明变量private是一种惯例。这就是为什么我们不能对我们不想私有的变量这样做。

Q.29。如何在一个语句中声明多个赋值?

有两种方法可以做到这一点:

>>> a,b,c=3,4,5 #This assigns 3, 4, and 5 to a, b, and c respectively
>>> a=b=c=3 #This assigns 3 to a, b, and c

Q.30。什么是tuple unpacking?

这是一种将一组值打包成元组的方法。

>>> mytuple=3,4,5
>>> mytuple

(3,4,5)

这将3,4和5打包成mytuple。

现在,我们将元组中的值解包为变量x,y和z(tuple unpacking)。

>>> x,y,z=mytuple
>>> x+y+z

12

你可能感兴趣的:(python,pygame,爬虫,python,面试,开发语言)