Python學習日記(十一) 內置函數

来源:https://www.cnblogs.com/Fantac/archive/2019/08/20/11380790.html
-Advertisement-
Play Games

什麼是內置函數? 就是Python中已經寫好了的函數,可以直接使用 內置函數圖表: 以3.6.2為例 ...


什麼是內置函數?

就是Python中已經寫好了的函數,可以直接使用

 

內置函數圖表:

以3.6.2為例

 

內置函數分類:

一、反射相關

1.hasattr()

2.getattr()

3.setattr()

4.delattr()

 

二、基礎數據類型相關

1.和數字相關

(1)數據類型

  a.bool()

    把一個值轉換成布爾值

li = ['',[],1,12,0]
for i in li:
    print(bool(i))
# False
# False
# True
# True
# False

  b.int()

    把一個值轉換成整型

num = input('Please input a number:')
print(10 + int(num))
# Please input a number:20
# 30

  c.float()

    把一個整數或數字字元串轉換成帶小數點的數

print(float('123.5'),type(float('123.5')))      #123.5 <class 'float'>
print(float(-50.2),type(float(-50.2)))          #-50.2 <class 'float'>

  d.complex()

    返回一個複數

a = 1 + 2j
b = 2
print(complex(a))   #(1+2j)
print(complex(b))   #(2+0j)
print(complex(2,3)) #(2+3j)

(2)進位轉換

  a.bin()

    將一個數以二進位字元串的方式表示

print(bin(2))   #0b10
print(bin(10))  #0b1010

  b.oct()

    把一個數轉換成八進位的字元串

print(oct(20),type(oct(20)))    #0o24 <class 'str'>
print(oct(8),type(oct(8)))      #0o10 <class 'str'>

  c.hex()

    把一個數字轉換成十六進位的字元串

print(hex(10),type(hex(10)))    #0xa <class 'str'>
print(hex(28),type(hex(28)))    #0x1c <class 'str'>

(3)數學運算

  a.abs()

    對一個數的值取絕對值,結果不改變原值

a = -5
print(abs(a))   #5

  b.divmod()

    返回一個以商和餘數組成的元祖

print(divmod(10,5),type(divmod(10,5)))      #(2, 0) <class 'tuple'>
print(divmod(4,9))                          #(0, 4)

  c.round()

    將浮點值四捨五入

import math
Pi = math.pi
print(round(Pi,4))      #3.1416

  d.pow()

    一般情況下給函數兩個數可以計算次方,若給定三個數則在冪運算後再取餘

print(pow(2,3))     #8
print(pow(2,0.5))   #1.4142135623730951
print(pow(3,2,2))   #1

  e.sum()

print(sum([2,2,3,5,6,2,4]))        #24
print(sum([2,2,3,5,6,2,4],10))     #34  這裡只是先讓10進行sum的運算

  f.min()

print(min(-1,-2,2,3))                    #-2
print(min(-1,-2,2,3,key=abs))            #-1
print(min('aab','aaab','bc',key=len))    #bc

  g.max()

print(max(-4,-2,2,3))                    #3
print(max(-4,-2,2,3,key=abs))            #-4
print(max('aab','aaab','bc',key=len))    #aaab

2.和數據結構相關

(1)序列

  <1>列表和元祖

    a.list()

      將一個元祖或者字元串轉化成一個列表

print(list('abcdefg'))  #['a', 'b', 'c', 'd', 'e', 'f', 'g']
print(list((1,2,'l')))  #[1, 2, 'l']

    b.tuple()

      將一個列表轉化為元祖

print(tuple([1,2,3,'h','k']))   #(1, 2, 3, 'h', 'k')

  <2>相關內置函數

    a.reversed()

      函數返回一個反轉的迭代器

l = [1,2,3,'h','k',True]
l2 = reversed(l)        #<list_reverseiterator object at 0x0000000001DD5470>
print(l2)               #不改變原列表並返回一個迭代器
for i in l2:
    print(i)
# True
# k
# h
# 3
# 2
# 1

    b.slice()

l = ['a',1,2,3,4,8,'h','k']
sli = slice(2,7,2)      #切片顧頭不顧尾
print(l[sli])           #[2, 4, 'h']

  <3>字元串

    a.str()

      將對象轉化為適合人閱讀的格式

