使用 Python對接快遞單號識別查詢api接口查詢物流信息
997
2025-03-31
寫python的同學應該都用過print函數,這個函數我們沒有定義為什么可以調用?
答案就是因為 print 是內建函數,python的內建函數式都是常用的工具函數,也是系統內置的函數,今天就說下內建函數,結合例子看下,廢話不多說,開始
1、什么是內建函數?
python內建函數指的是python自帶的函數,這種函數不需要定義,并且不同的內建函數具有不同的功能,可以直接使用。
#!/usr/bin/python2.6 # -*- coding: utf-8 -*- import builtins def test(): print("dsada") if __name__ == '__main__': # 增加內建函數 builtins.__dict__["testFunc"] = test testFunc() pass 復制代碼
2、內置的內建函數多有哪些?
官方的文檔說明鏈接:docs.python.org/3.9/library…
這里我截圖了函數,可以做一個概覽,看名字也能猜出這些函數都是做什么的
對上面的函數進行分組:
數學類:sum(),pow(),sum(),round()
隨機類:choice(),random(),seed(),shuffle(),uniform()
數字類:abs(),min(),max(),divmod(),ascii()
系統類:xxxattr,xxxmethod,
數據類型:set(),map(),tuple(),list(),bool(),int(),str(),
綜合類:其他的可以歸于此類
3、特殊函數說明
3.1 exec
格式:exec obj
obj對象可以是字符串(如單一語句、語句塊),文件對象,也可以是已經由compile預編譯過的代碼對象。
舉個例子
exec( "print('香菜')") 復制代碼
3.2 eval
格式:eval( obj[, globals=globals(), locals=locals()] )
obj可以是字符串對象或者已經由compile編譯過的代碼對象。globals和locals是可選的,分別代表了全局和局部名稱空間中的對象,其中globals必須是字典,而locals是任意的映射對象。
x = 3 print(eval('3*x')) 復制代碼
輸出結果是9 ,eval 可以引用上下文
3.3 compile
格式:compile( str, file, type )
compile語句是從type類型(包括’eval’: 配合eval使用,’single’: 配合單一語句的exec使用,’exec’: 配合多語句的exec使用)中將str里面的語句創建成代碼對象。file是代碼存放的地方,通常為”。
compile語句的目的是提供一次性的字節碼編譯,就不用在以后的每次調用中重新進行編譯了。
compile()函數將string編譯為代碼對象,編譯生成的代碼對象接下來被exec語句執行,接著能利用eval()函數對其進行求值。filename參數應是代碼從其中讀出的文件名。如果內部生成文件名,filename參數值應是相應的標識符。kind參數指定string參數中所含代碼的類別
3.4 globals和locals
globals()會以字典類型返回當前位置的全部全局變量。
locals()以字典類型返回當前位置的全部局部變量。
對于函數, 方法, lambda 函式, 類, 以及實現了 call 方法的類實例, 它都返回 True。
4、自己增加一個內置函數
在開發過程有些函數經常調用,但是每次都要導包什么的還挺麻煩的,就想著能不能把某幾個工具函數加入到內建函數,只要有問題,其他人就會有同樣的問題,其實解決的辦法很簡單,就是在builtins 中dict中添加函數就可以了,下面是個例子:
#!/usr/bin/env python # encoding: utf-8 """ #Author: 香菜 @time: 2021/10/10 0010 下午 10:22 """ import builtins def test(): print("dsada") if __name__ == '__main__': # 增加內建函數 builtins.__dict__["testFunc"] = test testFunc() pass 復制代碼
5、總結
python的內置函數并沒有什么特殊的,只不過是系統提供的一些工具方法,實現也都很簡單,記住這些常用的工具方法,在開發中一定可以事半功倍,
Python
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。