python學習第11天

2022-07-26 21:36:11 字數 2251 閱讀 6639

一.locals 和 globals函式

1.locals函式:獲取當前作用域中的所有內容

locals如果在函式外面,呼叫locals(),獲取的是列印之前的所有變數,返回字典,是全域性空間作用域

locals如果在函式裡面,呼叫locals(),獲取的是呼叫之前的所有變數,返回字典,是區域性空間作用域

2.globals函式:獲取全域性作用域的所有內容

globals如果在函式外部,呼叫globals(),獲取的是列印之前的所有變數,返回字典,全域性空間作用域

globals如果在函式內部,呼叫globals(),獲取的是呼叫之前的所有變數,返回字典,全域性空間作用域

3.globals返回的是系統的字典

(1)正常方式定義變數

yunchao="666"

(2)通過系統的全域性字典新增鍵值對,可以動態建立全域性變數

dic = globals()

print(dic)

k="yunchao"

dic[k]="帥氣的大帥哥"

print(yunchao)

(3)在函式中,批量建立全域性變數

def  func():

dic=globals()

for i in range(1,6):

dic["p%d" % (i)] = i

func()

print(p1)

print(p2)

print(p3)

print(p4)

print(p5)

二.函式的巢狀

1.巢狀在函式外邊的叫做外函式

巢狀在函式裡面的叫做內函式

注意:1)內部函式可以直接在函式外部呼叫麼?  不可以

2)呼叫外部函式後,內部函式可以在函式外部呼叫麼?  不可以

3)內部函式可以在函式內部呼叫麼?  可以

4)內部函式在函式內部呼叫時,是否有先後順序?  有(必須先定義在呼叫)

2. legb原則(即就近找變數原則)

找尋變數的呼叫順序採用legb原則(即就近原則)

b —— builtin(python);python內建模組的命名空間      (內建作用域)

g —— global(module); 函式外部所在的命名空間        (全域性作用域)

e —— enclosing function locals;外部巢狀函式的作用域(巢狀作用域)

l —— local(function);當前函式內的作用域            (區域性作用域)

依據就近原則,從下往上 從裡向外 依次尋找

3. nonlocal 關鍵字(用來修改區域性變數)

nonlocal遵循 legb原則

1)nonlocal專門用來修改當前作用域上一級的區域性變數

2)如果上一級找不到,那麼繼續向上尋找

3)全都找不到,則直接報錯

4)不使用nonlocal,也可以修改區域性變數,可以使用列表的形式,通過索引來修改區域性變數

三.閉包函式

1.定義:

1)內部函式使用外函式的區域性變數

2)外函式將內函式返回出來的過程,叫做閉包

3)裡面的內函式叫做閉包函式

獲取閉包函式使用的變數 用__closure__ (元組形式),__cell__contents(獲取單元格物件裡面的內容)

2.閉包的特點

內函式使用了外函式的區域性變數,該區域性變數與內函式發生了繫結,延長該變數的生命週期

3.閉包的意義

閉包可以優先使用外函式的區域性變數

區域性變數在函式外部不能被直接使用

對區域性變數實現了保護的作用,外部無法訪問

4.匿名函式(lambda 表示式)

1)定義:用一句話來表達只有返回值的函式

2)特點:簡潔,高效,方便

3)語法結構

lambda  引數:返回值

1,無參的lambda表示式

func = lambda  : "我是個大帥哥"

2,有參的lambda表示式

func = lambda  n  : type(n)

3,帶有判斷條件的lambda表示式

三目運算子

真值 if  條件表示式 else  假值

如果條件表示式成立,為真,返回真值

如果條件表示式不成立,為假,返回假值

func = lambda n : "偶數"   if  n  % 2 ==0 else  "奇數"

python基礎知識學習第11天

1.findall函式 import re s 123abc456eabc789 re.findall r abc s 結果 abc abc 返回結果是乙個列表,中間存放的是符合規則的字串,如果沒有符合規則的字串被找到,就返回乙個空列表。2.compile函式 s 111,222,aaa,bbb,c...

python自學第11天爬蟲例項學習

測試返回200 下面展示一些內聯 片。import requests r requests.get url if r.status code 200 raise exception 返回200則進行下一步爬取url import requests r requests.get url if r.st...

java學習筆記 第11天

建立視窗之後無法關閉 ctrl alt delete 直接殺程序 xml extensible markuplanguage xml 描述事物本身 xsl 事物的表現形式 dtd schema 定義xml的語法 與html的區別 更有利於資料的描述,交換 html不具有擴充套件性,xml可以定義新的...