內置函數

来源:https://www.cnblogs.com/ipython-201806/archive/2018/11/02/9897251.html
-Advertisement-
Play Games

1、作用域相關 locals() 功能:返回當作用域中的名字 globals() 功能:返回全局作用域中的名字 2、迭代器/生成器相關 range() 功能:生成數據 iter() 功能:獲取迭代器,內部實際使用的是__iter__()方法來獲取迭代器 next() 功能:迭代器向下執行一次,內部實 ...


 1、作用域相關

  • locals()

功能:返回當作用域中的名字

  • globals()

功能:返回全局作用域中的名字

2、迭代器/生成器相關

  • range()

功能:生成數據

lst = [i for i in range(10)]
print(lst)  # [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

 

  • iter()

功能:獲取迭代器,內部實際使用的是__iter__()方法來獲取迭代器

  • next()

功能:迭代器向下執行一次,內部實際使用了__next__()方法返回迭代器的下一個項目

lst = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

ret = iter(lst)  # 獲取迭代器

print(next(ret)) # 0   執行迭代器

3、字元串類型代碼的執行

  • eval()

功能:執行字元串類型的代碼。並返回最終結果

print(eval("[11, 22, 33, 44]"))  # [11, 22, 33, 44]

print(eval("2+2"))  # 4

def func():
    print(666)
eval("func()")  # 666
  • exec()

功能:執行字元串類型的代碼

exec("""
for i in range(10):
    print(i)
""")  # 0 1 2 3 4 5 6 7 8 9

exec("""
def func():
    print("我是賽利亞")

func()
""")  # 我是賽利亞
  • compile()

功能:將字元串類型的代碼編譯,有返回值的字元串形式代碼用eval()求值,沒有返回值的字元串形式代碼用exec()執行

參數說明:

1)resource:要執行的代碼,動態代碼片段

2)文件名:代碼存放的文件名,當傳入第一個參數的時候,這個參數給空就可以了

3)模式,取值有3個:

a) exec:一般放一些流程語句的時候

b) eval:resource只存放一個求值表達式

c) single:resource存放的代碼有交互的時候,mode應為single,但只允話代碼只有一行,否則報錯

code = """
for i in range(5):
    print(i)
"""
c1 = compile(code, "", mode="exec")
exec(c1)  # 0 1 2 3 4



code2 = """
name = input("請輸入你的名字:")
"""
c2 = compile(code2, "", mode="single")
exec(c2)
print(name) # Tom

 4、輸入輸出相關

  • input()

功能:獲取用戶輸入的內容

  • print()

功能:列印輸出

5、記憶體相關

  • hash()

功能:獲取對象的哈希值(int,bool,str,tuple)

註意:

1) 數字的哈希值就是它本身

2) 每次調用hash()得到的哈希值不一樣(除數字外),所以哈希值不能做密碼

num = 10
s = "Hello"

print(hash(num))  # 10

# 第一次調用
print(hash(s))  # 3718209680369926059

# 再次調用
print(hash(s))  # 263127024043316082
  • id()

功能:獲取對象的記憶體地址

6、與文件相關

  • open()

功能:用於打開一個文件,創建一個文件句柄

7、模塊相關

  • __import__()

功能:用於動態載入類和函數

8、幫助

  • help()

功能:函數用於查看函數或模塊用途的詳細說明

9、調用相關

  • callable()

功能:用於檢查一個對象是否是可調用的。如果返回True, object有可能調用失敗,但如果返回False,那麼調用絕對不會成功

n = 10

def func():
    pass

print(callable(n)) # False

print(callable(func)) # True

10、查看內置屬性

  • dir()

功能:查看對象的內置屬性,方法。訪問的是對象的__dir__()方法

11、基礎數據類型相關

1)和數字相關

a) 數據類型

  • bool()

功能:將給定的數據轉換成bool值。如果不給值,返回False

  • int()

功能:將給定的數據轉換成int值。如果不給值,返回0

  • float()

功能:將給定的數據轉換成float值,也就是小數

  • complex()

