Django Web開發技術棧清單-Python基礎篇

問題答案由本人整理html


1.基礎語法是否熟悉?介紹一下

Python和其餘語言最大的區別就是使用行和縮進,而不是大括號({})或者分號(;)來控制類、函數或者邏輯判斷。Python使用換行來表示語句的結束。但同時能夠用左斜槓()將一行語句分紅多行。Python 使用單引號(')、雙引號(")和三引號('''或""")來表示字符串。其中單引號和雙引號的區別不大,字符串中含有單引號或者雙引號時需用轉義符號()或雙引號及單引號包裹便可。三引號則支持字符串換行。python

2.有哪些關鍵字?解釋其做用

Python中的關鍵字能夠在Python交互模式中輸入下面代碼查看:算法

import keyword
keyword.kwlist
  • False 表示布爾類型中的假
  • None
  • True
  • and 表示邏輯 ’與‘
  • as 用於類型轉換
  • assert 斷言,用於判斷變量或者條件表達式的值是否爲真
  • async
  • await
  • break 用於停止循環,brea後的語句不會執行,跳出分支或者循環
  • class 用於建立類
  • continue 用於繼續下一次循環
  • def 用於定義函數或方法
  • del 用於list列表操做,刪除一個或多個元素
  • elif 用於定義if中的其餘分支的操做
  • else 用於定義if語句中全部條件都不知足時執行的操做
  • except except包含捕獲異常後的操做代碼塊,與try,finally結合使用
  • finally 用於異常語句,出現異常後,始終要執行finally,包含的代碼塊,與try,except結合使用
  • for 用於for循環語句
  • from 導入模塊 用 import ... 或from ... import
  • fwrom
  • global 用於聲明全局變量
  • if 用於if語句
  • import 用於導入模塊
  • in 用於判斷變量是否在序列中
  • is 用於判斷兩個對象是否時同一對象
  • lambda 定義匿名變量
  • nonlocal
  • not 表示邏輯’非‘
  • or 表示邏輯’或‘
  • pass 空的類、方法和函數的佔位符。
  • raise 用於異常拋出操做
  • return 用於函數的返回值
  • try 用與捕捉異常
  • while 用於控制循環,容許重複執行一個代碼塊
  • with 用於簡化python中的語法 https://zhuanlan.zhihu.com/p/...
  • yield 用於函數依此返回函數值 https://zhuanlan.zhihu.com/p/...

3. 有哪些內置方法?解釋其做用

  • abs(x) # 返回x的絕對值
  • all(x) # x列表或可迭代數據所有爲真才爲真(非0即爲真)
  • any(x) # x列表或可迭代數據有一個爲真即爲真
  • ascii(x) # 和repr()同樣把x對象轉換成ascii字符串對象打印出來
  • bin(x) # 把十進制轉換爲二進制
  • bool(x) # 判斷x是否爲真(非空即爲真)
  • bytes() # 把字符轉換成字節,使用時必須加上編碼如 a=bytes('abcde', encoding='utf-8')字符串不可被修改,因此二進制的字節也是不可被修改,如被切換或替換隻是生成了一個新串,原始字符串不會被修改。
  • bytearray() # 可修改的二進制字節格式,它時以array方式進行修改
  • callable(x) # 判斷對象是否可被調用
  • chr(x) # 返回ascii碼對應的字符
  • ord(x) # 返回字對應的ascii碼
  • compible() # 將字符串轉化爲代碼進行執行
  • dict() # 字典
  • dir() # 查看參數有什麼方法可用
  • divmode(x,y) # 除完返回商和餘數的元組
  • eval() # 把字符串變字典,也可把簡單的數學算法進行計算,若像斐波那契那樣的算法就須要採用exec()方法
  • exec()
  • filter() # 用於數據過濾
  • lambda() # 匿名函數,lambda 只能處理簡單的數學公式,最複雜只能到三元運算
  • map() # 對傳入的每一個值進行處理,再把原來的結果覆蓋掉
  • reduce() # 在Python2中能夠直接使用reduce,在Python3中須要引用functools
  • reduce() 函數會對參數序列中元素進行累積。函數將一個數據集合(鏈表,元組等)中的全部數據進行下列操做:用傳給 reduce 中的函數 function(有兩個參數)先對集合中的第 一、2 個元素進行操做,獲得的結果再與第三個數據用 function 函數運算,最後獲得一個結果。
  • set() # 集合set()函數建立一個無序不重複元素集,可進行關係測試,刪除重複數據,還能夠計算交集、差集、並集等。
  • frozenset() # 不可變的集合
  • globals() # globals()函數會以字典類型返回當前位置的所有全局變量。
  • hash() #hash()用於獲取取一個對象(字符串或者數值等)的哈希值。
  • hex() # 用於將10進制整數轉換成16進制,以字符串形式表示。
  • locals(x) # locals() 函數會以字典類型返回當前位置的所有局部變量。對於函數, 方法, lambda 函式, 類, 以及實現了 call 方法的類實例, 它都返回 True。
  • max() # 返回字符串中最大的字母,或數組中的最大值。
  • min() # 返回字符串中最小的字母,或數組中的最小值。
  • object() # 在Python中一切皆爲對象
  • oct() # 將一個數字轉化爲八進制
  • pow(x,y) # 返回x的y次方 的值。
  • reversed(seq) # 返回一個反轉的迭代器。
  • round() # 返回浮點數x的四捨五入值。
  • sorted() # 對全部可迭代的對象進行排序操做。

4.解釋一下什麼是動態語言?動態強類型是指什麼?

動態語言是一類在運行時能夠改變其結構的語言:好比新的函數、對象、甚至代碼均可以被引進,已有的函數能夠被刪除或是其餘結構上的變化,
動態強類型要分紅兩部分理解,一部分是動態類型,另外一部分就是強類型。
動態類型語言就是在運行時,肯定類型的語言。即編譯時月類型無關。通常在變量使用以前不須要聲明變量類型,而變量的類型一般是有被賦值的值的類型決定。
強類型語言就是強制類型定義的語言。也就是說,一旦一個白能量被指定了某個數據類型,若是不通過強制轉換,那麼它就永遠是這個數據類型了。
強類型定義語言是類型安全的語言。編程

5.是否有編碼規範的概念?採用的是那種編碼規範

我理解的代碼規範就是相似操做指南,最簡單的就是變量的命名方式。對於我的來講使用好的編碼規範能夠提升本身代碼的可讀性。對於團隊而言能夠提升團隊合做的效率、下降維護成本。
Python 中最有名的編碼規範就是PEP 8-Python
Python PEP-8編碼風格指南中文版segmentfault

6.解釋一下深拷貝和淺拷貝

深拷貝須要導入copy模塊,使用deepcopy()數組

b = copy.deepcopy(a)

a和b徹底拷貝了父對象和及其子對象,二者是徹底獨立的緩存

淺拷貝使用copy安全

b = a.copy()

a和b 是獨立的對象,但他們的子對象仍是指向同一對象(至關於引用)服務器

7.lambda的用法及其做用

下面是一個lambda的例子:多線程

g = lambda x:x+1

lamdba 定義了一個匿名函數,例子中的x爲入口參數, x+1爲函數體。若是用函數表示的話 :

def g(x):
    return x+1

lamdba 簡化了函數定義的書寫形式。lamdba的做用就是減小了單行函數的定義。

8.解釋一下閉包及其做用

在計算機科學中,閉包(Closure)是詞法閉包(Lexical Closure)的簡稱,是引用了自由變量的函數。這個被引用的自由變量將和這個函數一同存在,即便已經離開了創造它的環境也不例外。

閉包的做用就是有一些功能須要重用但不足以定義爲類的行爲就可使用閉包。閉包會比類佔用更少的資源。裝飾器就是閉包的一個應用,除此以外閉包還能夠用於封裝。

9.實現一個簡單的裝飾器,用來對某個函數的結果進行緩存

import functools
import time


CACHE = {}


def cache_it(func):
    @functools.wraps(func)
    def inner(*args, **kwargs):
        key = repr(*args, **kwargs)
        try:
            result = CACHE[key]
        except KeyError:
            resuslt = func(*args, **kwargs)
            CAHE[key] = result
        return result
    return inner
 

import functools import time CACHE = {} def cache_it(func): @functools.wraps(func) def inner(*args, **kwargs): key = repr(*args, **kwargs) try: result = CACHE[key] except KeyError: resuslt = func(*args, **kwargs) CAHE[key] = result return result return inner

10.Python中集中容器類型的差異及使用場景有哪些?

11.列表推導式的使用和場景有哪些?

12.介紹一下yield的用法

13.常見的內置庫有哪些?具體說明它們的用法

14.介紹一下你瞭解的 magic method (魔術方法)及其做用

15.解釋一下面向對象的概念及其在編程中的做用

16.如何實現單例模式?

17.如何對python對象進行序列化?

18.是否可以熟練編寫多線程和多進程程序?

19.使用socke編寫一個簡單的HTTP服務器,成功返回success便可

20.如何理解Python中的GIL?這對咱們的平常開發有什麼影響?

21.解釋一下協程、線程和進程之間的差異

引用來源:

https://segmentfault.com/a/11...

https://foofish.net/python-cl...

https://www.cnblogs.com/eveni...

https://kdboy.iteye.com/blog/...

http://www.voidcn.com/article...

https://blog.csdn.net/zxr1570...

python關鍵字詳解 - 削微寒 - 博客園

Python3 基礎語法 | 菜鳥教程

相關文章
相關標籤/搜索