(Umfassende) Zusammenfassung klassischer Beispiele für Python-Interviewfragen

Freigeben: 2020-09-03 15:32:39
nach vorne
5194 Leute haben es durchsucht

(Umfassende) Zusammenfassung klassischer Beispiele für Python-Interviewfragen

Der Inhalt dieses Artikels ist eine Zusammenfassung klassischer Beispiele für (umfassende) Python-Interviewfragen. Ich hoffe, dass er für Freunde in Not hilfreich ist Du hast geholfen.

Empfohlene verwandte Artikel : „ Zusammenfassung der Python-Interviewfragen im Jahr 2020 (aktuell)

1. Wie implementiert man den Singleton-Modus in Python?

Python bietet zwei Möglichkeiten, den Singleton-Modus zu implementieren. Die folgenden zwei Beispiele verwenden unterschiedliche Möglichkeiten, den Singleton-Modus zu implementieren:

1,

class Singleton(type):
def __init__(cls, name, bases, dict):
super(Singleton, cls).__init__(name, bases, dict)
cls.instance = None
def __call__(cls, *args, **kw):
if cls.instance is None:
cls.instance = super(Singleton, cls).__call__(*args, **kw)
return cls.instance
class MyClass(object):
__metaclass__ = Singleton
print MyClass()
print MyClass()
Nach dem Login kopieren

Verwenden Sie Decorator, um den Singleton-Modus zu implementieren

def singleton(cls):
instances = {}
def getinstance():
if cls not in instances:
instances[cls] = cls()
return instances[cls]
return getinstance
@singleton
class MyClass:
…
Nach dem Login kopieren

2: Was ist eine Lambda-Funktion?

Mit Python können Sie eine kleine einzeilige Funktion definieren. Die Form der Definition der Lambda-Funktion lautet wie folgt: labmda-Parameter: Ausdruck Die Lambda-Funktion gibt standardmäßig den Wert des Ausdrucks zurück. Sie können es auch einer Variablen zuweisen. Die Lambda-Funktion kann eine beliebige Anzahl von Parametern akzeptieren, einschließlich optionaler Parameter, es gibt jedoch nur einen Ausdruck:

>>> g = lambda x, y: x*y
>>> g(3,4)
12
>>> g = lambda x, y=0, z=0: x+y+z
>>> g(1)
1
>>> g(3, 4, 7)
14
Nach dem Login kopieren

Sie können die Lambda-Funktion auch direkt verwenden, ohne sie einer Variablen zuzuweisen:

>>> (lambda x,y=0,z=0:x+y+z)(3,5,6)
14
Nach dem Login kopieren

Wenn Ihre Funktion sehr einfach ist und nur einen Ausdruck und keine Befehle enthält, können Sie die Lambda-Funktion in Betracht ziehen. Andernfalls definieren Sie besser eine Funktion. Schließlich unterliegen Funktionen nicht so vielen Einschränkungen.

3: Wie führt Python eine Typkonvertierung durch?

Python bietet integrierte Funktionen zum Konvertieren von Variablen oder Werten von einem Typ in einen anderen. Die int-Funktion kann eine mathematisch formatierte numerische Zeichenfolge in eine Ganzzahl umwandeln. Andernfalls wird eine Fehlermeldung zurückgegeben.

>>> int(”34″)
34
>>> int(”1234ab”) #不能转换成整数
ValueError: invalid literal for int(): 1234ab
Nach dem Login kopieren

Die int-Funktion kann auch Gleitkommazahlen in ganze Zahlen umwandeln, allerdings wird der Dezimalteil der Gleitkommazahl abgeschnitten.

>>> int(34.1234)
34
>>> int(-2.46)
-2
Nach dem Login kopieren

Funktion °oat konvertiert Ganzzahlen und Zeichenfolgen in Gleitkommazahlen:

>>> float(”12″)
12.0
>>> float(”1.111111″)
1.111111
Nach dem Login kopieren

Funktion str konvertiert Zahlen in Zeichen:

>>> str(98)
‘98′
>>> str(”76.765″)
‘76.765′
Nach dem Login kopieren

Integer 1 und Float 1.0 in Python sind unterschiedlich. Obwohl ihre Werte gleich sind, sind sie unterschiedlicher Art. Auch das Speicherformat dieser beiden Zahlen im Computer ist unterschiedlich.

