一.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可以定義新的...