???前言
以下我要講解的是Python中一些重要的內置函式,其中比較重要的會詳細講解,比較簡單的會直接結合代碼進行剖析
??一、globals()和locals()內置函式
基于字典的形式獲取區域變數和全域變數
- globals()——獲取全域變數的字典
- locals()——獲取執行本方法所在命名空間內的區域變數的字典
用一個栗子來了解:
z = 0 print('函式外部的區域變數是:',locals()) print('函式外部的全域變數是:',globals()) def main(): global m #定義了一個全域變數m,修改他的值會對全域產生影響 m = 9 print('函式main內部的區域變數是:',locals()) print('函式main內部的全域變數是:',globals()) def wahaha(): m = 10 print('函式wahaha內部的區域變數是:',locals()) print('函式wahaha內部的全域變數是:',globals()) main() wahaha()
輸出結果:
??二、len()和__len__()方法的異同
首先我們要知道有__len__()也叫做len的雙下方法
先看代碼:
lst = [1,2,3,4] print(lst.__len__()) print(len(lst)) 輸出結果: 4 4
從上面代碼可以看出他們的輸出結果是相同的,那么這兩種方法到底有什么區別呢?
其實使用len()函式后,函式內部會自動幫你呼叫__len__()方法,相當于
def len(要測量長度的資料): 要測量長度的資料.__len__()
那么我們常見的內置函式為什么不使用雙下方法,而是習慣用對應函式名加括號的方法呢?
原因很簡單那就是雙下方法太長了而且還不好寫
??三、range內置函式
range(10) range(1,11) #前開后閉 for i in range(1,11,2): #隔一個取一個值 print(i) #用下面方法可以證明range是一個可迭代的但不是一個迭代器 print('__next__' in dir(range(1,11,2))) 輸出結果: 1 3 5 7 9 False
??四、dir內置函式
python中的dir()函式dir() 函式不帶引數時,回傳當前范圍內的變數、方法和定義的型別串列;帶引數時,回傳引數的屬性、方法串列, 如果引數包含方法__dir__(),該方法將被呼叫,如果引數不包含__dir__(),該方法將最大限度地收集引數資訊,簡而言之dir可以告訴我們所傳入的資料型別(引數)所包含的所有內置使用方法
print(dir(list)) #告訴我串列擁有的所有方法 print(dir([1,2])) #告訴我串列擁有的所有方法 #上面的兩種方法雖然實參不同但函式回傳值相同
輸出結果:
['__add__', '__class__', '__contains__', '__delattr__', '__delitem__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__gt__', '__hash__', '__iadd__', '__imul__', '__init__', '__init_subclass__', '__iter__', '__le__', '__len__', '__lt__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__reversed__', '__rmul__', '__setattr__', '__setitem__', '__sizeof__', '__str__', '__subclasshook__', 'append', 'clear', 'copy', 'count', 'extend', 'index', 'insert', 'pop', 'remove', 'reverse', 'sort'] ['__add__', '__class__', '__contains__', '__delattr__', '__delitem__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__gt__', '__hash__', '__iadd__', '__imul__', '__init__', '__init_subclass__', '__iter__', '__le__', '__len__', '__lt__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__reversed__', '__rmul__', '__setattr__', '__setitem__', '__sizeof__', '__str__', '__subclasshook__', 'append', 'clear', 'copy', 'count', 'extend', 'index', 'insert', 'pop', 'remove', 'reverse', 'sort']
??五、callable內置函式
callable() 函式用于檢查一個物件是否是可呼叫(拿著這個變數名字后面加括號可以被呼叫)的,如果回傳 True,object 仍然可能呼叫失敗;但如果回傳 False,呼叫物件 object 絕對不會成功,
實體:
print(callable(print)) a = 1 print(callable(a)) print(callable(globals)) def func():pass print(callable(func)) 輸出結果: True False True True
??六、help內置函式
help() 函式用于查看函式或模塊用途的詳細說明,
例如:
#回傳與str相關的所有幫助 help(str)
輸出結果:
??七、import()內置函式
import() 函式用于動態加載類和函式 ,
如果一個模塊經常變化就可以使用 import() 來動態載入,
#import time time = __import__('time') #就等價于import time print(time.time()) 1657000816.799121
拓展:
某個方法屬于某個資料型別的變數就用 . 呼叫,如果某個方法不依賴于任何資料型別,就直接呼叫(比如內置函式 和 自定義函式)
??八、writable和readable內置函式
這兩個內置函式分別是判斷檔案是否是可寫的和可讀的
舉個栗子:
f = open('內置函式和匿名函式.py')#首先打開了一個檔案 print(f.writable()) print(f.readable()) f.close() 輸出結果: False True
??九、id和hash內置函式
id() 函式回傳物件的唯一識別符號,識別符號是一個整數,
Python 中 id() 函式用于獲取物件的記憶體地址,
a = '在下周周ovo' print(id(a)) #得到a變數的記憶體地址 輸出結果: 2381052638016
hash() 用于獲取取一個物件(字串或者數值等)的哈希值,
能夠執行hash函式而不報錯的就是可哈希(不可變資料型別)的反之就是不可哈希(可變資料型別)的,
重點: 對于可以相同的可hash的資料的hash值在程式沒結束的程序中總是不會改變的
print(hash(1234)) print(hash('dscds')) 輸出結果: 1234 3749030834196371593
??十、print內置函式的高階使用方法
- 描述
print() 方法用于列印輸出,最常見的一個函式,
在 Python3.3 版增加了 flush 關鍵字引數,
print 在 Python3.x 是一個函式,但在 Python2.x 版本不是一個函式,只是一個關鍵字,
- 語法
以下是 print() 方法的語法:
print(*objects, sep=' ', end='\n', file=sys.stdout, flush=False)
- 引數
- objects -- 復數,表示可以一次輸出多個物件,輸出多個物件時,需要用 , 分隔,
- sep -- 用來間隔多個物件,默認值是一個空格,
- end -- 用來設定以什么結尾,默認值是換行符 \n,我們可以換成其他字串,
- file -- 要寫入的檔案物件,
- flush -- 輸出是否被快取通常決定于 file,但如果 flush 關鍵字引數為 True,流會被強制重繪,
print('在下周周') print('在下周周',end='')#若未指定結尾,則print默認以\n(換行符)結尾 print('在下周周') print(1,2,3,4,5) print(1,2,3,4,5,sep='|')#指定以|為分隔符 f = open('print輸出位置的檔案','w',encoding='utf8') print('輸出結果在這',file=f) #如果不指定默認是列印到螢屏 f.close()
輸出結果:
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/536091.html
標籤:其他
上一篇:【深入淺出 Yarn 架構與實作】3-3 Yarn Application Master 撰寫
下一篇:JSP的頁面結構學習筆記