4: So definieren Sie eine Funktion in Python

Die Funktion ist wie folgt definiert:

def <name>(arg1, arg2,… argN):
<statements>
Nach dem Login kopieren

Der Name der Funktion muss außerdem mit beginnen ein Buchstabe und kann Unterstriche „ “ enthalten, aber Python-Schlüsselwörter können nicht als Funktionsnamen definiert werden. Die Anzahl der Anweisungen innerhalb einer Funktion ist beliebig und jede Anweisung muss um mindestens ein Leerzeichen eingerückt werden, um anzuzeigen, dass die Anweisung zu dieser Funktion gehört. Wo die Einrückung endet, endet die Funktion natürlich.
Im Folgenden wird eine Funktion definiert, die zwei Zahlen hinzufügt:

>>> def add(p1, p2):
print p1, “+”, p2, “=”, p1+p2
>>> add(1, 2)
1 + 2 = 3
Nach dem Login kopieren

Der Zweck der Funktion besteht darin, einige komplexe Operationen auszublenden, um die Struktur des Programms zu vereinfachen und es leichter lesbar zu machen. Funktionen müssen definiert werden, bevor sie aufgerufen werden können. Sie können eine Funktion auch innerhalb einer Funktion definieren, und die interne Funktion kann nur ausgeführt werden, wenn die externe Funktion aufgerufen wird. Wenn das Programm eine Funktion aufruft, geht es zum Inneren der Funktion, um die darin enthaltenen Anweisungen auszuführen. Nachdem die Funktion ausgeführt wurde, kehrt es an die Stelle zurück, an der es das Programm verlassen hat, und führt die nächste Anweisung des Programms aus.

5: Wie verwaltet Python den Speicher?

Die Speicherverwaltung von Python wird vom Python-Interpreter übernommen. Entwickler können sich auf die Anwendungsentwicklung konzentrieren, was zu weniger Programmfehlern führt Zyklus ist kürzer

6: Wie iteriere ich eine Sequenz in umgekehrter Reihenfolge?

Wie iteriere ich über eine Sequenz in umgekehrter Reihenfolge?

Wenn es eine Liste ist, ist die schnellste Lösung:

list.reverse()
try:
for x in list:
“do something with x”
finally:
list.reverse()
Nach dem Login kopieren

Wenn es keine Liste ist, Die vielseitigste, aber etwas langsamere Lösung ist:

for i in range(len(sequence)-1, -1, -1):
x = sequence[i]
<do something with x>
Nach dem Login kopieren

7: Wie konvertiere ich Tupel und Listen in Python?

Die Funktion tuple(seq) kann alle iterierbaren (iterierbaren) Sequenzen in ein Tupel umwandeln, die Elemente und die Reihenfolge bleiben unverändert.
Zum Beispiel gibt tuple([1,2,3]) (1,2,3) zurück, tuple('abc') gibt ('a'.'b','c') zurück bereits a Bei Tupeln gibt die Funktion das Originalobjekt direkt zurück, ohne eine Kopie zu erstellen. Daher ist es nicht sehr teuer, die Funktion tuple() aufzurufen, wenn Sie nicht sicher sind, ob das Objekt ein Tupel ist.
Die Funktion list(seq) kann alle Sequenzen und iterierbaren Objekte in eine Liste umwandeln, wobei die Elemente und die Sortierung unverändert bleiben.
Zum Beispiel gibt list([1,2,3]) (1,2,3) zurück, list('abc') gibt ['a', 'b', 'c'] zurück. Wenn der Parameter eine Liste ist, erstellt sie eine Kopie wie set[:]

8: Python-Interviewfrage: Bitte schreiben Sie einen Python-Code, um doppelte Elemente in einer Liste zu löschen

Sie können die Liste zuerst neu anordnen und dann mit dem Scannen am Ende der Liste beginnen. Der Code lautet wie folgt:

if List:
List.sort()
last = List[-1]
for i in range(len(List)-2, -1, -1):
if last==List[i]: del List[i]
else: last=List[i]
Nach dem Login kopieren

9: Fragen zum Python-Dateioperationsinterview

Wie lösche ich eine Datei mit Python?
Verwenden Sie os.remove(filename) oder os.unlink(filename);

