对于新手来说,Python 中有哪些难以理解的概念?我似乎明白了
對于初學者,我們都遇到過難以理解一些概念。哪門都有哪些呢?
總結來說有:編碼問題、裝飾器、閉包、對象引用、可變性,抽象基類、魔術方法、多重繼承、mixin、重載、可迭代對象、迭代器和生成器、上下文管理、基于生成器的協程、原生協程、asyncio 異步編程、描述符協議、元編程等
Python 裝飾器
Python 裝飾器是在面試過程高頻被問到的問題,裝飾器也是一個非常好用的特性,熟練掌握裝飾器會讓你的編程思路更加寬廣,程序也更加 pythonic。
編碼問題
我們都知道,計算機要想工作必須通電,也就是說‘電’驅使計算機干活,而‘電’的特性,就是高低電平(高低平即二進制數1,低電平即二進制數0),也就是說計算機只認識數字(010101).如果我們想保存數據,首先得將我們的數據進行一些處理,最終得轉換成010101才能讓計算機識別。
所以必須經過一個過程:
字符--------(翻譯過程)------->數字
這個過程實際就是一個字符如何對應一個特定數字的標準,這個標準稱之為字符編碼。
函數閉包
函數閉包的概念在初學時容易迷糊,尤其涉及到閉包的作用域和參數問題
python有一個很有意思的地方,就是def函數可以嵌套在另一個def函數之中。調用外層函數時,運行到的內層def語句僅僅是完成對內層函數的定義,而不會去調用內層函數,除非在嵌套函數之后又顯式的對其進行調用。
x = 99 def f1():x = 88def f2():print(x)f2() f1() 88可以看出,f1中的嵌套變量x覆蓋了全局變量x=99,然后f2中的本地變量按照引用規則,就引用了x=88。
下面我們來說說嵌套作用域的一個特殊之處:
本地作用域在函數結束后就立即失效,而嵌套作用域在嵌套的函數返回后卻仍然有效。
def f1():x = 88def f2():print(x)return f2 action = f1() action() 88這個例子非常重要,也很有意思,函數f1中定義了函數f2,f2引用了f1嵌套作用域內的變量x,并且f1將函數f2作為返回對象進行返回。最值得注意的是我們通過變量action獲取了返回的f2,雖然此時f1函數已經退出結束了,但是f2仍然記住了f1嵌套作用域內的變量名x。
上面這種語言現象稱之為閉包:一個能記住嵌套作用域變量值的函數,盡管作用域已經不存在。
總結
以上是生活随笔為你收集整理的对于新手来说,Python 中有哪些难以理解的概念?我似乎明白了的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 对于初学者而言!如何处理 Python
- 下一篇: Python 实用技巧之正则表达式查找和