新聞中心
函數(shù)可以訪(fǎng)問(wèn)其外部作用域中定義的任何名稱(chēng),并且可以修改該作用域中名稱(chēng)引用對(duì)象(如果它們是可變類(lèi)型)。
在學(xué)習(xí)編程的過(guò)程中,我們常常遇到一些復(fù)雜而又難以理解的概念。這就需要我們不斷地努力學(xué)習(xí),探索更深層次的知識(shí)。今天,我想跟大家分享一下我在參加2021春季CS61A實(shí)驗(yàn)六時(shí)所學(xué)到的內(nèi)容。

成都創(chuàng)新互聯(lián)公司成都企業(yè)網(wǎng)站建設(shè)服務(wù),提供成都網(wǎng)站設(shè)計(jì)、成都網(wǎng)站制作、外貿(mào)網(wǎng)站建設(shè)網(wǎng)站開(kāi)發(fā),網(wǎng)站定制,建網(wǎng)站,網(wǎng)站搭建,網(wǎng)站設(shè)計(jì),自適應(yīng)網(wǎng)站建設(shè),網(wǎng)頁(yè)設(shè)計(jì)師打造企業(yè)風(fēng)格網(wǎng)站,提供周到的售前咨詢(xún)和貼心的售后服務(wù)。歡迎咨詢(xún)做網(wǎng)站需要多少錢(qián):028-86922220
本次實(shí)驗(yàn)主要涉及四個(gè)方面的內(nèi)容:非局部變量、可變性、迭代器和生成器。下面我將分別從這四個(gè)方面進(jìn)行介紹。
首先是非局部變量。在Python中,函數(shù)可以訪(fǎng)問(wèn)其外部作用域中定義的任何名稱(chēng),并且可以修改該作用域中名稱(chēng)引用對(duì)象(如果它們是可變類(lèi)型)。這就是所謂的“閉包”機(jī)制。當(dāng)一個(gè)內(nèi)嵌函數(shù)引用了它外圍范圍內(nèi)定義了但不屬于它自己名字空間里沒(méi)有被聲明為全局名或者 局部名 的 變量 ,那么稱(chēng)這種情況為閉合式運(yùn)算(Closure),簡(jiǎn)稱(chēng)閉包(Closure) 。通過(guò)使用nonlocal關(guān)鍵字來(lái)指定一個(gè)標(biāo)識(shí)符應(yīng)該被重新綁定到其最近封閉作用域之一上,在Python 3.0中引入了對(duì)閉包的支持。
其次是可變性。在Python中,有些對(duì)象是可變的,比如列表和字典等容器類(lèi)型。而有一些對(duì)象則是不可變的,比如數(shù)字、字符串和元組等類(lèi)型。這就涉及到一個(gè)非常重要的概念——“淺拷貝”與“深拷貝”。淺拷貝只復(fù)制原始對(duì)象中存儲(chǔ)的引用,而不會(huì)創(chuàng)建新的對(duì)象;深拷貝則會(huì)遞歸地復(fù)制所有子對(duì)象,并創(chuàng)建全新的父級(jí)容器。
接下來(lái)是迭代器(Iterator)。簡(jiǎn)單來(lái)說(shuō),迭代器就是一種訪(fǎng)問(wèn)集合元素的方式??梢允褂胒or循環(huán)或者while循環(huán)進(jìn)行遍歷操作。在Python中,可以通過(guò)實(shí)現(xiàn)__iter__()方法和__next__()方法來(lái)自定義迭代器類(lèi)。
最后是生成器(Generator)。生成器本身也屬于迭代器類(lèi)型,在使用時(shí)具備惰性計(jì)算特點(diǎn)。即只有當(dāng)需要取值時(shí)才會(huì)被計(jì)算,并且每個(gè)值僅能被獲取一次。通過(guò)yield關(guān)鍵字將函數(shù)轉(zhuǎn)換為生成器函數(shù),在調(diào)用該函數(shù)時(shí)并不立即執(zhí)行其中語(yǔ)句塊內(nèi)代碼,而返回一個(gè)生成器作為結(jié)果。
總之,在學(xué)習(xí)編程過(guò)程中我們需要掌握各種各樣難以理解但卻非常重要的概念與技能。非局部變量、可變性、迭代器和生成器就是其中的一些重點(diǎn)內(nèi)容。希望大家可以通過(guò)本文學(xué)到更多關(guān)于Python編程語(yǔ)言的知識(shí),也希望大家在以后的學(xué)習(xí)中不斷探索,努力提升自己的技能水平!
當(dāng)前題目:2021春季CS61A實(shí)驗(yàn)六:非局部變量、可變性、迭代器和生成器
URL分享:http://m.fisionsoft.com.cn/article/djdhjgo.html


咨詢(xún)
建站咨詢(xún)