tu = (1,2,'h')
dic = {'k1' : 1,'k2' : 2}
li = [1,2,3,'h']
i = 123
print(str(tu),type(tu))     #(1, 2, 'h') <class 'tuple'>
print(str(dic),type(dic))   #{'k1': 1, 'k2': 2} <class 'dict'>
print(str(li),type(li))     #[1, 2, 3, 'h'] <class 'list'>
print(str(i),type(i))       #123 <class 'int'>

    b.format()

      主要用於格式化輸出也可以用於數學方面的研究

value = 'ox123'
tu = ('value1','value2','value3')
print('get value->{0}'.format(value))   #get value->ox123
print('{0} {1} {2}'.format(*tu))        #value1 value2 value3

'''數字格式化'''
a = 12.579
print('{:.2f}'.format(a))               #12.58  保留小數點的後兩位
print('{:+.2f}'.format(a))              #+12.58 帶符號的保留小數點的後兩位
print('{:-.2f}'.format(-a))             #-12.58  帶符號的保留小數點的後兩位
print('{:.0f}'.format(a))               #13     不帶小數返回並對結果四捨五入
print('{:.2%}'.format(a/100))           #12.58% 結果以百分比格式輸出

b = 1001
print('{:0>8d}'.format(b))              #00001001   數字補0(填充左邊寬度為8)
print('{:*>8d}'.format(b))              #****1001   數字補*(填充左邊寬度為8)
print('{:*<8d}'.format(b))              #1001****   數字補*(填充右邊寬度為8)

c = 10**10
print('{:,}'.format(c))                 #10,000,000,000    結果以逗號的形式分隔
print('{:.2e}'.format(c))               #1.00e+10          結果以指數標準格式輸出

d = 7
print('{:>5d}'.format(d))               #    7      向右對齊
print('{:<5d}'.format(d))               #7          向左對齊
print('{:^5d}'.format(d))               #  7        中間對齊

e = 15
print('{:b}'.format(e))                 #1111       返回二進位
print('{:d}'.format(e))                 #15         返回十進位
print('{:o}'.format(e))                 #17         返回八進位
print('{:x}'.format(e))                 #f          返回十六進位
print('{:#x}'.format(e))                #0xf        返回帶格式輸出的十六進位小寫
print('{:#X}'.format(e))                #0XF        返回帶格式輸出的十六進位大寫

    c.bytes()

      主要用在網路編程、照片和視頻、爬取網頁等二進位文件的時候

print(bytes('Python爬蟲',encoding='utf-8'))   #b'Python\xe7\x88\xac\xe8\x99\xab'

    d.bytearray()

      返回一個bytes數組

b = bytes('Python爬蟲',encoding='utf-8')   #b'Python\xe7\x88\xac\xe8\x99\xab'
print(bytearray(b))                        #bytearray(b'Python\xe7\x88\xac\xe8\x99\xab')

    e.memoryview()

      在一個緩衝區中查看一個對象,返回值為一個元祖

v = memoryview(bytearray('abcdef','utf-8'))
print(v[2])     #99
print(v[-1])    #102
print(v[1:5:2]) #<memory at 0x00000000024DE288>
print(v[1:5:2].tobytes())   #b'bd'

    f.ord()

      以一個字元作為參數返回一個unicode值或者ascii值,返回值為一個對應的十進位整數

print(ord('a'))     #97
print(ord('A'))     #65
print(ord('az'))    #TypeError 超過給定長度報錯

    g.chr()

      以一個十進位或十六進位的整數作為參數,數字範圍為0-1114111(16進位為0x10FFFF),返回值為對應的ASCII字元

print(chr(65))      #A
print(chr(97))      #a
print(chr(0x35))    #5

    h.ascii()

      返回一個ascii字元,如果找不到這個ascii字元則通過repr()使用\x,\u或\U編碼的字元       

print(ascii(10))     #10
print(ascii('a'))    #'a'   
print(ascii(''))    #'\u4e2d'

    i.repr()

      將對象轉化為供解釋器讀取的形式,返回一個string的格式

name = 'jane'
print('hello %r'%name)  #hello 'jane'
print(repr('1'))        #'1'
print(repr(1))          #1

(2)數據集合

  <1>字典

    a.dict()      

'''
    dict(mapping) -> new dictionary initialized from a mapping object's
 |      (key, value) pairs
 |  dict(iterable) -> new dictionary initialized as if via:
 |      d = {}
 |      for k, v in iterable:
 |          d[k] = v
 |  dict(**kwargs) -> new dictionary initialized with the name=value pairs
 |      in the keyword argument list.  For example:  dict(one=1, two=2)
'''

mapping為元素容器、iterable為可迭代的對象、**kwargs為關鍵字