Wie kopiere ich eine Datei in Python?
Das Shutil-Modul verfügt über eine Copyfile-Funktion, die Dateien kopieren kann

10: Wie generiert man Zufallszahlen in Python?

Die Standardbibliothek random implementiert einen Zufallszahlengenerator. Der Beispielcode lautet wie folgt:

import random
random.random()
Nach dem Login kopieren

Es wird eine zufällige Gleitkommazahl zwischen 0 und 1 zurückgegeben

11:如何用Python来发送邮件?

可以使用smtplib标准库。
以下代码可以在支持SMTP监听器的服务器上执行。

import sys, smtplib
fromaddr = raw_input(”From: “)
toaddrs = raw_input(”To: “).split(’,&#39;)
print “Enter message, end with ^D:”
msg = ”
while 1:
line = sys.stdin.readline()
if not line:
break
msg = msg + line
# 发送邮件部分
server = smtplib.SMTP(’localhost’)
server.sendmail(fromaddr, toaddrs, msg)
server.quit()
Nach dem Login kopieren

12:Python里面如何拷贝一个对象?

一般来说可以使用copy.copy()方法或者copy.deepcopy()方法,几乎所有的对象都可以被拷贝
一些对象可以更容易的拷贝,Dictionaries有一个copy方法:

newdict = olddict.copy()
Nach dem Login kopieren

13:有没有一个工具可以帮助查找python的bug和进行静态的代码分析?

有,PyChecker是一个python代码的静态分析工具,它可以帮助查找python代码的bug, 会对代码的复杂度和格式提出警告
Pylint是另外一个工具可以进行coding standard检查。

14:如何在一个function里面设置一个全局的变量?

解决方法是在function的开始插入一个global声明:

def f()
global x
Nach dem Login kopieren

15:用Python匹配HTML tag的时候,<.>和<.?>有什么区别?

当重复匹配一个正则表达式时候, 例如<.*>, 当程序执行匹配的时候,会返回最大的匹配值

例如:

import re
s = ‘<html><head><title>Title</title>’
print(re.match(’<.*>’, s).group())
Nach dem Login kopieren

会返回一个匹配而不是

import re
s = ‘<html><head><title>Title</title>’
print(re.match(’<.*?>’, s).group())
Nach dem Login kopieren

则会返回
<.>这种匹配称作贪心匹配 <.?>称作非贪心匹配

16:Python里面search()和match()的区别?

match()函数只检测RE是不是在string的开始位置匹配, search()会扫描整个string查找匹配, 也就是说match()只有在0位置匹配成功的话才有返回,如果不是开始位置匹配成功的话,match()就返回none
例如:

print(re.match(’super’, ’superstition’).span())
Nach dem Login kopieren

会返回(0, 5)

print(re.match(’super’, ‘insuperable’))
Nach dem Login kopieren

则返回None
search()会扫描整个字符串并返回第一个成功的匹配
例如:

print(re.search(’super’, ’superstition’).span())
Nach dem Login kopieren

返回(0, 5)

print(re.search(’super’, ‘insuperable’).span())
Nach dem Login kopieren

返回(2, 7)

17:如何用Python来进行查询和替换一个文本字符串?

可以使用sub()方法来进行查询和替换,sub方法的格式为:sub(replacement, string[, count=0])
replacement是被替换成的文本
string是需要被替换的文本
count是一个可选参数,指最大被替换的数量
例子:

import re
p = re.compile(’(blue|white|red)’)
print(p.sub(’colour’,&#39;blue socks and red shoes’))
print(p.sub(’colour’,&#39;blue socks and red shoes’, count=1))
Nach dem Login kopieren

输出:

colour socks and colour shoes
colour socks and red shoes
Nach dem Login kopieren

subn()方法执行的效果跟sub()一样,不过它会返回一个二维数组,包括替换后的新的字符串和总共替换的数量
例如:

import re
p = re.compile(’(blue|white|red)’)
print(p.subn(’colour’,&#39;blue socks and red shoes’))
print(p.subn(’colour’,&#39;blue socks and red shoes’, count=1))
Nach dem Login kopieren

输出

(’colour socks and colour shoes’, 2)
(’colour socks and red shoes’, 1)
Nach dem Login kopieren

18:介绍一下except的用法和作用?

Python的except用来捕获所有异常, 因为Python里面的每次错误都会抛出 一个异常,所以每个程序的错误都被当作一个运行时错误。
一下是使用except的一个例子:

try:
foo = opne(”file”) #open被错写为opne
except:
sys.exit(”could not open file!”)
Nach dem Login kopieren

因为这个错误是由于open被拼写成opne而造成的,然后被except捕获,所以debug程序的时候很容易不知道出了什么问题
下面这个例子更好点:

try:
foo = opne(”file”) # 这时候except只捕获IOError
except IOError:
sys.exit(”could not open file”)
Nach dem Login kopieren

19:Python中pass语句的作用是什么?

pass语句什么也不做,一般作为占位符或者创建占位程序,pass语句不会执行任何操作,比如:

while False:
pass
Nach dem Login kopieren

pass通常用来创建一个最简单的类:

class MyEmptyClass:
pass
Nach dem Login kopieren

pass在软件设计阶段也经常用来作为TODO,提醒实现相应的实现,比如:

def initlog(*args):
pass #please implement this
Nach dem Login kopieren

20:介绍一下Python下range()函数的用法?

如果需要迭代一个数字序列的话,可以使用range()函数,range()函数可以生成等差级数。
如例:

for i in range(5)
print(i)
Nach dem Login kopieren

这段代码将输出0, 1, 2, 3, 4五个数字
range(10)会产生10个值, 也可以让range()从另外一个数字开始,或者定义一个不同的增量,甚至是负数增量
range(5, 10)从5到9的五个数字
range(0, 10, 3) 增量为三, 包括0,3,6,9四个数字
range(-10, -100, -30) 增量为-30, 包括-10, -40, -70
可以一起使用range()和len()来迭代一个索引序列
例如:

a = [&#39;Nina&#39;, &#39;Jim&#39;, &#39;Rainman&#39;, &#39;Hello&#39;]
for i in range(len(a)):
    print(i, a[i])
Nach dem Login kopieren

21:有两个序列a,b,大小都为n,序列元素的值任意整形数,

无序;要求:通过交换a,b中的元素,使[序列a元素的和]与[序列b元素的和]之间的差最小。
将两序列合并为一个序列,并排序,为序列Source

拿出最大元素Big,次大的元素Small

在余下的序列S[:-2]进行平分,得到序列max,min

将Small加到max序列,将Big加大min序列,重新计算新序列和,和大的为max,小的为min。

Python代码

def mean( sorted_list ):
if not sorted_list:
return (([],[]))
big = sorted_list[-1]
small = sorted_list[-2]
big_list, small_list = mean(sorted_list[:-2])
big_list.append(small)
small_list.append(big)
big_list_sum = sum(big_list)
small_list_sum = sum(small_list)
if big_list_sum > small_list_sum:
return ( (big_list, small_list))
else:
return (( small_list, big_list))
tests = [   [1,2,3,4,5,6,700,800],
[10001,10000,100,90,50,1],
range(1, 11),
[12312, 12311, 232, 210, 30, 29, 3, 2, 1, 1]
]
for l in tests:
l.sort()
print
print “Source List:    ”, l
l1,l2 = mean(l)
print “Result List:    ”, l1, l2
print “Distance:    ”, abs(sum(l1)-sum(l2))
print ‘-*’*40
Nach dem Login kopieren

输出结果

Source List:    [1, 2, 3, 4, 5, 6, 700, 800]
Result List:    [1, 4, 5, 800] [2, 3, 6, 700]
Distance:       99
-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
Source List:    [1, 50, 90, 100, 10000, 10001]
Result List:    [50, 90, 10000] [1, 100, 10001]
Distance:       38
-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
Source List:    [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
Result List:    [2, 3, 6, 7, 10] [1, 4, 5, 8, 9]
Distance:       1
-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
Source List:    [1, 1, 2, 3, 29, 30, 210, 232, 12311, 12312]
Result List:    [1, 3, 29, 232, 12311] [1, 2, 30, 210, 12312]
Distance:       21
-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
Nach dem Login kopieren

相关学习推荐:python视频教程

Das obige ist der detaillierte Inhalt von(Umfassende) Zusammenfassung klassischer Beispiele für Python-Interviewfragen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:公众号python爬虫人工智能大数据
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage