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