功能:創建一個複數,第一個參數為實部,第二個參數為虛部,或者第一個參數直接用字元串來描述複數

b) 進位轉換

  • bin()

功能:將給的參數轉換成二進位

  • otc()

功能:將給的參數轉換成八進位

  • hex()

功能:將給的參數轉換成十六進位

c) 數學運算

  • abs()

功能:返回絕對值

  • divmod()

功能:返回商和餘數

  • round()

功能:四捨五入

對於x.5,如果整數個位數為偶數靠近偶數進行捨棄,如果整數個位數為奇數靠近偶數進行捨棄

print(round(4.5)) # 4
print(round(5.5)) # 6
print(round(5.4)) # 5
  • pow(a, b)

功能:求a的b次冪,如果有三個參數,則求完次冪後對第三個數取餘

print(pow(2, 3)) # 8

print(pow(2, 3, 5)) # 3
  • sum(可迭代對象)

功能:求和

  • min()

功能:求最小值

  • max()

功能:求最大值 

2)和數據結構相關

a) 列表和元組

  • list()

功能:將一個可迭代對象轉換成列表

  • tuple()

功能:將一個可迭代對象轉換成元組

  • reversed()

功能:將一個序列翻轉,返回翻轉序列的迭代器

lst = [1, 2, 3, 4, 5, 6]
ret = reversed(lst)
print(ret)  # <list_reverseiterator object at 0x000001B589038208>

for i in ret:
    print(i)  # 6 5 4 3 2 1
  • slice

功能:列表的切片

lst = [1, 2, 3, 4, 5, 6]

s = slice(1, 5, 2)
print(lst[s])  # [2, 4]

b) 字元串相關

  • str()

功能:將數據轉化成字元串

  • format()

功能:與具體數據相關,用於計算各種小數,精算等

# 字元串
print(format('test', '<20'))    # 左對齊 
print(format('test', '>20'))    # 右對齊 
print(format('test', '^20'))    # 居中 

# 數值 
print(format(3, 'b'))           # ⼆進位 
print(format(97, 'c'))          # 轉換成unicode字元
print(format(11, 'd'))          # ⼗進位 
print(format(11, 'o'))          # ⼋進位 
print(format(11, 'x'))          # ⼗六進位(⼩寫字母) 
print(format(11, 'X'))          # ⼗六進位(⼤寫字母) 
print(format(11, 'n'))          # 和d一樣 
print(format(11))               # 和d一樣 

# 浮點數 
print(format(123456789, 'e'))           # 科學計數法. 預設保留6位小數 
print(format(123456789, '0.2e'))        # 科學計數法. 保留2位小數(小寫) 
print(format(123456789, '0.2E'))        # 科學計數法. 保留2位小數(大寫) 
print(format(1.23456789, 'f'))          # 小數點計數法. 保留6位小數 
print(format(1.23456789, '0.2f'))       # 小數點計數法. 保留2位小數 
print(format(1.23456789, '0.10f'))      # 小數點計數法. 保留10位小數 
print(format(1.23456789e+10000, 'F'))   # 小數點計數法.
  • bytes()

功能:把字元串轉化成bytes類型

s = "你好"

bs = bytes(s, encoding="utf-8")
print(bs)  # b'\xe4\xbd\xa0\xe5\xa5\xbd'
  • bytearray()

功能:返回一個新位元組數組,這個數組裡的元素是可變的,並且每個元素的值的範圍是[0, 256]

ret = bytearray('alex', encoding='utf-8')
print(ret)  # bytearray(b'alex')

ret[0] = 65
print(ret) # bytearray(b'Alex')
  • memoryview()

功能:查看bytes在記憶體中的情況

s = "你好"
ret = memoryview(s.encode("utf-8"))
print(ret)  # <memory at 0x0000022FC0071048>
  • ord()

功能:輸入字元找帶字元編碼的位置

  • chr()

功能:輸入位置數字找出對應的字元

  • ascii()

功能:在ascii碼中就返回這個值,如里不在就返回\u...

s = "你好"
print(ascii(s))  # '\u4f60\u597d'
  • repr()

功能:返回一個對象的官方表示形式

