(面接問題)python面接問題集錦-付解答

8175 ワード

1、1行のコードは1-100の和を実現する
sum_1_100 = sum(range(1, 101))
print(sum_1_100)  # 5050

2、1つの関数内でグローバル変数の値を修正する方法
a = 100
def foo():
    global a
    a = 300

foo()
print(a)  # 300

3、辞書はどのようにキーを削除して2つの辞書を合併します
d1 = {"name": "wj", "age": 22}
d2 = {"male": "famle"}

#    
del d1["name"]
print(d1)  # {'age': 22}

#     
d1.update(d2)
print(d1)  # {'age': 22, 'male': 'famle'}

4、pythonのGILに対する理解を話す
GILはpythonのグローバルインタプリタロックであり、1つのプロセスで複数のスレッドが実行され、そのうちの1つのスレッドが実行されるとpythonインタプリタ(ロック付きGIL)を占領し、他のスレッドは実行できなくなり、そのスレッドのロック解除を待つ必要があり、スレッドが時間のかかる操作(IO操作)に遭遇すると、インタプリタロックは自動的に解除され、他のスレッドは実行を続行します.したがってpythonのマルチスレッドは同時に実行されるのではなく,前後順である.
マルチプロセスは、各プロセスにpython解釈器が1つあることに相当するので、マルチプロセスは複数のタスクを同時に実行することができ、欠点はプロセスのリソースオーバーヘッドが大きいことです.
5、リスト内の要素の重量除去を実現する
lst = [11, 12, 11, 13, 14, 13]

#    set,set        
a = set(lst)
print(a)  # {11, 12, 13, 14}

#    list  
lst = [x for x in a]
print(lst)  # [11, 12, 13, 14]

6、python 2とpython 3のrange関数の違い
python 2ではrangeがリストを返し、python 3ではrangeが反復器を返し、リスト反復器よりもメモリを節約します.
7、どんな言葉がデコレーションできるか一言で説明する
関数はパラメータ伝達言語として使用でき、装飾器を使用できます.
8、オブジェクト向けの簡単な説明new__および_init__方法の違い
  __init__メソッドは、インスタンス化時にパラメータ呼び出しを初期化します.このメソッドには、パラメータselfというパラメータがあり、インスタンスオブジェクト自体を指します.このメソッドには、パラメータを初期化するための戻り値はありません.
  __new__方法は__init__メソッドは以前に呼び出され、パラメータclsがあり、現在のクラスを指し、戻り値があり、インスタンス化されたインスタンスを返します.
class A:
    def __init__(self):
        print("  init  ", self)

    def __new__(cls, *args, **kwargs):
        print("cls ID:{}".format(id(cls)))
        print("  new  ", object.__new__(cls))
        return object.__new__(cls)

A()
print(" A id:{}".format(id(A)))


clsのID:63580721832これはnewメソッド<_main__.a object=""at=">これはinitメソッド<"main__.a object=""at=">クラスAのid:63580721832
9、リスト[1,2,3,4,5]map関数を用いて[1,4,9,16,25]を出力し、リスト導出式を用いて10より大きい数を抽出する
a = [1, 2, 3, 4, 5]
b = map(lambda x:x**2, a)

c = [x for x in b if x>10]
print(c)  # [16, 25]

10、pythonでランダム整数、ランダム小数、0-1間の小数を生成する方法
ランダム整数:random.randint(a,b)は、区間内の整数をランダムに生成する
ランダム小数:numpyライブラリ、npを使用します.random.randn(n)、n個のランダム小数を生成する
0-1ランダム小数:random.random()は、括弧ではパラメータを伝達しません
import random
import numpy


print(random.randint(1, 10))  # 1-10    
print(numpy.random.randn(5))  #     5   
print(random.random())  #     0-1   

11、中国、ラベルの中の内容(「中国」)を正則でマッチングし、classの類名は不確定である
import re

str = '
' ret = re.findall(r'
(.*?)
', str) print(ret) # [' ']

12、pythonでの断言方法の例
assertメソッド,断言に成功するとプログラムは実行を継続し,断言に失敗するとエラーを報告する
a = 3
assert (a>1)
print("")

assert (a<1)  # # AssertionError
print("")

 
転載先:https://www.cnblogs.com/Sweltering/p/9947533.html