這裡的主要語法:

'''映射函數創建字典'''
dict1 = dict(zip(['key1','key2','key3','key4'],[1,2,3]))    #{'key1': 1, 'key2': 2, 'key3': 3}
print(dict1)
'''關鍵字創建字典'''
dict2 = dict(a = 1,b = 'b',c = None)
print(dict2)        #{'a': 1, 'b': 'b', 'c': None}
'''可迭代創建字典'''
dict3 = dict([('a',1),('b',None),('c','')])
print(dict3)        #{'a': 1, 'b': None, 'c': ''}

  <1>集合

    a.set()

      創建一個無序不重覆的元素集合,這裡的參數必須是可迭代對象

set1 = set([1,2,2,3,'a','a','b'])
print(set1) #{1, 2, 3, 'a', 'b'}

    b.frozenset()

      返回一個凍結的集合,之後不能進行添加或修改任何元素

set1 = {1,2,3,'a'}
set1 = frozenset(set1)
print(set1,type(set1))  #frozenset({1, 2, 3, 'a'}) <class 'frozenset'>
set1[0] = 'b'           #TypeError: 'frozenset' object does not support item assignment

(3)相關內置函數

  a.len()

    返回該對象的長度

print(len('123'))           #3
print(len([1,2,3,4,5,6]))   #6 

  b.enumerate()   

語法:
    enumerate(sequence, [start=0])
sequence:必須是一個序列、迭代器或者其他支持迭代的對象
start:下標開始位置
names = ['Jane','Mike','Byes','Suke']
iterator = enumerate(names)     #<enumerate object at 0x0000000001E9CA68> 獲得一個關於枚舉的迭代器
for i in iterator:
    print(i)
# (0, 'Jane')
# (1, 'Mike')
# (2, 'Byes')
# (3, 'Suke')
iterator2 = enumerate(names)
print(list(iterator2))                  #[(0, 'Jane'), (1, 'Mike'), (2, 'Byes'), (3, 'Suke')]
print(list(enumerate(names,start=5)))   #[(5, 'Jane'), (6, 'Mike'), (7, 'Byes'), (8, 'Suke')]

和for迴圈相關:

for i,e in enumerate(range(4),2):
    print('i = {0},e = {1}'.format(i,e))
# i = 2,e = 0
# i = 3,e = 1
# i = 4,e = 2
# i = 5,e = 3

  c.all()

    如果給定一個可迭代對象中的元素都為True,則返回True,否則返回False

print(all([1,2,0]))                 #False
print(all([1,2,False]))             #False
print(all([1,2,None]))              #False
print(all([1,2,()]))                #False
print(all([1,2,set()]))             #False
print(all([1,2,{}]))                #False
print(all([1,2,'']))                #False
print(all([1,2,2]))                 #True
print(all([]))                      #True
print(all({}))                      #True  

  d.any()

    如果給定一個可迭代對象中的元素都為False,則返回False,否則返回True

print(any([1,2,0]))                 #True
print(any([1,2,False]))             #True
print(any([1,2,None]))              #True
print(any([1,2,()]))                #True
print(any([1,2,set()]))             #True
print(any([1,2,{}]))                #True
print(any([1,2,'']))                #True
print(any(['',None,()]))            #False
print(any([]))                      #False
print(any({}))                      #False

  e.zip()

l1 = ['key1','key2','key3']
l2 = [1,2,3,4]
zipped = zip(l1,l2)
print(zipped)       #<zip object at 0x00000000024EA7C8>
print(dict(zipped)) #{'key1': 1, 'key2': 2, 'key3': 3}
l1 = ['key1','key2','key3']
for i in zip(*l1):
    print(i)
# ('k', 'k', 'k')
# ('e', 'e', 'e')
# ('y', 'y', 'y')
# ('1', '2', '3')

  f.filter()

    用於過濾序列,過濾掉不合格的元素,返回一個迭代器,不改變原來的值

    語法:filter(function,iterable) function:篩選函數 iterable:可迭代的對象

def is_even(x):
    return x % 2 == 0
fiterator = filter(is_even,[1,2,2,3,4,5,6,7])
print(fiterator)        #<filter object at 0x00000000006722E8>
print(list(fiterator))  #[2, 2, 4, 6]

篩選含有字元串的元素:

def is_str(s):
    if type(s) == str and str(s).strip():
        return True