s = "你好\我叫賽利亞"
print(repr(s)) # '你好\\我叫賽利亞'
print(s) #你好\我叫賽利亞

c) 數據集合

  • dict()

功能:創建一個字典

  • set()

功能:創建一個集合

  • frozenset()

功能:創建一個凍結的集合,凍結的集合不能進行添加和刪除操作

d) 其他相關

  • len()

功能:返回一個對象中的元素的個數

  • sorted()

功能:對可迭代對象進行排序操作

  • enumerate(可迭代對象,start=0)

功能:獲取集合的枚舉對象

lst = [11, 22, 33]
for index, el in enumerate(lst):
    print(index, el)

結果:
0 11
1 22
2 33
  • all()

功能:可迭代對象中全部是True,結果才是True

print(all([1, 2, 0, True])) # False
  • any()

功能:可迭代對象中有一個是True, 結果就是True

print(any([1, 2, 0, True])) # True
  • zip()

功能:函數用於將可迭代對象作為參數,將對象中對應的元素打包成一個個元組,然後返回由這些元組組成的一個可迭代對象zip object。如果各個迭代器的元素不一致,則返回對象長度與最短的對象相同

lst1 = [1, 2, 3]
lst2 = ["a", "b", "c", "d"]
lst3 = (11, 22, 33, 44, 55)

print(zip(lst1, lst2, lst3))       #  <zip object at 0x000001E7D275BF48>
print(list(zip(lst1, lst2, lst3))) #[(1, 'a', 11), (2, 'b', 22), (3, 'c', 33)]

for i in zip(lst1, lst2, lst3):
    print(i)                       # (1, 'a', 11)  (2, 'b', 22) (3, 'c', 33)

內置函數結構圖如下:

                                  https://www.processon.com/mindmap/5bdbfba6e4b0e452133837a3


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 通過一個用戶交互的例子進行說明,如何通過讀取寫入文件與用戶交互直接的操作功能。 ...
  • 工作中後臺開發使用的是 TP5,但是對語法不是很熟悉,總是看著手冊寫代碼。當時做 Java 的時候也是這樣,很多語法需要靠百度。不是不能寫代碼,但是這樣的效率感覺不高,沒有行雲流水的感覺,要是能有聊天時打字的感覺就好多了。不熟悉就得多學習,但是學完經常就忘記了,所以博客就當是記錄了。 TP5的驗證碼 ...
  • java 8日期相關類 Instant:時間戳 Duration:持續時間,時間差 LocalDate:只包含日期,比如:2016 10 20 LocalTime:只包含時間,比如:23:12:10 LocalDateTime:包含日期和時間,比如:2016 10 20 23:14:21 Perio ...
  • 文件操作:讀取 r rb、只寫 w wb、追加 a ab、r+、w+、a+ 功能詳解:seek、tell、readable、readline、readlines、truncate、with as ...
  • 《Accelerated C++ 中文版通過示例進行編程實踐》系統介紹C++程式設計,是美國斯坦福大學的經典教材。從使用C++標準庫中的高級抽象開始,使讀者很快掌握編程方法。每一章都有很經典獨特的例子以及非常到位的講解,覆蓋了C++更多領域的內容,從標準庫容器、泛型演算法的使用,到類的設計、泛型演算法的 ...
  • 環境安裝 環境安裝 主要包含三個部分 運行環境及開發sdk 系統環境和路徑配置 IDE配置 以mac環境為例,其他環境類似 運行環境及開發sdk 使用 brew 安裝 檢查,得到go基本安裝信息 系統環境和路徑配置 主要是GOROOT和GOPATH GOROOT:就是go的安裝環境 GOPATH:作 ...
  • Spring 是一個非常流行的基於Java語言的開發框架,此框架用來構建web和企業應用程式。與許多其他僅關註一個領域的框架不同,Spring框架提供了廣泛的功能,通過其組合項目滿足現代業務需求。 Spring框架提供了以多種方式配置bean的靈活性,例如XML,註解和JavaConfig。隨著功能 ...
  • 內置函數: continue... 傳送門 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...