python助教的面试题_六个Python经典面试题(附详解)
1. 列表(list)和元組(tuple)有什么區別?
在我每一次應聘Python數據科學家的面試中,這個問題都會被問到。所以對這個問題的答案,我可以說是了如指掌。列表是可變的。創建后可以對其進行修改。元組是不可變的。元組一旦創建,就不能對其進行更改。
列表表示的是順序。它們是有序序列,通常是同一類型的對象。比如說按創建日期排序的所有用戶名,如["Seth",
"Ema", "Eli"]。
元組表示的是結構。可以用來存儲不同數據類型的元素。比如內存中的數據庫記錄,如(2, "Ema",
"2020–04–16")(#id, 名稱,創建日期)。
2. 如何進行字符串插值?
在不導入Template類的情況下,有3種方法進行字符串插值。
name = 'Chris'
# 1. f stringsprint(f'Hello {name}')
# 2. % operatorprint('Hey %s %s' % (name,
ame))
# 3. format
print(
"My name is {}".format((name)))
3. “is”和“==”有什么區別?
在我的Python職業生涯的早期,我認為它們是相同的,因而制造了一些bug。所以請大家聽好了,“is”用來檢查對象的標識(id),而“==”用來檢查兩個對象是否相等。我們將通過一個例子說明。創建一些列表并將其分配給不同的名字。請注意,下面的b指向與a相同的對象。
a = [1,2,3]
b = a
c = [1,2,3]
下面來檢查是否相等,你會注意到結果顯示它們都是相等的。
print(a == b)
print(a == c)
#=> True
#=> True
但是它們具有相同的標識(id)嗎?答案是不。
print(a is b)
print(a is c)
#=> True
#=> False
我們可以通過打印他們的對象標識(id)來驗證這一點。
print(id(a))
print(id(b))
print(id(c))
#=> 4369567560
#=> 4369567560
#=> 4369567624
你可以看到:c和a和b具有不同的標識(id)。
4. 什么是裝飾器(decorator)?
這是每次面試我都會被問到的另一個問題。它本身就值得寫一篇文章。如果你能自己用它編寫一個例子,那么說明你已經做好了準備。
裝飾器允許通過將現有函數傳遞給裝飾器,從而向現有函數添加一些額外的功能,該裝飾器將執行現有函數的功能和添加的額外功能。
我們將編寫一個裝飾器,該裝飾器會在調用另一個函數時記錄日志。
編寫裝飾器函數logging。它接受一個函數func作為參數。它還定義了一個名為log_function_called的函數,它先執行打印出一些“函數func被調用”的信息(print(f'{func} called.')),然后調用函數func()。最后返回定義的函數。
def logging(func):
def log_function_called():
print(f'{func} called.')
func()
return log_function_called
讓我們編寫其他兩個函數,我們最終會將裝飾器添加到其中(但還沒有)。
def my_name():
print('chris')def friends_name():
print('naruto')my_name()
friends_name()
#=> chris
#=> naruto
現在將裝飾器添加到上面編寫的兩個函數之中。
@logging
def my_name():
print('chris')@logging
def friends_name():
print('naruto')my_name()
friends_name()
#=>
called.
#=> chris
#=>
called.
#=> naruto
現在,你了解了如何僅僅通過在其上面添加@logging(裝飾器),就能夠輕松地將日志添加到我們編寫的任何函數中。
5. 解釋Range函數
Range函數可以用來創建一個整數列表,一般用在for循環中。它有3種使用方法。
Range函數可以接受1到3個參數,參數必須是整數。
請注意:我已經將range的每種用法包裝在一個遞推式構造列表(list comprehension)中,以便我們可以看到生成的值。
用法1 - range(stop):生成從0到參數“stop”之間的整數。
[i for i in range(10)]
#=> [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
用法2 - range(start, stop) : 生成從參數“start”到“stop”之間的整數
[i for i in range(2,10)]
#=> [2, 3, 4, 5, 6, 7, 8, 9]
用法3 - range(start, stop, step):以參數“step”為步長,生成從“start”到“stop”之間的整數。
[i for i in range(2,10,2)]
#=> [2, 4, 6, 8]
6.
定義一個名為car的類,它有兩個屬性:“color”和“speed”。然后創建一個實例并返回“speed”。
class Car :
def __init__(self, color, speed):
self.color = color
self.speed = speedcar = Car('red','100mph')
car.speed
#=> '100mph'
總結
以上是生活随笔為你收集整理的python助教的面试题_六个Python经典面试题(附详解)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python标记跳转_Geany的跳转到
- 下一篇: 双向卷积神经网络_一个用于精细动作检测的