ret = filter(is_str,['h',1,'',None,2,'k','l'])  
print(list(ret))        ##['h', 'k', 'l']

  g.map()

    會根據提供的函數對指定序列做映射

    執行前後元素個數不變,值可能發生改變

    返回值是一個迭代器 

l = [-2,-1,2,0]
ret = map(abs,l)
print(ret)              #<map object at 0x0000000001DA2F60>
print(list(ret))        #[2, 1, 2, 0]

  h.sorted()

    語法:sorted(iterable,key=None,reverse=False)

    iterable:是一個可迭代對象

    key:用於比較的元素

    reverse:排序規則,reverse=False 升序(預設),反之降序

l = [-2,-2,1,6,-5,-2,4,3]
print(sorted(l))                            #[-5, -2, -2, -2, 1, 3, 4, 6]   升序排列
print(sorted(l,reverse=True))               #[6, 4, 3, 1, -2, -2, -2, -5]   降序排列
print(sorted(l,key=abs))                    #[1, -2, -2, -2, 3, 4, -5, 6]

 

三、作用域相關

1.locals()

  找到當前作用域下所有的變數對應關係,並以字典返回

2.globals()

  找到全局作用域下所有的變數對應關係,並以字典返回

a = 1
b = 'hello'
def func():
    c = 3
    print(locals())     #{'c': 3}
    print(globals())    #{'__name__': '__main__', '__loader__': <_frozen_importlib_external.SourceFileLoader object at 0x002A5910>,
                        # 'func': <function func at 0x00527CD8>, '__file__': 'C:/Users/Administrator/PycharmProjects/PYL/生成器/1.py',
                        # '__spec__': None, '__cached__': None, 'a': 1, '__builtins__': <module 'builtins' (built-in)>, 'b': 'hello',
                        # '__doc__': None, '__package__': None}
func()

 

四、面向對象相關

1.定義特殊方法的裝飾器

  a.classmethod()

  b.property()

  c.staticmethod()

2.判斷對象/類與類之間的關係

  a.isinstance()

  b.issubclass()

3.所有類的基類

  a.object()

4.繼承相關

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

-Advertisement-
Play Games
更多相關文章
  • Redux是一個可預測的狀態容器,提供可預測的狀態管理。 什麼是狀態?狀態其實也就是數據,管理狀態也就是對數據的管理。那麼什麼是可預測的狀態管理呢?能夠監聽數據的變化,獲取變化的來源,在發生變化時可以觸發某些動作,即為狀態管理(個人理解)。 如上所示,就是一個最簡單的狀態管理,實現了數據基本的管理, ...
  • 在標簽中經常會用到alt標簽,這對於seo的優化是有一定的幫助。 ...
  • 本篇筆記只敘述 var 與 let 的區別 var 是可以進行變數的提升的,好比先定義一個變數,不指定類型,後面再用 var 來聲明它,於是它從無類型變成了有類型,但是這樣是不好的 當你使用 var 時,可以根據需要多次聲明相同名稱的變數,但是 let 不能。 而對面 let 來說,它更像我們學的 ...
  • jQueryt靜態方法詳解 ==> each ==> map ==> trim ==> isArray ==> isFunction ==> isWindow ==> holdReady 一,each方法 註:為了更好的展示,首先創建一個數組和一個對象 (let 與 arr 區別詳解見 JavaSc ...
  • 分散式事務的挑戰 在多個服務、資料庫和消息代理之間維持數據的一致性的傳統方式是採用分散式事務。分散式的事實標註是XA、XA採用了兩階段提交老保證事務中的所有參與方同時完成提交,或者失敗時同時回滾。應用程式的整個技術棧需要滿足XA標準。 許多新技術,包括NoSQLshujk ,liru MongoDB ...
  • 背景 自己手上有一個項目服務用的是AWS EC2,最近從安全性和性能方面考慮,最近打算把騰訊雲的MySQL資料庫遷移到AWS RDS上,因為AWS的出口規則和安全組等問題,我需要修改預設的3306埠和Bind Address限制特定的IP訪問,我在Stackoverflow上查詢瞭如何修改,但是網 ...
  • SpringMVC 原理 設計原理、啟動過程、請求處理詳細解讀 目錄 "一、 設計原理" "二、 啟動過程" "三、 請求處理" 一、 設計原理 Servlet 規範 SpringMVC 是基於 Servlet 的。 Servlet 是運行在 web 伺服器上的程式,它接收並響應來自 web 客戶端 ...
  • Django自定義分頁並保存搜索條件 1、自定義分頁組件pagination.py 2、view視圖 3、templates模板 4、頁面展示 ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...