'一些值得學習的Python內置函數(1)'

Python 鏡音雙子 程序員 編程語言 Python部落 2019-08-05
"

在我教的每一節Python入門課上,經常都會被問道像“我們如何才能知道所有這些”這樣的問題。

通常還伴隨著這些問題:

  1. Python中有很多函數,記住這些函數的最好方法是什麼?
  2. 學習我們日常需要的函數,如enumerate 和 range,最好的方法是什麼?
  3. 你是如何知道Python中解決問題的所有方法的?你記下來了嗎?

有幾十個內置函數和類,數百個工具捆綁在Python的標準庫中,以及PyPI上的數千個第三方庫。任何人都不可能記住所有這些東西。

我建議你對你的知識進行分類:

  1. 我應該記住的東西,這樣我就能很好地理解它們
  2. 我應該知道的東西,這樣我以後才能更有效地查找它們
  3. 我根本不應該為之煩惱的東西,除非有一天我需要它們

將這個方法記在腦海中,我們來瀏覽Python文檔中的內置函數頁面。

這將是一篇很長的文章,所以在下一節中我將鏈接到5個子部分和20個特定的內置函數,所以如果你有時間或者正在尋找一個內置函數,你可以提前跳過去查看。

你應該瞭解哪些內置組件?

我估計大多數Python開發人員只需要大約30個內置函數,但是哪30個取決於你實際使用Python做什麼。

我們將以鳥瞰的方式來看看Python中的所有的69個內置函數。

我將嘗試把這些內置組件分成五類:

  1. 眾所周知: 大多數python初學者會因為需要而很快地接觸到這些內置組件
  2. 初學者所忽略的: 瞭解這些函數很有用,但是當你是Python新手時,就會很容易忽略它們
  3. 稍後再學習的: 瞭解這些內置組件通常很有用,但是當/如果你需要它們時,你就會找到它們
  4. 也許最終會學的: 這些東西遲早會派上用場,但只是在特定的情況下
  5. 你可能不需要這些: 除非你在做一些相當專業的事情,否則你不太可能會需要這些

類別1和類別2中的內置函數幾乎是所有Python程序員最終都應該學習的基本內置函數。類別3和類別4中的內置函數是專門的內置函數,它們通常非常有用,但是你對它們的需求會根據你對Python的使用情況而有所不同。類別5是神祕的內置函數,當你需要它們時,這可能非常方便,但是許多Python程序員可能永遠都不需要它們。

Python高手請注意: 我將把所有這些內置組件都稱為函數,儘管其中的27個實際上並不是函數(如我的函數和callables文章中所討論的)。

常見的內置函數(你可能已經很熟悉了):

  1. print
  2. len
  3. str
  4. int
  5. float
  6. list
  7. tuple
  8. dict
  9. set
  10. range

經常被新的Python編程者所忽略的內置函數:

  1. sum
  2. enumerate
  3. zip
  4. bool
  5. reversed
  6. sorted
  7. min
  8. max
  9. any
  10. all

還有5個通常被忽略的內置函數,我建議你自己去了解它們,因為它們使調試更容易: dir、vars、breakpoint、type和help。

除了上面的25個內置函數之外,我們還將在稍後的“以後學習並可能最終會學習的”和“你可能不需要這些”部分中簡要介紹其他的44個內置函數。

10個常見的內置函數

如果你一直在編寫Python代碼,那麼這些內置程序對你來說可能已經很熟悉了。

print

你已經知道了print函數。實現hello world需要用到print。

你可能不瞭解print所接受的各種關鍵字參數:

"

在我教的每一節Python入門課上,經常都會被問道像“我們如何才能知道所有這些”這樣的問題。

通常還伴隨著這些問題:

  1. Python中有很多函數,記住這些函數的最好方法是什麼?
  2. 學習我們日常需要的函數,如enumerate 和 range,最好的方法是什麼?
  3. 你是如何知道Python中解決問題的所有方法的?你記下來了嗎?

有幾十個內置函數和類,數百個工具捆綁在Python的標準庫中,以及PyPI上的數千個第三方庫。任何人都不可能記住所有這些東西。

我建議你對你的知識進行分類:

  1. 我應該記住的東西,這樣我就能很好地理解它們
  2. 我應該知道的東西,這樣我以後才能更有效地查找它們
  3. 我根本不應該為之煩惱的東西,除非有一天我需要它們

將這個方法記在腦海中,我們來瀏覽Python文檔中的內置函數頁面。

這將是一篇很長的文章,所以在下一節中我將鏈接到5個子部分和20個特定的內置函數,所以如果你有時間或者正在尋找一個內置函數,你可以提前跳過去查看。

你應該瞭解哪些內置組件?

我估計大多數Python開發人員只需要大約30個內置函數,但是哪30個取決於你實際使用Python做什麼。

我們將以鳥瞰的方式來看看Python中的所有的69個內置函數。

我將嘗試把這些內置組件分成五類:

  1. 眾所周知: 大多數python初學者會因為需要而很快地接觸到這些內置組件
  2. 初學者所忽略的: 瞭解這些函數很有用,但是當你是Python新手時,就會很容易忽略它們
  3. 稍後再學習的: 瞭解這些內置組件通常很有用,但是當/如果你需要它們時,你就會找到它們
  4. 也許最終會學的: 這些東西遲早會派上用場,但只是在特定的情況下
  5. 你可能不需要這些: 除非你在做一些相當專業的事情,否則你不太可能會需要這些

類別1和類別2中的內置函數幾乎是所有Python程序員最終都應該學習的基本內置函數。類別3和類別4中的內置函數是專門的內置函數,它們通常非常有用,但是你對它們的需求會根據你對Python的使用情況而有所不同。類別5是神祕的內置函數,當你需要它們時,這可能非常方便,但是許多Python程序員可能永遠都不需要它們。

Python高手請注意: 我將把所有這些內置組件都稱為函數,儘管其中的27個實際上並不是函數(如我的函數和callables文章中所討論的)。

常見的內置函數(你可能已經很熟悉了):

  1. print
  2. len
  3. str
  4. int
  5. float
  6. list
  7. tuple
  8. dict
  9. set
  10. range

經常被新的Python編程者所忽略的內置函數:

  1. sum
  2. enumerate
  3. zip
  4. bool
  5. reversed
  6. sorted
  7. min
  8. max
  9. any
  10. all

還有5個通常被忽略的內置函數,我建議你自己去了解它們,因為它們使調試更容易: dir、vars、breakpoint、type和help。

除了上面的25個內置函數之外,我們還將在稍後的“以後學習並可能最終會學習的”和“你可能不需要這些”部分中簡要介紹其他的44個內置函數。

10個常見的內置函數

如果你一直在編寫Python代碼,那麼這些內置程序對你來說可能已經很熟悉了。

print

你已經知道了print函數。實現hello world需要用到print。

你可能不瞭解print所接受的各種關鍵字參數:

一些值得學習的Python內置函數(1)

你可以自己查看print函數。

len

在Python中,我們不寫像my_list.length()或my_string.length()這樣的函數; 相反,我們會奇怪地(至少對於新的python開發者來說)使用len(my_list)和len(my_string)。

"

在我教的每一節Python入門課上,經常都會被問道像“我們如何才能知道所有這些”這樣的問題。

通常還伴隨著這些問題:

  1. Python中有很多函數,記住這些函數的最好方法是什麼?
  2. 學習我們日常需要的函數,如enumerate 和 range,最好的方法是什麼?
  3. 你是如何知道Python中解決問題的所有方法的?你記下來了嗎?

有幾十個內置函數和類,數百個工具捆綁在Python的標準庫中,以及PyPI上的數千個第三方庫。任何人都不可能記住所有這些東西。

我建議你對你的知識進行分類:

  1. 我應該記住的東西,這樣我就能很好地理解它們
  2. 我應該知道的東西,這樣我以後才能更有效地查找它們
  3. 我根本不應該為之煩惱的東西,除非有一天我需要它們

將這個方法記在腦海中,我們來瀏覽Python文檔中的內置函數頁面。

這將是一篇很長的文章,所以在下一節中我將鏈接到5個子部分和20個特定的內置函數,所以如果你有時間或者正在尋找一個內置函數,你可以提前跳過去查看。

你應該瞭解哪些內置組件?

我估計大多數Python開發人員只需要大約30個內置函數,但是哪30個取決於你實際使用Python做什麼。

我們將以鳥瞰的方式來看看Python中的所有的69個內置函數。

我將嘗試把這些內置組件分成五類:

  1. 眾所周知: 大多數python初學者會因為需要而很快地接觸到這些內置組件
  2. 初學者所忽略的: 瞭解這些函數很有用,但是當你是Python新手時,就會很容易忽略它們
  3. 稍後再學習的: 瞭解這些內置組件通常很有用,但是當/如果你需要它們時,你就會找到它們
  4. 也許最終會學的: 這些東西遲早會派上用場,但只是在特定的情況下
  5. 你可能不需要這些: 除非你在做一些相當專業的事情,否則你不太可能會需要這些

類別1和類別2中的內置函數幾乎是所有Python程序員最終都應該學習的基本內置函數。類別3和類別4中的內置函數是專門的內置函數,它們通常非常有用,但是你對它們的需求會根據你對Python的使用情況而有所不同。類別5是神祕的內置函數,當你需要它們時,這可能非常方便,但是許多Python程序員可能永遠都不需要它們。

Python高手請注意: 我將把所有這些內置組件都稱為函數,儘管其中的27個實際上並不是函數(如我的函數和callables文章中所討論的)。

常見的內置函數(你可能已經很熟悉了):

  1. print
  2. len
  3. str
  4. int
  5. float
  6. list
  7. tuple
  8. dict
  9. set
  10. range

經常被新的Python編程者所忽略的內置函數:

  1. sum
  2. enumerate
  3. zip
  4. bool
  5. reversed
  6. sorted
  7. min
  8. max
  9. any
  10. all

還有5個通常被忽略的內置函數,我建議你自己去了解它們,因為它們使調試更容易: dir、vars、breakpoint、type和help。

除了上面的25個內置函數之外,我們還將在稍後的“以後學習並可能最終會學習的”和“你可能不需要這些”部分中簡要介紹其他的44個內置函數。

10個常見的內置函數

如果你一直在編寫Python代碼,那麼這些內置程序對你來說可能已經很熟悉了。

print

你已經知道了print函數。實現hello world需要用到print。

你可能不瞭解print所接受的各種關鍵字參數:

一些值得學習的Python內置函數(1)

你可以自己查看print函數。

len

在Python中,我們不寫像my_list.length()或my_string.length()這樣的函數; 相反,我們會奇怪地(至少對於新的python開發者來說)使用len(my_list)和len(my_string)。

一些值得學習的Python內置函數(1)

無論你是否喜歡這個類似於操作符的len函數,你都必須使用它,所以你需要習慣它。

str

與許多其他編程語言不同,你不能在Python中連接字符串和數字。

"

在我教的每一節Python入門課上,經常都會被問道像“我們如何才能知道所有這些”這樣的問題。

通常還伴隨著這些問題:

  1. Python中有很多函數,記住這些函數的最好方法是什麼?
  2. 學習我們日常需要的函數,如enumerate 和 range,最好的方法是什麼?
  3. 你是如何知道Python中解決問題的所有方法的?你記下來了嗎?

有幾十個內置函數和類,數百個工具捆綁在Python的標準庫中,以及PyPI上的數千個第三方庫。任何人都不可能記住所有這些東西。

我建議你對你的知識進行分類:

  1. 我應該記住的東西,這樣我就能很好地理解它們
  2. 我應該知道的東西,這樣我以後才能更有效地查找它們
  3. 我根本不應該為之煩惱的東西,除非有一天我需要它們

將這個方法記在腦海中,我們來瀏覽Python文檔中的內置函數頁面。

這將是一篇很長的文章,所以在下一節中我將鏈接到5個子部分和20個特定的內置函數,所以如果你有時間或者正在尋找一個內置函數,你可以提前跳過去查看。

你應該瞭解哪些內置組件?

我估計大多數Python開發人員只需要大約30個內置函數,但是哪30個取決於你實際使用Python做什麼。

我們將以鳥瞰的方式來看看Python中的所有的69個內置函數。

我將嘗試把這些內置組件分成五類:

  1. 眾所周知: 大多數python初學者會因為需要而很快地接觸到這些內置組件
  2. 初學者所忽略的: 瞭解這些函數很有用,但是當你是Python新手時,就會很容易忽略它們
  3. 稍後再學習的: 瞭解這些內置組件通常很有用,但是當/如果你需要它們時,你就會找到它們
  4. 也許最終會學的: 這些東西遲早會派上用場,但只是在特定的情況下
  5. 你可能不需要這些: 除非你在做一些相當專業的事情,否則你不太可能會需要這些

類別1和類別2中的內置函數幾乎是所有Python程序員最終都應該學習的基本內置函數。類別3和類別4中的內置函數是專門的內置函數,它們通常非常有用,但是你對它們的需求會根據你對Python的使用情況而有所不同。類別5是神祕的內置函數,當你需要它們時,這可能非常方便,但是許多Python程序員可能永遠都不需要它們。

Python高手請注意: 我將把所有這些內置組件都稱為函數,儘管其中的27個實際上並不是函數(如我的函數和callables文章中所討論的)。

常見的內置函數(你可能已經很熟悉了):

  1. print
  2. len
  3. str
  4. int
  5. float
  6. list
  7. tuple
  8. dict
  9. set
  10. range

經常被新的Python編程者所忽略的內置函數:

  1. sum
  2. enumerate
  3. zip
  4. bool
  5. reversed
  6. sorted
  7. min
  8. max
  9. any
  10. all

還有5個通常被忽略的內置函數,我建議你自己去了解它們,因為它們使調試更容易: dir、vars、breakpoint、type和help。

除了上面的25個內置函數之外,我們還將在稍後的“以後學習並可能最終會學習的”和“你可能不需要這些”部分中簡要介紹其他的44個內置函數。

10個常見的內置函數

如果你一直在編寫Python代碼,那麼這些內置程序對你來說可能已經很熟悉了。

print

你已經知道了print函數。實現hello world需要用到print。

你可能不瞭解print所接受的各種關鍵字參數:

一些值得學習的Python內置函數(1)

你可以自己查看print函數。

len

在Python中,我們不寫像my_list.length()或my_string.length()這樣的函數; 相反,我們會奇怪地(至少對於新的python開發者來說)使用len(my_list)和len(my_string)。

一些值得學習的Python內置函數(1)

無論你是否喜歡這個類似於操作符的len函數,你都必須使用它,所以你需要習慣它。

str

與許多其他編程語言不同,你不能在Python中連接字符串和數字。

一些值得學習的Python內置函數(1)

Python拒絕將3個整數強制作為一個字符串,所以我們需要自己手動執行,使用內置的str函數(技術上來說是類,但正如我所說的,我將所有這些都稱為函數):

"

在我教的每一節Python入門課上,經常都會被問道像“我們如何才能知道所有這些”這樣的問題。

通常還伴隨著這些問題:

  1. Python中有很多函數,記住這些函數的最好方法是什麼?
  2. 學習我們日常需要的函數,如enumerate 和 range,最好的方法是什麼?
  3. 你是如何知道Python中解決問題的所有方法的?你記下來了嗎?

有幾十個內置函數和類,數百個工具捆綁在Python的標準庫中,以及PyPI上的數千個第三方庫。任何人都不可能記住所有這些東西。

我建議你對你的知識進行分類:

  1. 我應該記住的東西,這樣我就能很好地理解它們
  2. 我應該知道的東西,這樣我以後才能更有效地查找它們
  3. 我根本不應該為之煩惱的東西,除非有一天我需要它們

將這個方法記在腦海中,我們來瀏覽Python文檔中的內置函數頁面。

這將是一篇很長的文章,所以在下一節中我將鏈接到5個子部分和20個特定的內置函數,所以如果你有時間或者正在尋找一個內置函數,你可以提前跳過去查看。

你應該瞭解哪些內置組件?

我估計大多數Python開發人員只需要大約30個內置函數,但是哪30個取決於你實際使用Python做什麼。

我們將以鳥瞰的方式來看看Python中的所有的69個內置函數。

我將嘗試把這些內置組件分成五類:

  1. 眾所周知: 大多數python初學者會因為需要而很快地接觸到這些內置組件
  2. 初學者所忽略的: 瞭解這些函數很有用,但是當你是Python新手時,就會很容易忽略它們
  3. 稍後再學習的: 瞭解這些內置組件通常很有用,但是當/如果你需要它們時,你就會找到它們
  4. 也許最終會學的: 這些東西遲早會派上用場,但只是在特定的情況下
  5. 你可能不需要這些: 除非你在做一些相當專業的事情,否則你不太可能會需要這些

類別1和類別2中的內置函數幾乎是所有Python程序員最終都應該學習的基本內置函數。類別3和類別4中的內置函數是專門的內置函數,它們通常非常有用,但是你對它們的需求會根據你對Python的使用情況而有所不同。類別5是神祕的內置函數,當你需要它們時,這可能非常方便,但是許多Python程序員可能永遠都不需要它們。

Python高手請注意: 我將把所有這些內置組件都稱為函數,儘管其中的27個實際上並不是函數(如我的函數和callables文章中所討論的)。

常見的內置函數(你可能已經很熟悉了):

  1. print
  2. len
  3. str
  4. int
  5. float
  6. list
  7. tuple
  8. dict
  9. set
  10. range

經常被新的Python編程者所忽略的內置函數:

  1. sum
  2. enumerate
  3. zip
  4. bool
  5. reversed
  6. sorted
  7. min
  8. max
  9. any
  10. all

還有5個通常被忽略的內置函數,我建議你自己去了解它們,因為它們使調試更容易: dir、vars、breakpoint、type和help。

除了上面的25個內置函數之外,我們還將在稍後的“以後學習並可能最終會學習的”和“你可能不需要這些”部分中簡要介紹其他的44個內置函數。

10個常見的內置函數

如果你一直在編寫Python代碼,那麼這些內置程序對你來說可能已經很熟悉了。

print

你已經知道了print函數。實現hello world需要用到print。

你可能不瞭解print所接受的各種關鍵字參數:

一些值得學習的Python內置函數(1)

你可以自己查看print函數。

len

在Python中,我們不寫像my_list.length()或my_string.length()這樣的函數; 相反,我們會奇怪地(至少對於新的python開發者來說)使用len(my_list)和len(my_string)。

一些值得學習的Python內置函數(1)

無論你是否喜歡這個類似於操作符的len函數,你都必須使用它,所以你需要習慣它。

str

與許多其他編程語言不同,你不能在Python中連接字符串和數字。

一些值得學習的Python內置函數(1)

Python拒絕將3個整數強制作為一個字符串,所以我們需要自己手動執行,使用內置的str函數(技術上來說是類,但正如我所說的,我將所有這些都稱為函數):

一些值得學習的Python內置函數(1)

int

你是否有用戶輸入並需要將其轉換為數字?那你就需要int函數!

int函數可以將字符串轉換為整數:

"

在我教的每一節Python入門課上,經常都會被問道像“我們如何才能知道所有這些”這樣的問題。

通常還伴隨著這些問題:

  1. Python中有很多函數,記住這些函數的最好方法是什麼?
  2. 學習我們日常需要的函數,如enumerate 和 range,最好的方法是什麼?
  3. 你是如何知道Python中解決問題的所有方法的?你記下來了嗎?

有幾十個內置函數和類,數百個工具捆綁在Python的標準庫中,以及PyPI上的數千個第三方庫。任何人都不可能記住所有這些東西。

我建議你對你的知識進行分類:

  1. 我應該記住的東西,這樣我就能很好地理解它們
  2. 我應該知道的東西,這樣我以後才能更有效地查找它們
  3. 我根本不應該為之煩惱的東西,除非有一天我需要它們

將這個方法記在腦海中,我們來瀏覽Python文檔中的內置函數頁面。

這將是一篇很長的文章,所以在下一節中我將鏈接到5個子部分和20個特定的內置函數,所以如果你有時間或者正在尋找一個內置函數,你可以提前跳過去查看。

你應該瞭解哪些內置組件?

我估計大多數Python開發人員只需要大約30個內置函數,但是哪30個取決於你實際使用Python做什麼。

我們將以鳥瞰的方式來看看Python中的所有的69個內置函數。

我將嘗試把這些內置組件分成五類:

  1. 眾所周知: 大多數python初學者會因為需要而很快地接觸到這些內置組件
  2. 初學者所忽略的: 瞭解這些函數很有用,但是當你是Python新手時,就會很容易忽略它們
  3. 稍後再學習的: 瞭解這些內置組件通常很有用,但是當/如果你需要它們時,你就會找到它們
  4. 也許最終會學的: 這些東西遲早會派上用場,但只是在特定的情況下
  5. 你可能不需要這些: 除非你在做一些相當專業的事情,否則你不太可能會需要這些

類別1和類別2中的內置函數幾乎是所有Python程序員最終都應該學習的基本內置函數。類別3和類別4中的內置函數是專門的內置函數,它們通常非常有用,但是你對它們的需求會根據你對Python的使用情況而有所不同。類別5是神祕的內置函數,當你需要它們時,這可能非常方便,但是許多Python程序員可能永遠都不需要它們。

Python高手請注意: 我將把所有這些內置組件都稱為函數,儘管其中的27個實際上並不是函數(如我的函數和callables文章中所討論的)。

常見的內置函數(你可能已經很熟悉了):

  1. print
  2. len
  3. str
  4. int
  5. float
  6. list
  7. tuple
  8. dict
  9. set
  10. range

經常被新的Python編程者所忽略的內置函數:

  1. sum
  2. enumerate
  3. zip
  4. bool
  5. reversed
  6. sorted
  7. min
  8. max
  9. any
  10. all

還有5個通常被忽略的內置函數,我建議你自己去了解它們,因為它們使調試更容易: dir、vars、breakpoint、type和help。

除了上面的25個內置函數之外,我們還將在稍後的“以後學習並可能最終會學習的”和“你可能不需要這些”部分中簡要介紹其他的44個內置函數。

10個常見的內置函數

如果你一直在編寫Python代碼,那麼這些內置程序對你來說可能已經很熟悉了。

print

你已經知道了print函數。實現hello world需要用到print。

你可能不瞭解print所接受的各種關鍵字參數:

一些值得學習的Python內置函數(1)

你可以自己查看print函數。

len

在Python中,我們不寫像my_list.length()或my_string.length()這樣的函數; 相反,我們會奇怪地(至少對於新的python開發者來說)使用len(my_list)和len(my_string)。

一些值得學習的Python內置函數(1)

無論你是否喜歡這個類似於操作符的len函數,你都必須使用它,所以你需要習慣它。

str

與許多其他編程語言不同,你不能在Python中連接字符串和數字。

一些值得學習的Python內置函數(1)

Python拒絕將3個整數強制作為一個字符串,所以我們需要自己手動執行,使用內置的str函數(技術上來說是類,但正如我所說的,我將所有這些都稱為函數):

一些值得學習的Python內置函數(1)

int

你是否有用戶輸入並需要將其轉換為數字?那你就需要int函數!

int函數可以將字符串轉換為整數:

一些值得學習的Python內置函數(1)

你還可以使用int將浮點數截斷為整數:

"

在我教的每一節Python入門課上,經常都會被問道像“我們如何才能知道所有這些”這樣的問題。

通常還伴隨著這些問題:

  1. Python中有很多函數,記住這些函數的最好方法是什麼?
  2. 學習我們日常需要的函數,如enumerate 和 range,最好的方法是什麼?
  3. 你是如何知道Python中解決問題的所有方法的?你記下來了嗎?

有幾十個內置函數和類,數百個工具捆綁在Python的標準庫中,以及PyPI上的數千個第三方庫。任何人都不可能記住所有這些東西。

我建議你對你的知識進行分類:

  1. 我應該記住的東西,這樣我就能很好地理解它們
  2. 我應該知道的東西,這樣我以後才能更有效地查找它們
  3. 我根本不應該為之煩惱的東西,除非有一天我需要它們

將這個方法記在腦海中,我們來瀏覽Python文檔中的內置函數頁面。

這將是一篇很長的文章,所以在下一節中我將鏈接到5個子部分和20個特定的內置函數,所以如果你有時間或者正在尋找一個內置函數,你可以提前跳過去查看。

你應該瞭解哪些內置組件?

我估計大多數Python開發人員只需要大約30個內置函數,但是哪30個取決於你實際使用Python做什麼。

我們將以鳥瞰的方式來看看Python中的所有的69個內置函數。

我將嘗試把這些內置組件分成五類:

  1. 眾所周知: 大多數python初學者會因為需要而很快地接觸到這些內置組件
  2. 初學者所忽略的: 瞭解這些函數很有用,但是當你是Python新手時,就會很容易忽略它們
  3. 稍後再學習的: 瞭解這些內置組件通常很有用,但是當/如果你需要它們時,你就會找到它們
  4. 也許最終會學的: 這些東西遲早會派上用場,但只是在特定的情況下
  5. 你可能不需要這些: 除非你在做一些相當專業的事情,否則你不太可能會需要這些

類別1和類別2中的內置函數幾乎是所有Python程序員最終都應該學習的基本內置函數。類別3和類別4中的內置函數是專門的內置函數,它們通常非常有用,但是你對它們的需求會根據你對Python的使用情況而有所不同。類別5是神祕的內置函數,當你需要它們時,這可能非常方便,但是許多Python程序員可能永遠都不需要它們。

Python高手請注意: 我將把所有這些內置組件都稱為函數,儘管其中的27個實際上並不是函數(如我的函數和callables文章中所討論的)。

常見的內置函數(你可能已經很熟悉了):

  1. print
  2. len
  3. str
  4. int
  5. float
  6. list
  7. tuple
  8. dict
  9. set
  10. range

經常被新的Python編程者所忽略的內置函數:

  1. sum
  2. enumerate
  3. zip
  4. bool
  5. reversed
  6. sorted
  7. min
  8. max
  9. any
  10. all

還有5個通常被忽略的內置函數,我建議你自己去了解它們,因為它們使調試更容易: dir、vars、breakpoint、type和help。

除了上面的25個內置函數之外,我們還將在稍後的“以後學習並可能最終會學習的”和“你可能不需要這些”部分中簡要介紹其他的44個內置函數。

10個常見的內置函數

如果你一直在編寫Python代碼,那麼這些內置程序對你來說可能已經很熟悉了。

print

你已經知道了print函數。實現hello world需要用到print。

你可能不瞭解print所接受的各種關鍵字參數:

一些值得學習的Python內置函數(1)

你可以自己查看print函數。

len

在Python中,我們不寫像my_list.length()或my_string.length()這樣的函數; 相反,我們會奇怪地(至少對於新的python開發者來說)使用len(my_list)和len(my_string)。

一些值得學習的Python內置函數(1)

無論你是否喜歡這個類似於操作符的len函數,你都必須使用它,所以你需要習慣它。

str

與許多其他編程語言不同,你不能在Python中連接字符串和數字。

一些值得學習的Python內置函數(1)

Python拒絕將3個整數強制作為一個字符串,所以我們需要自己手動執行,使用內置的str函數(技術上來說是類,但正如我所說的,我將所有這些都稱為函數):

一些值得學習的Python內置函數(1)

int

你是否有用戶輸入並需要將其轉換為數字?那你就需要int函數!

int函數可以將字符串轉換為整數:

一些值得學習的Python內置函數(1)

你還可以使用int將浮點數截斷為整數:

一些值得學習的Python內置函數(1)

注意,如果你在進行除法運算時需要截斷,//操作符可能更合適(儘管它對負數的運行情況會不同):int(3 / 2) == 3 // 2。

float

你要轉換為數字的字符串實際上不是一個整數嗎?那麼你將使用float而不是int來進行轉換。

"

在我教的每一節Python入門課上,經常都會被問道像“我們如何才能知道所有這些”這樣的問題。

通常還伴隨著這些問題:

  1. Python中有很多函數,記住這些函數的最好方法是什麼?
  2. 學習我們日常需要的函數,如enumerate 和 range,最好的方法是什麼?
  3. 你是如何知道Python中解決問題的所有方法的?你記下來了嗎?

有幾十個內置函數和類,數百個工具捆綁在Python的標準庫中,以及PyPI上的數千個第三方庫。任何人都不可能記住所有這些東西。

我建議你對你的知識進行分類:

  1. 我應該記住的東西,這樣我就能很好地理解它們
  2. 我應該知道的東西,這樣我以後才能更有效地查找它們
  3. 我根本不應該為之煩惱的東西,除非有一天我需要它們

將這個方法記在腦海中,我們來瀏覽Python文檔中的內置函數頁面。

這將是一篇很長的文章,所以在下一節中我將鏈接到5個子部分和20個特定的內置函數,所以如果你有時間或者正在尋找一個內置函數,你可以提前跳過去查看。

你應該瞭解哪些內置組件?

我估計大多數Python開發人員只需要大約30個內置函數,但是哪30個取決於你實際使用Python做什麼。

我們將以鳥瞰的方式來看看Python中的所有的69個內置函數。

我將嘗試把這些內置組件分成五類:

  1. 眾所周知: 大多數python初學者會因為需要而很快地接觸到這些內置組件
  2. 初學者所忽略的: 瞭解這些函數很有用,但是當你是Python新手時,就會很容易忽略它們
  3. 稍後再學習的: 瞭解這些內置組件通常很有用,但是當/如果你需要它們時,你就會找到它們
  4. 也許最終會學的: 這些東西遲早會派上用場,但只是在特定的情況下
  5. 你可能不需要這些: 除非你在做一些相當專業的事情,否則你不太可能會需要這些

類別1和類別2中的內置函數幾乎是所有Python程序員最終都應該學習的基本內置函數。類別3和類別4中的內置函數是專門的內置函數,它們通常非常有用,但是你對它們的需求會根據你對Python的使用情況而有所不同。類別5是神祕的內置函數,當你需要它們時,這可能非常方便,但是許多Python程序員可能永遠都不需要它們。

Python高手請注意: 我將把所有這些內置組件都稱為函數,儘管其中的27個實際上並不是函數(如我的函數和callables文章中所討論的)。

常見的內置函數(你可能已經很熟悉了):

  1. print
  2. len
  3. str
  4. int
  5. float
  6. list
  7. tuple
  8. dict
  9. set
  10. range

經常被新的Python編程者所忽略的內置函數:

  1. sum
  2. enumerate
  3. zip
  4. bool
  5. reversed
  6. sorted
  7. min
  8. max
  9. any
  10. all

還有5個通常被忽略的內置函數,我建議你自己去了解它們,因為它們使調試更容易: dir、vars、breakpoint、type和help。

除了上面的25個內置函數之外,我們還將在稍後的“以後學習並可能最終會學習的”和“你可能不需要這些”部分中簡要介紹其他的44個內置函數。

10個常見的內置函數

如果你一直在編寫Python代碼,那麼這些內置程序對你來說可能已經很熟悉了。

print

你已經知道了print函數。實現hello world需要用到print。

你可能不瞭解print所接受的各種關鍵字參數:

一些值得學習的Python內置函數(1)

你可以自己查看print函數。

len

在Python中,我們不寫像my_list.length()或my_string.length()這樣的函數; 相反,我們會奇怪地(至少對於新的python開發者來說)使用len(my_list)和len(my_string)。

一些值得學習的Python內置函數(1)

無論你是否喜歡這個類似於操作符的len函數,你都必須使用它,所以你需要習慣它。

str

與許多其他編程語言不同,你不能在Python中連接字符串和數字。

一些值得學習的Python內置函數(1)

Python拒絕將3個整數強制作為一個字符串,所以我們需要自己手動執行,使用內置的str函數(技術上來說是類,但正如我所說的,我將所有這些都稱為函數):

一些值得學習的Python內置函數(1)

int

你是否有用戶輸入並需要將其轉換為數字?那你就需要int函數!

int函數可以將字符串轉換為整數:

一些值得學習的Python內置函數(1)

你還可以使用int將浮點數截斷為整數:

一些值得學習的Python內置函數(1)

注意,如果你在進行除法運算時需要截斷,//操作符可能更合適(儘管它對負數的運行情況會不同):int(3 / 2) == 3 // 2。

float

你要轉換為數字的字符串實際上不是一個整數嗎?那麼你將使用float而不是int來進行轉換。

一些值得學習的Python內置函數(1)

你還可以使用float將整數轉換為浮點數。

在python2中,我們常常使用float將整數轉換為浮點數來強制進行浮點除法而不是整數除法。“整數除法”在Python 3中已經不存在了(除非你專門使用//運算符),因此我們不再需要float來實現這個目的。如果你一旦在Python3代碼中看到float(x) / y,你就可以把它改成x / y。

list

想要創建一個其他一些可迭代對象的列表嗎?

list函數就是做這些的:

"

在我教的每一節Python入門課上,經常都會被問道像“我們如何才能知道所有這些”這樣的問題。

通常還伴隨著這些問題:

  1. Python中有很多函數,記住這些函數的最好方法是什麼?
  2. 學習我們日常需要的函數,如enumerate 和 range,最好的方法是什麼?
  3. 你是如何知道Python中解決問題的所有方法的?你記下來了嗎?

有幾十個內置函數和類,數百個工具捆綁在Python的標準庫中,以及PyPI上的數千個第三方庫。任何人都不可能記住所有這些東西。

我建議你對你的知識進行分類:

  1. 我應該記住的東西,這樣我就能很好地理解它們
  2. 我應該知道的東西,這樣我以後才能更有效地查找它們
  3. 我根本不應該為之煩惱的東西,除非有一天我需要它們

將這個方法記在腦海中,我們來瀏覽Python文檔中的內置函數頁面。

這將是一篇很長的文章,所以在下一節中我將鏈接到5個子部分和20個特定的內置函數,所以如果你有時間或者正在尋找一個內置函數,你可以提前跳過去查看。

你應該瞭解哪些內置組件?

我估計大多數Python開發人員只需要大約30個內置函數,但是哪30個取決於你實際使用Python做什麼。

我們將以鳥瞰的方式來看看Python中的所有的69個內置函數。

我將嘗試把這些內置組件分成五類:

  1. 眾所周知: 大多數python初學者會因為需要而很快地接觸到這些內置組件
  2. 初學者所忽略的: 瞭解這些函數很有用,但是當你是Python新手時,就會很容易忽略它們
  3. 稍後再學習的: 瞭解這些內置組件通常很有用,但是當/如果你需要它們時,你就會找到它們
  4. 也許最終會學的: 這些東西遲早會派上用場,但只是在特定的情況下
  5. 你可能不需要這些: 除非你在做一些相當專業的事情,否則你不太可能會需要這些

類別1和類別2中的內置函數幾乎是所有Python程序員最終都應該學習的基本內置函數。類別3和類別4中的內置函數是專門的內置函數,它們通常非常有用,但是你對它們的需求會根據你對Python的使用情況而有所不同。類別5是神祕的內置函數,當你需要它們時,這可能非常方便,但是許多Python程序員可能永遠都不需要它們。

Python高手請注意: 我將把所有這些內置組件都稱為函數,儘管其中的27個實際上並不是函數(如我的函數和callables文章中所討論的)。

常見的內置函數(你可能已經很熟悉了):

  1. print
  2. len
  3. str
  4. int
  5. float
  6. list
  7. tuple
  8. dict
  9. set
  10. range

經常被新的Python編程者所忽略的內置函數:

  1. sum
  2. enumerate
  3. zip
  4. bool
  5. reversed
  6. sorted
  7. min
  8. max
  9. any
  10. all

還有5個通常被忽略的內置函數,我建議你自己去了解它們,因為它們使調試更容易: dir、vars、breakpoint、type和help。

除了上面的25個內置函數之外,我們還將在稍後的“以後學習並可能最終會學習的”和“你可能不需要這些”部分中簡要介紹其他的44個內置函數。

10個常見的內置函數

如果你一直在編寫Python代碼,那麼這些內置程序對你來說可能已經很熟悉了。

print

你已經知道了print函數。實現hello world需要用到print。

你可能不瞭解print所接受的各種關鍵字參數:

一些值得學習的Python內置函數(1)

你可以自己查看print函數。

len

在Python中,我們不寫像my_list.length()或my_string.length()這樣的函數; 相反,我們會奇怪地(至少對於新的python開發者來說)使用len(my_list)和len(my_string)。

一些值得學習的Python內置函數(1)

無論你是否喜歡這個類似於操作符的len函數,你都必須使用它,所以你需要習慣它。

str

與許多其他編程語言不同,你不能在Python中連接字符串和數字。

一些值得學習的Python內置函數(1)

Python拒絕將3個整數強制作為一個字符串,所以我們需要自己手動執行,使用內置的str函數(技術上來說是類,但正如我所說的,我將所有這些都稱為函數):

一些值得學習的Python內置函數(1)

int

你是否有用戶輸入並需要將其轉換為數字?那你就需要int函數!

int函數可以將字符串轉換為整數:

一些值得學習的Python內置函數(1)

你還可以使用int將浮點數截斷為整數:

一些值得學習的Python內置函數(1)

注意,如果你在進行除法運算時需要截斷,//操作符可能更合適(儘管它對負數的運行情況會不同):int(3 / 2) == 3 // 2。

float

你要轉換為數字的字符串實際上不是一個整數嗎?那麼你將使用float而不是int來進行轉換。

一些值得學習的Python內置函數(1)

你還可以使用float將整數轉換為浮點數。

在python2中,我們常常使用float將整數轉換為浮點數來強制進行浮點除法而不是整數除法。“整數除法”在Python 3中已經不存在了(除非你專門使用//運算符),因此我們不再需要float來實現這個目的。如果你一旦在Python3代碼中看到float(x) / y,你就可以把它改成x / y。

list

想要創建一個其他一些可迭代對象的列表嗎?

list函數就是做這些的:

一些值得學習的Python內置函數(1)

如果你知道你在處理一個列表,你可以使用copy方法來創建一個該列表的新副本:

"

在我教的每一節Python入門課上,經常都會被問道像“我們如何才能知道所有這些”這樣的問題。

通常還伴隨著這些問題:

  1. Python中有很多函數,記住這些函數的最好方法是什麼?
  2. 學習我們日常需要的函數,如enumerate 和 range,最好的方法是什麼?
  3. 你是如何知道Python中解決問題的所有方法的?你記下來了嗎?

有幾十個內置函數和類,數百個工具捆綁在Python的標準庫中,以及PyPI上的數千個第三方庫。任何人都不可能記住所有這些東西。

我建議你對你的知識進行分類:

  1. 我應該記住的東西,這樣我就能很好地理解它們
  2. 我應該知道的東西,這樣我以後才能更有效地查找它們
  3. 我根本不應該為之煩惱的東西,除非有一天我需要它們

將這個方法記在腦海中,我們來瀏覽Python文檔中的內置函數頁面。

這將是一篇很長的文章,所以在下一節中我將鏈接到5個子部分和20個特定的內置函數,所以如果你有時間或者正在尋找一個內置函數,你可以提前跳過去查看。

你應該瞭解哪些內置組件?

我估計大多數Python開發人員只需要大約30個內置函數,但是哪30個取決於你實際使用Python做什麼。

我們將以鳥瞰的方式來看看Python中的所有的69個內置函數。

我將嘗試把這些內置組件分成五類:

  1. 眾所周知: 大多數python初學者會因為需要而很快地接觸到這些內置組件
  2. 初學者所忽略的: 瞭解這些函數很有用,但是當你是Python新手時,就會很容易忽略它們
  3. 稍後再學習的: 瞭解這些內置組件通常很有用,但是當/如果你需要它們時,你就會找到它們
  4. 也許最終會學的: 這些東西遲早會派上用場,但只是在特定的情況下
  5. 你可能不需要這些: 除非你在做一些相當專業的事情,否則你不太可能會需要這些

類別1和類別2中的內置函數幾乎是所有Python程序員最終都應該學習的基本內置函數。類別3和類別4中的內置函數是專門的內置函數,它們通常非常有用,但是你對它們的需求會根據你對Python的使用情況而有所不同。類別5是神祕的內置函數,當你需要它們時,這可能非常方便,但是許多Python程序員可能永遠都不需要它們。

Python高手請注意: 我將把所有這些內置組件都稱為函數,儘管其中的27個實際上並不是函數(如我的函數和callables文章中所討論的)。

常見的內置函數(你可能已經很熟悉了):

  1. print
  2. len
  3. str
  4. int
  5. float
  6. list
  7. tuple
  8. dict
  9. set
  10. range

經常被新的Python編程者所忽略的內置函數:

  1. sum
  2. enumerate
  3. zip
  4. bool
  5. reversed
  6. sorted
  7. min
  8. max
  9. any
  10. all

還有5個通常被忽略的內置函數,我建議你自己去了解它們,因為它們使調試更容易: dir、vars、breakpoint、type和help。

除了上面的25個內置函數之外,我們還將在稍後的“以後學習並可能最終會學習的”和“你可能不需要這些”部分中簡要介紹其他的44個內置函數。

10個常見的內置函數

如果你一直在編寫Python代碼,那麼這些內置程序對你來說可能已經很熟悉了。

print

你已經知道了print函數。實現hello world需要用到print。

你可能不瞭解print所接受的各種關鍵字參數:

一些值得學習的Python內置函數(1)

你可以自己查看print函數。

len

在Python中,我們不寫像my_list.length()或my_string.length()這樣的函數; 相反,我們會奇怪地(至少對於新的python開發者來說)使用len(my_list)和len(my_string)。

一些值得學習的Python內置函數(1)

無論你是否喜歡這個類似於操作符的len函數,你都必須使用它,所以你需要習慣它。

str

與許多其他編程語言不同,你不能在Python中連接字符串和數字。

一些值得學習的Python內置函數(1)

Python拒絕將3個整數強制作為一個字符串,所以我們需要自己手動執行,使用內置的str函數(技術上來說是類,但正如我所說的,我將所有這些都稱為函數):

一些值得學習的Python內置函數(1)

int

你是否有用戶輸入並需要將其轉換為數字?那你就需要int函數!

int函數可以將字符串轉換為整數:

一些值得學習的Python內置函數(1)

你還可以使用int將浮點數截斷為整數:

一些值得學習的Python內置函數(1)

注意,如果你在進行除法運算時需要截斷,//操作符可能更合適(儘管它對負數的運行情況會不同):int(3 / 2) == 3 // 2。

float

你要轉換為數字的字符串實際上不是一個整數嗎?那麼你將使用float而不是int來進行轉換。

一些值得學習的Python內置函數(1)

你還可以使用float將整數轉換為浮點數。

在python2中,我們常常使用float將整數轉換為浮點數來強制進行浮點除法而不是整數除法。“整數除法”在Python 3中已經不存在了(除非你專門使用//運算符),因此我們不再需要float來實現這個目的。如果你一旦在Python3代碼中看到float(x) / y,你就可以把它改成x / y。

list

想要創建一個其他一些可迭代對象的列表嗎?

list函數就是做這些的:

一些值得學習的Python內置函數(1)

如果你知道你在處理一個列表,你可以使用copy方法來創建一個該列表的新副本:

一些值得學習的Python內置函數(1)

但是如果你不知道你正在處理的可迭代對象是什麼,list函數是循環一個可迭代對象並複製它的更通用的方法:

"

在我教的每一節Python入門課上,經常都會被問道像“我們如何才能知道所有這些”這樣的問題。

通常還伴隨著這些問題:

  1. Python中有很多函數,記住這些函數的最好方法是什麼?
  2. 學習我們日常需要的函數,如enumerate 和 range,最好的方法是什麼?
  3. 你是如何知道Python中解決問題的所有方法的?你記下來了嗎?

有幾十個內置函數和類,數百個工具捆綁在Python的標準庫中,以及PyPI上的數千個第三方庫。任何人都不可能記住所有這些東西。

我建議你對你的知識進行分類:

  1. 我應該記住的東西,這樣我就能很好地理解它們
  2. 我應該知道的東西,這樣我以後才能更有效地查找它們
  3. 我根本不應該為之煩惱的東西,除非有一天我需要它們

將這個方法記在腦海中,我們來瀏覽Python文檔中的內置函數頁面。

這將是一篇很長的文章,所以在下一節中我將鏈接到5個子部分和20個特定的內置函數,所以如果你有時間或者正在尋找一個內置函數,你可以提前跳過去查看。

你應該瞭解哪些內置組件?

我估計大多數Python開發人員只需要大約30個內置函數,但是哪30個取決於你實際使用Python做什麼。

我們將以鳥瞰的方式來看看Python中的所有的69個內置函數。

我將嘗試把這些內置組件分成五類:

  1. 眾所周知: 大多數python初學者會因為需要而很快地接觸到這些內置組件
  2. 初學者所忽略的: 瞭解這些函數很有用,但是當你是Python新手時,就會很容易忽略它們
  3. 稍後再學習的: 瞭解這些內置組件通常很有用,但是當/如果你需要它們時,你就會找到它們
  4. 也許最終會學的: 這些東西遲早會派上用場,但只是在特定的情況下
  5. 你可能不需要這些: 除非你在做一些相當專業的事情,否則你不太可能會需要這些

類別1和類別2中的內置函數幾乎是所有Python程序員最終都應該學習的基本內置函數。類別3和類別4中的內置函數是專門的內置函數,它們通常非常有用,但是你對它們的需求會根據你對Python的使用情況而有所不同。類別5是神祕的內置函數,當你需要它們時,這可能非常方便,但是許多Python程序員可能永遠都不需要它們。

Python高手請注意: 我將把所有這些內置組件都稱為函數,儘管其中的27個實際上並不是函數(如我的函數和callables文章中所討論的)。

常見的內置函數(你可能已經很熟悉了):

  1. print
  2. len
  3. str
  4. int
  5. float
  6. list
  7. tuple
  8. dict
  9. set
  10. range

經常被新的Python編程者所忽略的內置函數:

  1. sum
  2. enumerate
  3. zip
  4. bool
  5. reversed
  6. sorted
  7. min
  8. max
  9. any
  10. all

還有5個通常被忽略的內置函數,我建議你自己去了解它們,因為它們使調試更容易: dir、vars、breakpoint、type和help。

除了上面的25個內置函數之外,我們還將在稍後的“以後學習並可能最終會學習的”和“你可能不需要這些”部分中簡要介紹其他的44個內置函數。

10個常見的內置函數

如果你一直在編寫Python代碼,那麼這些內置程序對你來說可能已經很熟悉了。

print

你已經知道了print函數。實現hello world需要用到print。

你可能不瞭解print所接受的各種關鍵字參數:

一些值得學習的Python內置函數(1)

你可以自己查看print函數。

len

在Python中,我們不寫像my_list.length()或my_string.length()這樣的函數; 相反,我們會奇怪地(至少對於新的python開發者來說)使用len(my_list)和len(my_string)。

一些值得學習的Python內置函數(1)

無論你是否喜歡這個類似於操作符的len函數,你都必須使用它,所以你需要習慣它。

str

與許多其他編程語言不同,你不能在Python中連接字符串和數字。

一些值得學習的Python內置函數(1)

Python拒絕將3個整數強制作為一個字符串,所以我們需要自己手動執行,使用內置的str函數(技術上來說是類,但正如我所說的,我將所有這些都稱為函數):

一些值得學習的Python內置函數(1)

int

你是否有用戶輸入並需要將其轉換為數字?那你就需要int函數!

int函數可以將字符串轉換為整數:

一些值得學習的Python內置函數(1)

你還可以使用int將浮點數截斷為整數:

一些值得學習的Python內置函數(1)

注意,如果你在進行除法運算時需要截斷,//操作符可能更合適(儘管它對負數的運行情況會不同):int(3 / 2) == 3 // 2。

float

你要轉換為數字的字符串實際上不是一個整數嗎?那麼你將使用float而不是int來進行轉換。

一些值得學習的Python內置函數(1)

你還可以使用float將整數轉換為浮點數。

在python2中,我們常常使用float將整數轉換為浮點數來強制進行浮點除法而不是整數除法。“整數除法”在Python 3中已經不存在了(除非你專門使用//運算符),因此我們不再需要float來實現這個目的。如果你一旦在Python3代碼中看到float(x) / y,你就可以把它改成x / y。

list

想要創建一個其他一些可迭代對象的列表嗎?

list函數就是做這些的:

一些值得學習的Python內置函數(1)

如果你知道你在處理一個列表,你可以使用copy方法來創建一個該列表的新副本:

一些值得學習的Python內置函數(1)

但是如果你不知道你正在處理的可迭代對象是什麼,list函數是循環一個可迭代對象並複製它的更通用的方法:

一些值得學習的Python內置函數(1)

你也可以使用一個列表推導式,但我不推薦這樣做。

注意,當你想要創建一個空列表時,建議使用列表字面量語法(那些[]括號):

"

在我教的每一節Python入門課上,經常都會被問道像“我們如何才能知道所有這些”這樣的問題。

通常還伴隨著這些問題:

  1. Python中有很多函數,記住這些函數的最好方法是什麼?
  2. 學習我們日常需要的函數,如enumerate 和 range,最好的方法是什麼?
  3. 你是如何知道Python中解決問題的所有方法的?你記下來了嗎?

有幾十個內置函數和類,數百個工具捆綁在Python的標準庫中,以及PyPI上的數千個第三方庫。任何人都不可能記住所有這些東西。

我建議你對你的知識進行分類:

  1. 我應該記住的東西,這樣我就能很好地理解它們
  2. 我應該知道的東西,這樣我以後才能更有效地查找它們
  3. 我根本不應該為之煩惱的東西,除非有一天我需要它們

將這個方法記在腦海中,我們來瀏覽Python文檔中的內置函數頁面。

這將是一篇很長的文章,所以在下一節中我將鏈接到5個子部分和20個特定的內置函數,所以如果你有時間或者正在尋找一個內置函數,你可以提前跳過去查看。

你應該瞭解哪些內置組件?

我估計大多數Python開發人員只需要大約30個內置函數,但是哪30個取決於你實際使用Python做什麼。

我們將以鳥瞰的方式來看看Python中的所有的69個內置函數。

我將嘗試把這些內置組件分成五類:

  1. 眾所周知: 大多數python初學者會因為需要而很快地接觸到這些內置組件
  2. 初學者所忽略的: 瞭解這些函數很有用,但是當你是Python新手時,就會很容易忽略它們
  3. 稍後再學習的: 瞭解這些內置組件通常很有用,但是當/如果你需要它們時,你就會找到它們
  4. 也許最終會學的: 這些東西遲早會派上用場,但只是在特定的情況下
  5. 你可能不需要這些: 除非你在做一些相當專業的事情,否則你不太可能會需要這些

類別1和類別2中的內置函數幾乎是所有Python程序員最終都應該學習的基本內置函數。類別3和類別4中的內置函數是專門的內置函數,它們通常非常有用,但是你對它們的需求會根據你對Python的使用情況而有所不同。類別5是神祕的內置函數,當你需要它們時,這可能非常方便,但是許多Python程序員可能永遠都不需要它們。

Python高手請注意: 我將把所有這些內置組件都稱為函數,儘管其中的27個實際上並不是函數(如我的函數和callables文章中所討論的)。

常見的內置函數(你可能已經很熟悉了):

  1. print
  2. len
  3. str
  4. int
  5. float
  6. list
  7. tuple
  8. dict
  9. set
  10. range

經常被新的Python編程者所忽略的內置函數:

  1. sum
  2. enumerate
  3. zip
  4. bool
  5. reversed
  6. sorted
  7. min
  8. max
  9. any
  10. all

還有5個通常被忽略的內置函數,我建議你自己去了解它們,因為它們使調試更容易: dir、vars、breakpoint、type和help。

除了上面的25個內置函數之外,我們還將在稍後的“以後學習並可能最終會學習的”和“你可能不需要這些”部分中簡要介紹其他的44個內置函數。

10個常見的內置函數

如果你一直在編寫Python代碼,那麼這些內置程序對你來說可能已經很熟悉了。

print

你已經知道了print函數。實現hello world需要用到print。

你可能不瞭解print所接受的各種關鍵字參數:

一些值得學習的Python內置函數(1)

你可以自己查看print函數。

len

在Python中,我們不寫像my_list.length()或my_string.length()這樣的函數; 相反,我們會奇怪地(至少對於新的python開發者來說)使用len(my_list)和len(my_string)。

一些值得學習的Python內置函數(1)

無論你是否喜歡這個類似於操作符的len函數,你都必須使用它,所以你需要習慣它。

str

與許多其他編程語言不同,你不能在Python中連接字符串和數字。

一些值得學習的Python內置函數(1)

Python拒絕將3個整數強制作為一個字符串,所以我們需要自己手動執行,使用內置的str函數(技術上來說是類,但正如我所說的,我將所有這些都稱為函數):

一些值得學習的Python內置函數(1)

int

你是否有用戶輸入並需要將其轉換為數字?那你就需要int函數!

int函數可以將字符串轉換為整數:

一些值得學習的Python內置函數(1)

你還可以使用int將浮點數截斷為整數:

一些值得學習的Python內置函數(1)

注意,如果你在進行除法運算時需要截斷,//操作符可能更合適(儘管它對負數的運行情況會不同):int(3 / 2) == 3 // 2。

float

你要轉換為數字的字符串實際上不是一個整數嗎?那麼你將使用float而不是int來進行轉換。

一些值得學習的Python內置函數(1)

你還可以使用float將整數轉換為浮點數。

在python2中,我們常常使用float將整數轉換為浮點數來強制進行浮點除法而不是整數除法。“整數除法”在Python 3中已經不存在了(除非你專門使用//運算符),因此我們不再需要float來實現這個目的。如果你一旦在Python3代碼中看到float(x) / y,你就可以把它改成x / y。

list

想要創建一個其他一些可迭代對象的列表嗎?

list函數就是做這些的:

一些值得學習的Python內置函數(1)

如果你知道你在處理一個列表,你可以使用copy方法來創建一個該列表的新副本:

一些值得學習的Python內置函數(1)

但是如果你不知道你正在處理的可迭代對象是什麼,list函數是循環一個可迭代對象並複製它的更通用的方法:

一些值得學習的Python內置函數(1)

你也可以使用一個列表推導式,但我不推薦這樣做。

注意,當你想要創建一個空列表時,建議使用列表字面量語法(那些[]括號):

一些值得學習的Python內置函數(1)

使用[]被認為更符合習慣,因為那些方括號([])實際上看起來像一個Python列表。

tuple

tuple函數與list函數非常相似,只是它會創建元組:

"

在我教的每一節Python入門課上,經常都會被問道像“我們如何才能知道所有這些”這樣的問題。

通常還伴隨著這些問題:

  1. Python中有很多函數,記住這些函數的最好方法是什麼?
  2. 學習我們日常需要的函數,如enumerate 和 range,最好的方法是什麼?
  3. 你是如何知道Python中解決問題的所有方法的?你記下來了嗎?

有幾十個內置函數和類,數百個工具捆綁在Python的標準庫中,以及PyPI上的數千個第三方庫。任何人都不可能記住所有這些東西。

我建議你對你的知識進行分類:

  1. 我應該記住的東西,這樣我就能很好地理解它們
  2. 我應該知道的東西,這樣我以後才能更有效地查找它們
  3. 我根本不應該為之煩惱的東西,除非有一天我需要它們

將這個方法記在腦海中,我們來瀏覽Python文檔中的內置函數頁面。

這將是一篇很長的文章,所以在下一節中我將鏈接到5個子部分和20個特定的內置函數,所以如果你有時間或者正在尋找一個內置函數,你可以提前跳過去查看。

你應該瞭解哪些內置組件?

我估計大多數Python開發人員只需要大約30個內置函數,但是哪30個取決於你實際使用Python做什麼。

我們將以鳥瞰的方式來看看Python中的所有的69個內置函數。

我將嘗試把這些內置組件分成五類:

  1. 眾所周知: 大多數python初學者會因為需要而很快地接觸到這些內置組件
  2. 初學者所忽略的: 瞭解這些函數很有用,但是當你是Python新手時,就會很容易忽略它們
  3. 稍後再學習的: 瞭解這些內置組件通常很有用,但是當/如果你需要它們時,你就會找到它們
  4. 也許最終會學的: 這些東西遲早會派上用場,但只是在特定的情況下
  5. 你可能不需要這些: 除非你在做一些相當專業的事情,否則你不太可能會需要這些

類別1和類別2中的內置函數幾乎是所有Python程序員最終都應該學習的基本內置函數。類別3和類別4中的內置函數是專門的內置函數,它們通常非常有用,但是你對它們的需求會根據你對Python的使用情況而有所不同。類別5是神祕的內置函數,當你需要它們時,這可能非常方便,但是許多Python程序員可能永遠都不需要它們。

Python高手請注意: 我將把所有這些內置組件都稱為函數,儘管其中的27個實際上並不是函數(如我的函數和callables文章中所討論的)。

常見的內置函數(你可能已經很熟悉了):

  1. print
  2. len
  3. str
  4. int
  5. float
  6. list
  7. tuple
  8. dict
  9. set
  10. range

經常被新的Python編程者所忽略的內置函數:

  1. sum
  2. enumerate
  3. zip
  4. bool
  5. reversed
  6. sorted
  7. min
  8. max
  9. any
  10. all

還有5個通常被忽略的內置函數,我建議你自己去了解它們,因為它們使調試更容易: dir、vars、breakpoint、type和help。

除了上面的25個內置函數之外,我們還將在稍後的“以後學習並可能最終會學習的”和“你可能不需要這些”部分中簡要介紹其他的44個內置函數。

10個常見的內置函數

如果你一直在編寫Python代碼,那麼這些內置程序對你來說可能已經很熟悉了。

print

你已經知道了print函數。實現hello world需要用到print。

你可能不瞭解print所接受的各種關鍵字參數:

一些值得學習的Python內置函數(1)

你可以自己查看print函數。

len

在Python中,我們不寫像my_list.length()或my_string.length()這樣的函數; 相反,我們會奇怪地(至少對於新的python開發者來說)使用len(my_list)和len(my_string)。

一些值得學習的Python內置函數(1)

無論你是否喜歡這個類似於操作符的len函數,你都必須使用它,所以你需要習慣它。

str

與許多其他編程語言不同,你不能在Python中連接字符串和數字。

一些值得學習的Python內置函數(1)

Python拒絕將3個整數強制作為一個字符串,所以我們需要自己手動執行,使用內置的str函數(技術上來說是類,但正如我所說的,我將所有這些都稱為函數):

一些值得學習的Python內置函數(1)

int

你是否有用戶輸入並需要將其轉換為數字?那你就需要int函數!

int函數可以將字符串轉換為整數:

一些值得學習的Python內置函數(1)

你還可以使用int將浮點數截斷為整數:

一些值得學習的Python內置函數(1)

注意,如果你在進行除法運算時需要截斷,//操作符可能更合適(儘管它對負數的運行情況會不同):int(3 / 2) == 3 // 2。

float

你要轉換為數字的字符串實際上不是一個整數嗎?那麼你將使用float而不是int來進行轉換。

一些值得學習的Python內置函數(1)

你還可以使用float將整數轉換為浮點數。

在python2中,我們常常使用float將整數轉換為浮點數來強制進行浮點除法而不是整數除法。“整數除法”在Python 3中已經不存在了(除非你專門使用//運算符),因此我們不再需要float來實現這個目的。如果你一旦在Python3代碼中看到float(x) / y,你就可以把它改成x / y。

list

想要創建一個其他一些可迭代對象的列表嗎?

list函數就是做這些的:

一些值得學習的Python內置函數(1)

如果你知道你在處理一個列表,你可以使用copy方法來創建一個該列表的新副本:

一些值得學習的Python內置函數(1)

但是如果你不知道你正在處理的可迭代對象是什麼,list函數是循環一個可迭代對象並複製它的更通用的方法:

一些值得學習的Python內置函數(1)

你也可以使用一個列表推導式,但我不推薦這樣做。

注意,當你想要創建一個空列表時,建議使用列表字面量語法(那些[]括號):

一些值得學習的Python內置函數(1)

使用[]被認為更符合習慣,因為那些方括號([])實際上看起來像一個Python列表。

tuple

tuple函數與list函數非常相似,只是它會創建元組:

一些值得學習的Python內置函數(1)

如果你需要一個元組而不是列表,比如是因為你正在嘗試創建一個可在字典的鍵中使用的可哈希集合,那你可能會想要使用tuple而不是list。

dict

dict函數用於創建一個新字典。

與list和tuple類似,dict函數等價於在一個具有鍵值對的迭代器上進行循環,並從中生成一個字典。

給定一個兩項元組的列表:

"

在我教的每一節Python入門課上,經常都會被問道像“我們如何才能知道所有這些”這樣的問題。

通常還伴隨著這些問題:

  1. Python中有很多函數,記住這些函數的最好方法是什麼?
  2. 學習我們日常需要的函數,如enumerate 和 range,最好的方法是什麼?
  3. 你是如何知道Python中解決問題的所有方法的?你記下來了嗎?

有幾十個內置函數和類,數百個工具捆綁在Python的標準庫中,以及PyPI上的數千個第三方庫。任何人都不可能記住所有這些東西。

我建議你對你的知識進行分類:

  1. 我應該記住的東西,這樣我就能很好地理解它們
  2. 我應該知道的東西,這樣我以後才能更有效地查找它們
  3. 我根本不應該為之煩惱的東西,除非有一天我需要它們

將這個方法記在腦海中,我們來瀏覽Python文檔中的內置函數頁面。

這將是一篇很長的文章,所以在下一節中我將鏈接到5個子部分和20個特定的內置函數,所以如果你有時間或者正在尋找一個內置函數,你可以提前跳過去查看。

你應該瞭解哪些內置組件?

我估計大多數Python開發人員只需要大約30個內置函數,但是哪30個取決於你實際使用Python做什麼。

我們將以鳥瞰的方式來看看Python中的所有的69個內置函數。

我將嘗試把這些內置組件分成五類:

  1. 眾所周知: 大多數python初學者會因為需要而很快地接觸到這些內置組件
  2. 初學者所忽略的: 瞭解這些函數很有用,但是當你是Python新手時,就會很容易忽略它們
  3. 稍後再學習的: 瞭解這些內置組件通常很有用,但是當/如果你需要它們時,你就會找到它們
  4. 也許最終會學的: 這些東西遲早會派上用場,但只是在特定的情況下
  5. 你可能不需要這些: 除非你在做一些相當專業的事情,否則你不太可能會需要這些

類別1和類別2中的內置函數幾乎是所有Python程序員最終都應該學習的基本內置函數。類別3和類別4中的內置函數是專門的內置函數,它們通常非常有用,但是你對它們的需求會根據你對Python的使用情況而有所不同。類別5是神祕的內置函數,當你需要它們時,這可能非常方便,但是許多Python程序員可能永遠都不需要它們。

Python高手請注意: 我將把所有這些內置組件都稱為函數,儘管其中的27個實際上並不是函數(如我的函數和callables文章中所討論的)。

常見的內置函數(你可能已經很熟悉了):

  1. print
  2. len
  3. str
  4. int
  5. float
  6. list
  7. tuple
  8. dict
  9. set
  10. range

經常被新的Python編程者所忽略的內置函數:

  1. sum
  2. enumerate
  3. zip
  4. bool
  5. reversed
  6. sorted
  7. min
  8. max
  9. any
  10. all

還有5個通常被忽略的內置函數,我建議你自己去了解它們,因為它們使調試更容易: dir、vars、breakpoint、type和help。

除了上面的25個內置函數之外,我們還將在稍後的“以後學習並可能最終會學習的”和“你可能不需要這些”部分中簡要介紹其他的44個內置函數。

10個常見的內置函數

如果你一直在編寫Python代碼,那麼這些內置程序對你來說可能已經很熟悉了。

print

你已經知道了print函數。實現hello world需要用到print。

你可能不瞭解print所接受的各種關鍵字參數:

一些值得學習的Python內置函數(1)

你可以自己查看print函數。

len

在Python中,我們不寫像my_list.length()或my_string.length()這樣的函數; 相反,我們會奇怪地(至少對於新的python開發者來說)使用len(my_list)和len(my_string)。

一些值得學習的Python內置函數(1)

無論你是否喜歡這個類似於操作符的len函數,你都必須使用它,所以你需要習慣它。

str

與許多其他編程語言不同,你不能在Python中連接字符串和數字。

一些值得學習的Python內置函數(1)

Python拒絕將3個整數強制作為一個字符串,所以我們需要自己手動執行,使用內置的str函數(技術上來說是類,但正如我所說的,我將所有這些都稱為函數):

一些值得學習的Python內置函數(1)

int

你是否有用戶輸入並需要將其轉換為數字?那你就需要int函數!

int函數可以將字符串轉換為整數:

一些值得學習的Python內置函數(1)

你還可以使用int將浮點數截斷為整數:

一些值得學習的Python內置函數(1)

注意,如果你在進行除法運算時需要截斷,//操作符可能更合適(儘管它對負數的運行情況會不同):int(3 / 2) == 3 // 2。

float

你要轉換為數字的字符串實際上不是一個整數嗎?那麼你將使用float而不是int來進行轉換。

一些值得學習的Python內置函數(1)

你還可以使用float將整數轉換為浮點數。

在python2中,我們常常使用float將整數轉換為浮點數來強制進行浮點除法而不是整數除法。“整數除法”在Python 3中已經不存在了(除非你專門使用//運算符),因此我們不再需要float來實現這個目的。如果你一旦在Python3代碼中看到float(x) / y,你就可以把它改成x / y。

list

想要創建一個其他一些可迭代對象的列表嗎?

list函數就是做這些的:

一些值得學習的Python內置函數(1)

如果你知道你在處理一個列表,你可以使用copy方法來創建一個該列表的新副本:

一些值得學習的Python內置函數(1)

但是如果你不知道你正在處理的可迭代對象是什麼,list函數是循環一個可迭代對象並複製它的更通用的方法:

一些值得學習的Python內置函數(1)

你也可以使用一個列表推導式,但我不推薦這樣做。

注意,當你想要創建一個空列表時,建議使用列表字面量語法(那些[]括號):

一些值得學習的Python內置函數(1)

使用[]被認為更符合習慣,因為那些方括號([])實際上看起來像一個Python列表。

tuple

tuple函數與list函數非常相似,只是它會創建元組:

一些值得學習的Python內置函數(1)

如果你需要一個元組而不是列表,比如是因為你正在嘗試創建一個可在字典的鍵中使用的可哈希集合,那你可能會想要使用tuple而不是list。

dict

dict函數用於創建一個新字典。

與list和tuple類似,dict函數等價於在一個具有鍵值對的迭代器上進行循環,並從中生成一個字典。

給定一個兩項元組的列表:

一些值得學習的Python內置函數(1)

這個:

"

在我教的每一節Python入門課上,經常都會被問道像“我們如何才能知道所有這些”這樣的問題。

通常還伴隨著這些問題:

  1. Python中有很多函數,記住這些函數的最好方法是什麼?
  2. 學習我們日常需要的函數,如enumerate 和 range,最好的方法是什麼?
  3. 你是如何知道Python中解決問題的所有方法的?你記下來了嗎?

有幾十個內置函數和類,數百個工具捆綁在Python的標準庫中,以及PyPI上的數千個第三方庫。任何人都不可能記住所有這些東西。

我建議你對你的知識進行分類:

  1. 我應該記住的東西,這樣我就能很好地理解它們
  2. 我應該知道的東西,這樣我以後才能更有效地查找它們
  3. 我根本不應該為之煩惱的東西,除非有一天我需要它們

將這個方法記在腦海中,我們來瀏覽Python文檔中的內置函數頁面。

這將是一篇很長的文章,所以在下一節中我將鏈接到5個子部分和20個特定的內置函數,所以如果你有時間或者正在尋找一個內置函數,你可以提前跳過去查看。

你應該瞭解哪些內置組件?

我估計大多數Python開發人員只需要大約30個內置函數,但是哪30個取決於你實際使用Python做什麼。

我們將以鳥瞰的方式來看看Python中的所有的69個內置函數。

我將嘗試把這些內置組件分成五類:

  1. 眾所周知: 大多數python初學者會因為需要而很快地接觸到這些內置組件
  2. 初學者所忽略的: 瞭解這些函數很有用,但是當你是Python新手時,就會很容易忽略它們
  3. 稍後再學習的: 瞭解這些內置組件通常很有用,但是當/如果你需要它們時,你就會找到它們
  4. 也許最終會學的: 這些東西遲早會派上用場,但只是在特定的情況下
  5. 你可能不需要這些: 除非你在做一些相當專業的事情,否則你不太可能會需要這些

類別1和類別2中的內置函數幾乎是所有Python程序員最終都應該學習的基本內置函數。類別3和類別4中的內置函數是專門的內置函數,它們通常非常有用,但是你對它們的需求會根據你對Python的使用情況而有所不同。類別5是神祕的內置函數,當你需要它們時,這可能非常方便,但是許多Python程序員可能永遠都不需要它們。

Python高手請注意: 我將把所有這些內置組件都稱為函數,儘管其中的27個實際上並不是函數(如我的函數和callables文章中所討論的)。

常見的內置函數(你可能已經很熟悉了):

  1. print
  2. len
  3. str
  4. int
  5. float
  6. list
  7. tuple
  8. dict
  9. set
  10. range

經常被新的Python編程者所忽略的內置函數:

  1. sum
  2. enumerate
  3. zip
  4. bool
  5. reversed
  6. sorted
  7. min
  8. max
  9. any
  10. all

還有5個通常被忽略的內置函數,我建議你自己去了解它們,因為它們使調試更容易: dir、vars、breakpoint、type和help。

除了上面的25個內置函數之外,我們還將在稍後的“以後學習並可能最終會學習的”和“你可能不需要這些”部分中簡要介紹其他的44個內置函數。

10個常見的內置函數

如果你一直在編寫Python代碼,那麼這些內置程序對你來說可能已經很熟悉了。

print

你已經知道了print函數。實現hello world需要用到print。

你可能不瞭解print所接受的各種關鍵字參數:

一些值得學習的Python內置函數(1)

你可以自己查看print函數。

len

在Python中,我們不寫像my_list.length()或my_string.length()這樣的函數; 相反,我們會奇怪地(至少對於新的python開發者來說)使用len(my_list)和len(my_string)。

一些值得學習的Python內置函數(1)

無論你是否喜歡這個類似於操作符的len函數,你都必須使用它,所以你需要習慣它。

str

與許多其他編程語言不同,你不能在Python中連接字符串和數字。

一些值得學習的Python內置函數(1)

Python拒絕將3個整數強制作為一個字符串,所以我們需要自己手動執行,使用內置的str函數(技術上來說是類,但正如我所說的,我將所有這些都稱為函數):

一些值得學習的Python內置函數(1)

int

你是否有用戶輸入並需要將其轉換為數字?那你就需要int函數!

int函數可以將字符串轉換為整數:

一些值得學習的Python內置函數(1)

你還可以使用int將浮點數截斷為整數:

一些值得學習的Python內置函數(1)

注意,如果你在進行除法運算時需要截斷,//操作符可能更合適(儘管它對負數的運行情況會不同):int(3 / 2) == 3 // 2。

float

你要轉換為數字的字符串實際上不是一個整數嗎?那麼你將使用float而不是int來進行轉換。

一些值得學習的Python內置函數(1)

你還可以使用float將整數轉換為浮點數。

在python2中,我們常常使用float將整數轉換為浮點數來強制進行浮點除法而不是整數除法。“整數除法”在Python 3中已經不存在了(除非你專門使用//運算符),因此我們不再需要float來實現這個目的。如果你一旦在Python3代碼中看到float(x) / y,你就可以把它改成x / y。

list

想要創建一個其他一些可迭代對象的列表嗎?

list函數就是做這些的:

一些值得學習的Python內置函數(1)

如果你知道你在處理一個列表,你可以使用copy方法來創建一個該列表的新副本:

一些值得學習的Python內置函數(1)

但是如果你不知道你正在處理的可迭代對象是什麼,list函數是循環一個可迭代對象並複製它的更通用的方法:

一些值得學習的Python內置函數(1)

你也可以使用一個列表推導式,但我不推薦這樣做。

注意,當你想要創建一個空列表時,建議使用列表字面量語法(那些[]括號):

一些值得學習的Python內置函數(1)

使用[]被認為更符合習慣,因為那些方括號([])實際上看起來像一個Python列表。

tuple

tuple函數與list函數非常相似,只是它會創建元組:

一些值得學習的Python內置函數(1)

如果你需要一個元組而不是列表,比如是因為你正在嘗試創建一個可在字典的鍵中使用的可哈希集合,那你可能會想要使用tuple而不是list。

dict

dict函數用於創建一個新字典。

與list和tuple類似,dict函數等價於在一個具有鍵值對的迭代器上進行循環,並從中生成一個字典。

給定一個兩項元組的列表:

一些值得學習的Python內置函數(1)

這個:

一些值得學習的Python內置函數(1)

可以用dict函數代替來生成:

"

在我教的每一節Python入門課上,經常都會被問道像“我們如何才能知道所有這些”這樣的問題。

通常還伴隨著這些問題:

  1. Python中有很多函數,記住這些函數的最好方法是什麼?
  2. 學習我們日常需要的函數,如enumerate 和 range,最好的方法是什麼?
  3. 你是如何知道Python中解決問題的所有方法的?你記下來了嗎?

有幾十個內置函數和類,數百個工具捆綁在Python的標準庫中,以及PyPI上的數千個第三方庫。任何人都不可能記住所有這些東西。

我建議你對你的知識進行分類:

  1. 我應該記住的東西,這樣我就能很好地理解它們
  2. 我應該知道的東西,這樣我以後才能更有效地查找它們
  3. 我根本不應該為之煩惱的東西,除非有一天我需要它們

將這個方法記在腦海中,我們來瀏覽Python文檔中的內置函數頁面。

這將是一篇很長的文章,所以在下一節中我將鏈接到5個子部分和20個特定的內置函數,所以如果你有時間或者正在尋找一個內置函數,你可以提前跳過去查看。

你應該瞭解哪些內置組件?

我估計大多數Python開發人員只需要大約30個內置函數,但是哪30個取決於你實際使用Python做什麼。

我們將以鳥瞰的方式來看看Python中的所有的69個內置函數。

我將嘗試把這些內置組件分成五類:

  1. 眾所周知: 大多數python初學者會因為需要而很快地接觸到這些內置組件
  2. 初學者所忽略的: 瞭解這些函數很有用,但是當你是Python新手時,就會很容易忽略它們
  3. 稍後再學習的: 瞭解這些內置組件通常很有用,但是當/如果你需要它們時,你就會找到它們
  4. 也許最終會學的: 這些東西遲早會派上用場,但只是在特定的情況下
  5. 你可能不需要這些: 除非你在做一些相當專業的事情,否則你不太可能會需要這些

類別1和類別2中的內置函數幾乎是所有Python程序員最終都應該學習的基本內置函數。類別3和類別4中的內置函數是專門的內置函數,它們通常非常有用,但是你對它們的需求會根據你對Python的使用情況而有所不同。類別5是神祕的內置函數,當你需要它們時,這可能非常方便,但是許多Python程序員可能永遠都不需要它們。

Python高手請注意: 我將把所有這些內置組件都稱為函數,儘管其中的27個實際上並不是函數(如我的函數和callables文章中所討論的)。

常見的內置函數(你可能已經很熟悉了):

  1. print
  2. len
  3. str
  4. int
  5. float
  6. list
  7. tuple
  8. dict
  9. set
  10. range

經常被新的Python編程者所忽略的內置函數:

  1. sum
  2. enumerate
  3. zip
  4. bool
  5. reversed
  6. sorted
  7. min
  8. max
  9. any
  10. all

還有5個通常被忽略的內置函數,我建議你自己去了解它們,因為它們使調試更容易: dir、vars、breakpoint、type和help。

除了上面的25個內置函數之外,我們還將在稍後的“以後學習並可能最終會學習的”和“你可能不需要這些”部分中簡要介紹其他的44個內置函數。

10個常見的內置函數

如果你一直在編寫Python代碼,那麼這些內置程序對你來說可能已經很熟悉了。

print

你已經知道了print函數。實現hello world需要用到print。

你可能不瞭解print所接受的各種關鍵字參數:

一些值得學習的Python內置函數(1)

你可以自己查看print函數。

len

在Python中,我們不寫像my_list.length()或my_string.length()這樣的函數; 相反,我們會奇怪地(至少對於新的python開發者來說)使用len(my_list)和len(my_string)。

一些值得學習的Python內置函數(1)

無論你是否喜歡這個類似於操作符的len函數,你都必須使用它,所以你需要習慣它。

str

與許多其他編程語言不同,你不能在Python中連接字符串和數字。

一些值得學習的Python內置函數(1)

Python拒絕將3個整數強制作為一個字符串,所以我們需要自己手動執行,使用內置的str函數(技術上來說是類,但正如我所說的,我將所有這些都稱為函數):

一些值得學習的Python內置函數(1)

int

你是否有用戶輸入並需要將其轉換為數字?那你就需要int函數!

int函數可以將字符串轉換為整數:

一些值得學習的Python內置函數(1)

你還可以使用int將浮點數截斷為整數:

一些值得學習的Python內置函數(1)

注意,如果你在進行除法運算時需要截斷,//操作符可能更合適(儘管它對負數的運行情況會不同):int(3 / 2) == 3 // 2。

float

你要轉換為數字的字符串實際上不是一個整數嗎?那麼你將使用float而不是int來進行轉換。

一些值得學習的Python內置函數(1)

你還可以使用float將整數轉換為浮點數。

在python2中,我們常常使用float將整數轉換為浮點數來強制進行浮點除法而不是整數除法。“整數除法”在Python 3中已經不存在了(除非你專門使用//運算符),因此我們不再需要float來實現這個目的。如果你一旦在Python3代碼中看到float(x) / y,你就可以把它改成x / y。

list

想要創建一個其他一些可迭代對象的列表嗎?

list函數就是做這些的:

一些值得學習的Python內置函數(1)

如果你知道你在處理一個列表,你可以使用copy方法來創建一個該列表的新副本:

一些值得學習的Python內置函數(1)

但是如果你不知道你正在處理的可迭代對象是什麼,list函數是循環一個可迭代對象並複製它的更通用的方法:

一些值得學習的Python內置函數(1)

你也可以使用一個列表推導式,但我不推薦這樣做。

注意,當你想要創建一個空列表時,建議使用列表字面量語法(那些[]括號):

一些值得學習的Python內置函數(1)

使用[]被認為更符合習慣,因為那些方括號([])實際上看起來像一個Python列表。

tuple

tuple函數與list函數非常相似,只是它會創建元組:

一些值得學習的Python內置函數(1)

如果你需要一個元組而不是列表,比如是因為你正在嘗試創建一個可在字典的鍵中使用的可哈希集合,那你可能會想要使用tuple而不是list。

dict

dict函數用於創建一個新字典。

與list和tuple類似,dict函數等價於在一個具有鍵值對的迭代器上進行循環,並從中生成一個字典。

給定一個兩項元組的列表:

一些值得學習的Python內置函數(1)

這個:

一些值得學習的Python內置函數(1)

可以用dict函數代替來生成:

一些值得學習的Python內置函數(1)

dict函數接受兩種類型的參數:

  1. 另一個字典(通用術語是映射),在這種情況下,該字典將被複制
  2. 一個由鍵值元組組成的列表(更準確地說,是由兩項迭代器組成的一個迭代器),在這種情況下,將從這些元素構造一個新字典

所以這也是可行的:

"

在我教的每一節Python入門課上,經常都會被問道像“我們如何才能知道所有這些”這樣的問題。

通常還伴隨著這些問題:

  1. Python中有很多函數,記住這些函數的最好方法是什麼?
  2. 學習我們日常需要的函數,如enumerate 和 range,最好的方法是什麼?
  3. 你是如何知道Python中解決問題的所有方法的?你記下來了嗎?

有幾十個內置函數和類,數百個工具捆綁在Python的標準庫中,以及PyPI上的數千個第三方庫。任何人都不可能記住所有這些東西。

我建議你對你的知識進行分類:

  1. 我應該記住的東西,這樣我就能很好地理解它們
  2. 我應該知道的東西,這樣我以後才能更有效地查找它們
  3. 我根本不應該為之煩惱的東西,除非有一天我需要它們

將這個方法記在腦海中,我們來瀏覽Python文檔中的內置函數頁面。

這將是一篇很長的文章,所以在下一節中我將鏈接到5個子部分和20個特定的內置函數,所以如果你有時間或者正在尋找一個內置函數,你可以提前跳過去查看。

你應該瞭解哪些內置組件?

我估計大多數Python開發人員只需要大約30個內置函數,但是哪30個取決於你實際使用Python做什麼。

我們將以鳥瞰的方式來看看Python中的所有的69個內置函數。

我將嘗試把這些內置組件分成五類:

  1. 眾所周知: 大多數python初學者會因為需要而很快地接觸到這些內置組件
  2. 初學者所忽略的: 瞭解這些函數很有用,但是當你是Python新手時,就會很容易忽略它們
  3. 稍後再學習的: 瞭解這些內置組件通常很有用,但是當/如果你需要它們時,你就會找到它們
  4. 也許最終會學的: 這些東西遲早會派上用場,但只是在特定的情況下
  5. 你可能不需要這些: 除非你在做一些相當專業的事情,否則你不太可能會需要這些

類別1和類別2中的內置函數幾乎是所有Python程序員最終都應該學習的基本內置函數。類別3和類別4中的內置函數是專門的內置函數,它們通常非常有用,但是你對它們的需求會根據你對Python的使用情況而有所不同。類別5是神祕的內置函數,當你需要它們時,這可能非常方便,但是許多Python程序員可能永遠都不需要它們。

Python高手請注意: 我將把所有這些內置組件都稱為函數,儘管其中的27個實際上並不是函數(如我的函數和callables文章中所討論的)。

常見的內置函數(你可能已經很熟悉了):

  1. print
  2. len
  3. str
  4. int
  5. float
  6. list
  7. tuple
  8. dict
  9. set
  10. range

經常被新的Python編程者所忽略的內置函數:

  1. sum
  2. enumerate
  3. zip
  4. bool
  5. reversed
  6. sorted
  7. min
  8. max
  9. any
  10. all

還有5個通常被忽略的內置函數,我建議你自己去了解它們,因為它們使調試更容易: dir、vars、breakpoint、type和help。

除了上面的25個內置函數之外,我們還將在稍後的“以後學習並可能最終會學習的”和“你可能不需要這些”部分中簡要介紹其他的44個內置函數。

10個常見的內置函數

如果你一直在編寫Python代碼,那麼這些內置程序對你來說可能已經很熟悉了。

print

你已經知道了print函數。實現hello world需要用到print。

你可能不瞭解print所接受的各種關鍵字參數:

一些值得學習的Python內置函數(1)

你可以自己查看print函數。

len

在Python中,我們不寫像my_list.length()或my_string.length()這樣的函數; 相反,我們會奇怪地(至少對於新的python開發者來說)使用len(my_list)和len(my_string)。

一些值得學習的Python內置函數(1)

無論你是否喜歡這個類似於操作符的len函數,你都必須使用它,所以你需要習慣它。

str

與許多其他編程語言不同,你不能在Python中連接字符串和數字。

一些值得學習的Python內置函數(1)

Python拒絕將3個整數強制作為一個字符串,所以我們需要自己手動執行,使用內置的str函數(技術上來說是類,但正如我所說的,我將所有這些都稱為函數):

一些值得學習的Python內置函數(1)

int

你是否有用戶輸入並需要將其轉換為數字?那你就需要int函數!

int函數可以將字符串轉換為整數:

一些值得學習的Python內置函數(1)

你還可以使用int將浮點數截斷為整數:

一些值得學習的Python內置函數(1)

注意,如果你在進行除法運算時需要截斷,//操作符可能更合適(儘管它對負數的運行情況會不同):int(3 / 2) == 3 // 2。

float

你要轉換為數字的字符串實際上不是一個整數嗎?那麼你將使用float而不是int來進行轉換。

一些值得學習的Python內置函數(1)

你還可以使用float將整數轉換為浮點數。

在python2中,我們常常使用float將整數轉換為浮點數來強制進行浮點除法而不是整數除法。“整數除法”在Python 3中已經不存在了(除非你專門使用//運算符),因此我們不再需要float來實現這個目的。如果你一旦在Python3代碼中看到float(x) / y,你就可以把它改成x / y。

list

想要創建一個其他一些可迭代對象的列表嗎?

list函數就是做這些的:

一些值得學習的Python內置函數(1)

如果你知道你在處理一個列表,你可以使用copy方法來創建一個該列表的新副本:

一些值得學習的Python內置函數(1)

但是如果你不知道你正在處理的可迭代對象是什麼,list函數是循環一個可迭代對象並複製它的更通用的方法:

一些值得學習的Python內置函數(1)

你也可以使用一個列表推導式,但我不推薦這樣做。

注意,當你想要創建一個空列表時,建議使用列表字面量語法(那些[]括號):

一些值得學習的Python內置函數(1)

使用[]被認為更符合習慣,因為那些方括號([])實際上看起來像一個Python列表。

tuple

tuple函數與list函數非常相似,只是它會創建元組:

一些值得學習的Python內置函數(1)

如果你需要一個元組而不是列表,比如是因為你正在嘗試創建一個可在字典的鍵中使用的可哈希集合,那你可能會想要使用tuple而不是list。

dict

dict函數用於創建一個新字典。

與list和tuple類似,dict函數等價於在一個具有鍵值對的迭代器上進行循環,並從中生成一個字典。

給定一個兩項元組的列表:

一些值得學習的Python內置函數(1)

這個:

一些值得學習的Python內置函數(1)

可以用dict函數代替來生成:

一些值得學習的Python內置函數(1)

dict函數接受兩種類型的參數:

  1. 另一個字典(通用術語是映射),在這種情況下,該字典將被複制
  2. 一個由鍵值元組組成的列表(更準確地說,是由兩項迭代器組成的一個迭代器),在這種情況下,將從這些元素構造一個新字典

所以這也是可行的:

一些值得學習的Python內置函數(1)

dict函數還可以接受關鍵字參數來創建一個帶有基於字符串鍵的字典:

"

在我教的每一節Python入門課上,經常都會被問道像“我們如何才能知道所有這些”這樣的問題。

通常還伴隨著這些問題:

  1. Python中有很多函數,記住這些函數的最好方法是什麼?
  2. 學習我們日常需要的函數,如enumerate 和 range,最好的方法是什麼?
  3. 你是如何知道Python中解決問題的所有方法的?你記下來了嗎?

有幾十個內置函數和類,數百個工具捆綁在Python的標準庫中,以及PyPI上的數千個第三方庫。任何人都不可能記住所有這些東西。

我建議你對你的知識進行分類:

  1. 我應該記住的東西,這樣我就能很好地理解它們
  2. 我應該知道的東西,這樣我以後才能更有效地查找它們
  3. 我根本不應該為之煩惱的東西,除非有一天我需要它們

將這個方法記在腦海中,我們來瀏覽Python文檔中的內置函數頁面。

這將是一篇很長的文章,所以在下一節中我將鏈接到5個子部分和20個特定的內置函數,所以如果你有時間或者正在尋找一個內置函數,你可以提前跳過去查看。

你應該瞭解哪些內置組件?

我估計大多數Python開發人員只需要大約30個內置函數,但是哪30個取決於你實際使用Python做什麼。

我們將以鳥瞰的方式來看看Python中的所有的69個內置函數。

我將嘗試把這些內置組件分成五類:

  1. 眾所周知: 大多數python初學者會因為需要而很快地接觸到這些內置組件
  2. 初學者所忽略的: 瞭解這些函數很有用,但是當你是Python新手時,就會很容易忽略它們
  3. 稍後再學習的: 瞭解這些內置組件通常很有用,但是當/如果你需要它們時,你就會找到它們
  4. 也許最終會學的: 這些東西遲早會派上用場,但只是在特定的情況下
  5. 你可能不需要這些: 除非你在做一些相當專業的事情,否則你不太可能會需要這些

類別1和類別2中的內置函數幾乎是所有Python程序員最終都應該學習的基本內置函數。類別3和類別4中的內置函數是專門的內置函數,它們通常非常有用,但是你對它們的需求會根據你對Python的使用情況而有所不同。類別5是神祕的內置函數,當你需要它們時,這可能非常方便,但是許多Python程序員可能永遠都不需要它們。

Python高手請注意: 我將把所有這些內置組件都稱為函數,儘管其中的27個實際上並不是函數(如我的函數和callables文章中所討論的)。

常見的內置函數(你可能已經很熟悉了):

  1. print
  2. len
  3. str
  4. int
  5. float
  6. list
  7. tuple
  8. dict
  9. set
  10. range

經常被新的Python編程者所忽略的內置函數:

  1. sum
  2. enumerate
  3. zip
  4. bool
  5. reversed
  6. sorted
  7. min
  8. max
  9. any
  10. all

還有5個通常被忽略的內置函數,我建議你自己去了解它們,因為它們使調試更容易: dir、vars、breakpoint、type和help。

除了上面的25個內置函數之外,我們還將在稍後的“以後學習並可能最終會學習的”和“你可能不需要這些”部分中簡要介紹其他的44個內置函數。

10個常見的內置函數

如果你一直在編寫Python代碼,那麼這些內置程序對你來說可能已經很熟悉了。

print

你已經知道了print函數。實現hello world需要用到print。

你可能不瞭解print所接受的各種關鍵字參數:

一些值得學習的Python內置函數(1)

你可以自己查看print函數。

len

在Python中,我們不寫像my_list.length()或my_string.length()這樣的函數; 相反,我們會奇怪地(至少對於新的python開發者來說)使用len(my_list)和len(my_string)。

一些值得學習的Python內置函數(1)

無論你是否喜歡這個類似於操作符的len函數,你都必須使用它,所以你需要習慣它。

str

與許多其他編程語言不同,你不能在Python中連接字符串和數字。

一些值得學習的Python內置函數(1)

Python拒絕將3個整數強制作為一個字符串,所以我們需要自己手動執行,使用內置的str函數(技術上來說是類,但正如我所說的,我將所有這些都稱為函數):

一些值得學習的Python內置函數(1)

int

你是否有用戶輸入並需要將其轉換為數字?那你就需要int函數!

int函數可以將字符串轉換為整數:

一些值得學習的Python內置函數(1)

你還可以使用int將浮點數截斷為整數:

一些值得學習的Python內置函數(1)

注意,如果你在進行除法運算時需要截斷,//操作符可能更合適(儘管它對負數的運行情況會不同):int(3 / 2) == 3 // 2。

float

你要轉換為數字的字符串實際上不是一個整數嗎?那麼你將使用float而不是int來進行轉換。

一些值得學習的Python內置函數(1)

你還可以使用float將整數轉換為浮點數。

在python2中,我們常常使用float將整數轉換為浮點數來強制進行浮點除法而不是整數除法。“整數除法”在Python 3中已經不存在了(除非你專門使用//運算符),因此我們不再需要float來實現這個目的。如果你一旦在Python3代碼中看到float(x) / y,你就可以把它改成x / y。

list

想要創建一個其他一些可迭代對象的列表嗎?

list函數就是做這些的:

一些值得學習的Python內置函數(1)

如果你知道你在處理一個列表,你可以使用copy方法來創建一個該列表的新副本:

一些值得學習的Python內置函數(1)

但是如果你不知道你正在處理的可迭代對象是什麼,list函數是循環一個可迭代對象並複製它的更通用的方法:

一些值得學習的Python內置函數(1)

你也可以使用一個列表推導式,但我不推薦這樣做。

注意,當你想要創建一個空列表時,建議使用列表字面量語法(那些[]括號):

一些值得學習的Python內置函數(1)

使用[]被認為更符合習慣,因為那些方括號([])實際上看起來像一個Python列表。

tuple

tuple函數與list函數非常相似,只是它會創建元組:

一些值得學習的Python內置函數(1)

如果你需要一個元組而不是列表,比如是因為你正在嘗試創建一個可在字典的鍵中使用的可哈希集合,那你可能會想要使用tuple而不是list。

dict

dict函數用於創建一個新字典。

與list和tuple類似,dict函數等價於在一個具有鍵值對的迭代器上進行循環,並從中生成一個字典。

給定一個兩項元組的列表:

一些值得學習的Python內置函數(1)

這個:

一些值得學習的Python內置函數(1)

可以用dict函數代替來生成:

一些值得學習的Python內置函數(1)

dict函數接受兩種類型的參數:

  1. 另一個字典(通用術語是映射),在這種情況下,該字典將被複制
  2. 一個由鍵值元組組成的列表(更準確地說,是由兩項迭代器組成的一個迭代器),在這種情況下,將從這些元素構造一個新字典

所以這也是可行的:

一些值得學習的Python內置函數(1)

dict函數還可以接受關鍵字參數來創建一個帶有基於字符串鍵的字典:

一些值得學習的Python內置函數(1)

但我更喜歡用字典字面量來代替:

"

在我教的每一節Python入門課上,經常都會被問道像“我們如何才能知道所有這些”這樣的問題。

通常還伴隨著這些問題:

  1. Python中有很多函數,記住這些函數的最好方法是什麼?
  2. 學習我們日常需要的函數,如enumerate 和 range,最好的方法是什麼?
  3. 你是如何知道Python中解決問題的所有方法的?你記下來了嗎?

有幾十個內置函數和類,數百個工具捆綁在Python的標準庫中,以及PyPI上的數千個第三方庫。任何人都不可能記住所有這些東西。

我建議你對你的知識進行分類:

  1. 我應該記住的東西,這樣我就能很好地理解它們
  2. 我應該知道的東西,這樣我以後才能更有效地查找它們
  3. 我根本不應該為之煩惱的東西,除非有一天我需要它們

將這個方法記在腦海中,我們來瀏覽Python文檔中的內置函數頁面。

這將是一篇很長的文章,所以在下一節中我將鏈接到5個子部分和20個特定的內置函數,所以如果你有時間或者正在尋找一個內置函數,你可以提前跳過去查看。

你應該瞭解哪些內置組件?

我估計大多數Python開發人員只需要大約30個內置函數,但是哪30個取決於你實際使用Python做什麼。

我們將以鳥瞰的方式來看看Python中的所有的69個內置函數。

我將嘗試把這些內置組件分成五類:

  1. 眾所周知: 大多數python初學者會因為需要而很快地接觸到這些內置組件
  2. 初學者所忽略的: 瞭解這些函數很有用,但是當你是Python新手時,就會很容易忽略它們
  3. 稍後再學習的: 瞭解這些內置組件通常很有用,但是當/如果你需要它們時,你就會找到它們
  4. 也許最終會學的: 這些東西遲早會派上用場,但只是在特定的情況下
  5. 你可能不需要這些: 除非你在做一些相當專業的事情,否則你不太可能會需要這些

類別1和類別2中的內置函數幾乎是所有Python程序員最終都應該學習的基本內置函數。類別3和類別4中的內置函數是專門的內置函數,它們通常非常有用,但是你對它們的需求會根據你對Python的使用情況而有所不同。類別5是神祕的內置函數,當你需要它們時,這可能非常方便,但是許多Python程序員可能永遠都不需要它們。

Python高手請注意: 我將把所有這些內置組件都稱為函數,儘管其中的27個實際上並不是函數(如我的函數和callables文章中所討論的)。

常見的內置函數(你可能已經很熟悉了):

  1. print
  2. len
  3. str
  4. int
  5. float
  6. list
  7. tuple
  8. dict
  9. set
  10. range

經常被新的Python編程者所忽略的內置函數:

  1. sum
  2. enumerate
  3. zip
  4. bool
  5. reversed
  6. sorted
  7. min
  8. max
  9. any
  10. all

還有5個通常被忽略的內置函數,我建議你自己去了解它們,因為它們使調試更容易: dir、vars、breakpoint、type和help。

除了上面的25個內置函數之外,我們還將在稍後的“以後學習並可能最終會學習的”和“你可能不需要這些”部分中簡要介紹其他的44個內置函數。

10個常見的內置函數

如果你一直在編寫Python代碼,那麼這些內置程序對你來說可能已經很熟悉了。

print

你已經知道了print函數。實現hello world需要用到print。

你可能不瞭解print所接受的各種關鍵字參數:

一些值得學習的Python內置函數(1)

你可以自己查看print函數。

len

在Python中,我們不寫像my_list.length()或my_string.length()這樣的函數; 相反,我們會奇怪地(至少對於新的python開發者來說)使用len(my_list)和len(my_string)。

一些值得學習的Python內置函數(1)

無論你是否喜歡這個類似於操作符的len函數,你都必須使用它,所以你需要習慣它。

str

與許多其他編程語言不同,你不能在Python中連接字符串和數字。

一些值得學習的Python內置函數(1)

Python拒絕將3個整數強制作為一個字符串,所以我們需要自己手動執行,使用內置的str函數(技術上來說是類,但正如我所說的,我將所有這些都稱為函數):

一些值得學習的Python內置函數(1)

int

你是否有用戶輸入並需要將其轉換為數字?那你就需要int函數!

int函數可以將字符串轉換為整數:

一些值得學習的Python內置函數(1)

你還可以使用int將浮點數截斷為整數:

一些值得學習的Python內置函數(1)

注意,如果你在進行除法運算時需要截斷,//操作符可能更合適(儘管它對負數的運行情況會不同):int(3 / 2) == 3 // 2。

float

你要轉換為數字的字符串實際上不是一個整數嗎?那麼你將使用float而不是int來進行轉換。

一些值得學習的Python內置函數(1)

你還可以使用float將整數轉換為浮點數。

在python2中,我們常常使用float將整數轉換為浮點數來強制進行浮點除法而不是整數除法。“整數除法”在Python 3中已經不存在了(除非你專門使用//運算符),因此我們不再需要float來實現這個目的。如果你一旦在Python3代碼中看到float(x) / y,你就可以把它改成x / y。

list

想要創建一個其他一些可迭代對象的列表嗎?

list函數就是做這些的:

一些值得學習的Python內置函數(1)

如果你知道你在處理一個列表,你可以使用copy方法來創建一個該列表的新副本:

一些值得學習的Python內置函數(1)

但是如果你不知道你正在處理的可迭代對象是什麼,list函數是循環一個可迭代對象並複製它的更通用的方法:

一些值得學習的Python內置函數(1)

你也可以使用一個列表推導式,但我不推薦這樣做。

注意,當你想要創建一個空列表時,建議使用列表字面量語法(那些[]括號):

一些值得學習的Python內置函數(1)

使用[]被認為更符合習慣,因為那些方括號([])實際上看起來像一個Python列表。

tuple

tuple函數與list函數非常相似,只是它會創建元組:

一些值得學習的Python內置函數(1)

如果你需要一個元組而不是列表,比如是因為你正在嘗試創建一個可在字典的鍵中使用的可哈希集合,那你可能會想要使用tuple而不是list。

dict

dict函數用於創建一個新字典。

與list和tuple類似,dict函數等價於在一個具有鍵值對的迭代器上進行循環,並從中生成一個字典。

給定一個兩項元組的列表:

一些值得學習的Python內置函數(1)

這個:

一些值得學習的Python內置函數(1)

可以用dict函數代替來生成:

一些值得學習的Python內置函數(1)

dict函數接受兩種類型的參數:

  1. 另一個字典(通用術語是映射),在這種情況下,該字典將被複制
  2. 一個由鍵值元組組成的列表(更準確地說,是由兩項迭代器組成的一個迭代器),在這種情況下,將從這些元素構造一個新字典

所以這也是可行的:

一些值得學習的Python內置函數(1)

dict函數還可以接受關鍵字參數來創建一個帶有基於字符串鍵的字典:

一些值得學習的Python內置函數(1)

但我更喜歡用字典字面量來代替:

一些值得學習的Python內置函數(1)

字典字面量語法更靈活,速度更快,但最重要的是,我發現它更清楚地傳達了我們正在創建一個字典的事實。

就像list和tuple一樣,一個空字典也應該使用字面量語法來創建:

"

在我教的每一節Python入門課上,經常都會被問道像“我們如何才能知道所有這些”這樣的問題。

通常還伴隨著這些問題:

  1. Python中有很多函數,記住這些函數的最好方法是什麼?
  2. 學習我們日常需要的函數,如enumerate 和 range,最好的方法是什麼?
  3. 你是如何知道Python中解決問題的所有方法的?你記下來了嗎?

有幾十個內置函數和類,數百個工具捆綁在Python的標準庫中,以及PyPI上的數千個第三方庫。任何人都不可能記住所有這些東西。

我建議你對你的知識進行分類:

  1. 我應該記住的東西,這樣我就能很好地理解它們
  2. 我應該知道的東西,這樣我以後才能更有效地查找它們
  3. 我根本不應該為之煩惱的東西,除非有一天我需要它們

將這個方法記在腦海中,我們來瀏覽Python文檔中的內置函數頁面。

這將是一篇很長的文章,所以在下一節中我將鏈接到5個子部分和20個特定的內置函數,所以如果你有時間或者正在尋找一個內置函數,你可以提前跳過去查看。

你應該瞭解哪些內置組件?

我估計大多數Python開發人員只需要大約30個內置函數,但是哪30個取決於你實際使用Python做什麼。

我們將以鳥瞰的方式來看看Python中的所有的69個內置函數。

我將嘗試把這些內置組件分成五類:

  1. 眾所周知: 大多數python初學者會因為需要而很快地接觸到這些內置組件
  2. 初學者所忽略的: 瞭解這些函數很有用,但是當你是Python新手時,就會很容易忽略它們
  3. 稍後再學習的: 瞭解這些內置組件通常很有用,但是當/如果你需要它們時,你就會找到它們
  4. 也許最終會學的: 這些東西遲早會派上用場,但只是在特定的情況下
  5. 你可能不需要這些: 除非你在做一些相當專業的事情,否則你不太可能會需要這些

類別1和類別2中的內置函數幾乎是所有Python程序員最終都應該學習的基本內置函數。類別3和類別4中的內置函數是專門的內置函數,它們通常非常有用,但是你對它們的需求會根據你對Python的使用情況而有所不同。類別5是神祕的內置函數,當你需要它們時,這可能非常方便,但是許多Python程序員可能永遠都不需要它們。

Python高手請注意: 我將把所有這些內置組件都稱為函數,儘管其中的27個實際上並不是函數(如我的函數和callables文章中所討論的)。

常見的內置函數(你可能已經很熟悉了):

  1. print
  2. len
  3. str
  4. int
  5. float
  6. list
  7. tuple
  8. dict
  9. set
  10. range

經常被新的Python編程者所忽略的內置函數:

  1. sum
  2. enumerate
  3. zip
  4. bool
  5. reversed
  6. sorted
  7. min
  8. max
  9. any
  10. all

還有5個通常被忽略的內置函數,我建議你自己去了解它們,因為它們使調試更容易: dir、vars、breakpoint、type和help。

除了上面的25個內置函數之外,我們還將在稍後的“以後學習並可能最終會學習的”和“你可能不需要這些”部分中簡要介紹其他的44個內置函數。

10個常見的內置函數

如果你一直在編寫Python代碼,那麼這些內置程序對你來說可能已經很熟悉了。

print

你已經知道了print函數。實現hello world需要用到print。

你可能不瞭解print所接受的各種關鍵字參數:

一些值得學習的Python內置函數(1)

你可以自己查看print函數。

len

在Python中,我們不寫像my_list.length()或my_string.length()這樣的函數; 相反,我們會奇怪地(至少對於新的python開發者來說)使用len(my_list)和len(my_string)。

一些值得學習的Python內置函數(1)

無論你是否喜歡這個類似於操作符的len函數,你都必須使用它,所以你需要習慣它。

str

與許多其他編程語言不同,你不能在Python中連接字符串和數字。

一些值得學習的Python內置函數(1)

Python拒絕將3個整數強制作為一個字符串,所以我們需要自己手動執行,使用內置的str函數(技術上來說是類,但正如我所說的,我將所有這些都稱為函數):

一些值得學習的Python內置函數(1)

int

你是否有用戶輸入並需要將其轉換為數字?那你就需要int函數!

int函數可以將字符串轉換為整數:

一些值得學習的Python內置函數(1)

你還可以使用int將浮點數截斷為整數:

一些值得學習的Python內置函數(1)

注意,如果你在進行除法運算時需要截斷,//操作符可能更合適(儘管它對負數的運行情況會不同):int(3 / 2) == 3 // 2。

float

你要轉換為數字的字符串實際上不是一個整數嗎?那麼你將使用float而不是int來進行轉換。

一些值得學習的Python內置函數(1)

你還可以使用float將整數轉換為浮點數。

在python2中,我們常常使用float將整數轉換為浮點數來強制進行浮點除法而不是整數除法。“整數除法”在Python 3中已經不存在了(除非你專門使用//運算符),因此我們不再需要float來實現這個目的。如果你一旦在Python3代碼中看到float(x) / y,你就可以把它改成x / y。

list

想要創建一個其他一些可迭代對象的列表嗎?

list函數就是做這些的:

一些值得學習的Python內置函數(1)

如果你知道你在處理一個列表,你可以使用copy方法來創建一個該列表的新副本:

一些值得學習的Python內置函數(1)

但是如果你不知道你正在處理的可迭代對象是什麼,list函數是循環一個可迭代對象並複製它的更通用的方法:

一些值得學習的Python內置函數(1)

你也可以使用一個列表推導式,但我不推薦這樣做。

注意,當你想要創建一個空列表時,建議使用列表字面量語法(那些[]括號):

一些值得學習的Python內置函數(1)

使用[]被認為更符合習慣,因為那些方括號([])實際上看起來像一個Python列表。

tuple

tuple函數與list函數非常相似,只是它會創建元組:

一些值得學習的Python內置函數(1)

如果你需要一個元組而不是列表,比如是因為你正在嘗試創建一個可在字典的鍵中使用的可哈希集合,那你可能會想要使用tuple而不是list。

dict

dict函數用於創建一個新字典。

與list和tuple類似,dict函數等價於在一個具有鍵值對的迭代器上進行循環,並從中生成一個字典。

給定一個兩項元組的列表:

一些值得學習的Python內置函數(1)

這個:

一些值得學習的Python內置函數(1)

可以用dict函數代替來生成:

一些值得學習的Python內置函數(1)

dict函數接受兩種類型的參數:

  1. 另一個字典(通用術語是映射),在這種情況下,該字典將被複制
  2. 一個由鍵值元組組成的列表(更準確地說,是由兩項迭代器組成的一個迭代器),在這種情況下,將從這些元素構造一個新字典

所以這也是可行的:

一些值得學習的Python內置函數(1)

dict函數還可以接受關鍵字參數來創建一個帶有基於字符串鍵的字典:

一些值得學習的Python內置函數(1)

但我更喜歡用字典字面量來代替:

一些值得學習的Python內置函數(1)

字典字面量語法更靈活,速度更快,但最重要的是,我發現它更清楚地傳達了我們正在創建一個字典的事實。

就像list和tuple一樣,一個空字典也應該使用字面量語法來創建:

一些值得學習的Python內置函數(1)

使用{}稍微提高了CPU效率,但更重要的是,它更符合人們的習慣: 使用大括號({})創建字典是很常見的,但是dict出現的頻率要低得多。

set

set函數生會成一個新的集合,它接受一個帶有可哈希值的迭代器(字符串、數字或其他不可變類型),並返回一個set:

"

在我教的每一節Python入門課上,經常都會被問道像“我們如何才能知道所有這些”這樣的問題。

通常還伴隨著這些問題:

  1. Python中有很多函數,記住這些函數的最好方法是什麼?
  2. 學習我們日常需要的函數,如enumerate 和 range,最好的方法是什麼?
  3. 你是如何知道Python中解決問題的所有方法的?你記下來了嗎?

有幾十個內置函數和類,數百個工具捆綁在Python的標準庫中,以及PyPI上的數千個第三方庫。任何人都不可能記住所有這些東西。

我建議你對你的知識進行分類:

  1. 我應該記住的東西,這樣我就能很好地理解它們
  2. 我應該知道的東西,這樣我以後才能更有效地查找它們
  3. 我根本不應該為之煩惱的東西,除非有一天我需要它們

將這個方法記在腦海中,我們來瀏覽Python文檔中的內置函數頁面。

這將是一篇很長的文章,所以在下一節中我將鏈接到5個子部分和20個特定的內置函數,所以如果你有時間或者正在尋找一個內置函數,你可以提前跳過去查看。

你應該瞭解哪些內置組件?

我估計大多數Python開發人員只需要大約30個內置函數,但是哪30個取決於你實際使用Python做什麼。

我們將以鳥瞰的方式來看看Python中的所有的69個內置函數。

我將嘗試把這些內置組件分成五類:

  1. 眾所周知: 大多數python初學者會因為需要而很快地接觸到這些內置組件
  2. 初學者所忽略的: 瞭解這些函數很有用,但是當你是Python新手時,就會很容易忽略它們
  3. 稍後再學習的: 瞭解這些內置組件通常很有用,但是當/如果你需要它們時,你就會找到它們
  4. 也許最終會學的: 這些東西遲早會派上用場,但只是在特定的情況下
  5. 你可能不需要這些: 除非你在做一些相當專業的事情,否則你不太可能會需要這些

類別1和類別2中的內置函數幾乎是所有Python程序員最終都應該學習的基本內置函數。類別3和類別4中的內置函數是專門的內置函數,它們通常非常有用,但是你對它們的需求會根據你對Python的使用情況而有所不同。類別5是神祕的內置函數,當你需要它們時,這可能非常方便,但是許多Python程序員可能永遠都不需要它們。

Python高手請注意: 我將把所有這些內置組件都稱為函數,儘管其中的27個實際上並不是函數(如我的函數和callables文章中所討論的)。

常見的內置函數(你可能已經很熟悉了):

  1. print
  2. len
  3. str
  4. int
  5. float
  6. list
  7. tuple
  8. dict
  9. set
  10. range

經常被新的Python編程者所忽略的內置函數:

  1. sum
  2. enumerate
  3. zip
  4. bool
  5. reversed
  6. sorted
  7. min
  8. max
  9. any
  10. all

還有5個通常被忽略的內置函數,我建議你自己去了解它們,因為它們使調試更容易: dir、vars、breakpoint、type和help。

除了上面的25個內置函數之外,我們還將在稍後的“以後學習並可能最終會學習的”和“你可能不需要這些”部分中簡要介紹其他的44個內置函數。

10個常見的內置函數

如果你一直在編寫Python代碼,那麼這些內置程序對你來說可能已經很熟悉了。

print

你已經知道了print函數。實現hello world需要用到print。

你可能不瞭解print所接受的各種關鍵字參數:

一些值得學習的Python內置函數(1)

你可以自己查看print函數。

len

在Python中,我們不寫像my_list.length()或my_string.length()這樣的函數; 相反,我們會奇怪地(至少對於新的python開發者來說)使用len(my_list)和len(my_string)。

一些值得學習的Python內置函數(1)

無論你是否喜歡這個類似於操作符的len函數,你都必須使用它,所以你需要習慣它。

str

與許多其他編程語言不同,你不能在Python中連接字符串和數字。

一些值得學習的Python內置函數(1)

Python拒絕將3個整數強制作為一個字符串,所以我們需要自己手動執行,使用內置的str函數(技術上來說是類,但正如我所說的,我將所有這些都稱為函數):

一些值得學習的Python內置函數(1)

int

你是否有用戶輸入並需要將其轉換為數字?那你就需要int函數!

int函數可以將字符串轉換為整數:

一些值得學習的Python內置函數(1)

你還可以使用int將浮點數截斷為整數:

一些值得學習的Python內置函數(1)

注意,如果你在進行除法運算時需要截斷,//操作符可能更合適(儘管它對負數的運行情況會不同):int(3 / 2) == 3 // 2。

float

你要轉換為數字的字符串實際上不是一個整數嗎?那麼你將使用float而不是int來進行轉換。

一些值得學習的Python內置函數(1)

你還可以使用float將整數轉換為浮點數。

在python2中,我們常常使用float將整數轉換為浮點數來強制進行浮點除法而不是整數除法。“整數除法”在Python 3中已經不存在了(除非你專門使用//運算符),因此我們不再需要float來實現這個目的。如果你一旦在Python3代碼中看到float(x) / y,你就可以把它改成x / y。

list

想要創建一個其他一些可迭代對象的列表嗎?

list函數就是做這些的:

一些值得學習的Python內置函數(1)

如果你知道你在處理一個列表,你可以使用copy方法來創建一個該列表的新副本:

一些值得學習的Python內置函數(1)

但是如果你不知道你正在處理的可迭代對象是什麼,list函數是循環一個可迭代對象並複製它的更通用的方法:

一些值得學習的Python內置函數(1)

你也可以使用一個列表推導式,但我不推薦這樣做。

注意,當你想要創建一個空列表時,建議使用列表字面量語法(那些[]括號):

一些值得學習的Python內置函數(1)

使用[]被認為更符合習慣,因為那些方括號([])實際上看起來像一個Python列表。

tuple

tuple函數與list函數非常相似,只是它會創建元組:

一些值得學習的Python內置函數(1)

如果你需要一個元組而不是列表,比如是因為你正在嘗試創建一個可在字典的鍵中使用的可哈希集合,那你可能會想要使用tuple而不是list。

dict

dict函數用於創建一個新字典。

與list和tuple類似,dict函數等價於在一個具有鍵值對的迭代器上進行循環,並從中生成一個字典。

給定一個兩項元組的列表:

一些值得學習的Python內置函數(1)

這個:

一些值得學習的Python內置函數(1)

可以用dict函數代替來生成:

一些值得學習的Python內置函數(1)

dict函數接受兩種類型的參數:

  1. 另一個字典(通用術語是映射),在這種情況下,該字典將被複制
  2. 一個由鍵值元組組成的列表(更準確地說,是由兩項迭代器組成的一個迭代器),在這種情況下,將從這些元素構造一個新字典

所以這也是可行的:

一些值得學習的Python內置函數(1)

dict函數還可以接受關鍵字參數來創建一個帶有基於字符串鍵的字典:

一些值得學習的Python內置函數(1)

但我更喜歡用字典字面量來代替:

一些值得學習的Python內置函數(1)

字典字面量語法更靈活,速度更快,但最重要的是,我發現它更清楚地傳達了我們正在創建一個字典的事實。

就像list和tuple一樣,一個空字典也應該使用字面量語法來創建:

一些值得學習的Python內置函數(1)

使用{}稍微提高了CPU效率,但更重要的是,它更符合人們的習慣: 使用大括號({})創建字典是很常見的,但是dict出現的頻率要低得多。

set

set函數生會成一個新的集合,它接受一個帶有可哈希值的迭代器(字符串、數字或其他不可變類型),並返回一個set:

一些值得學習的Python內置函數(1)

使用{}集合字面量語法(純 {} 會創建一個字典)無法生成空集合,因此set函數是生成空集的唯一方法:

"

在我教的每一節Python入門課上,經常都會被問道像“我們如何才能知道所有這些”這樣的問題。

通常還伴隨著這些問題:

  1. Python中有很多函數,記住這些函數的最好方法是什麼?
  2. 學習我們日常需要的函數,如enumerate 和 range,最好的方法是什麼?
  3. 你是如何知道Python中解決問題的所有方法的?你記下來了嗎?

有幾十個內置函數和類,數百個工具捆綁在Python的標準庫中,以及PyPI上的數千個第三方庫。任何人都不可能記住所有這些東西。

我建議你對你的知識進行分類:

  1. 我應該記住的東西,這樣我就能很好地理解它們
  2. 我應該知道的東西,這樣我以後才能更有效地查找它們
  3. 我根本不應該為之煩惱的東西,除非有一天我需要它們

將這個方法記在腦海中,我們來瀏覽Python文檔中的內置函數頁面。

這將是一篇很長的文章,所以在下一節中我將鏈接到5個子部分和20個特定的內置函數,所以如果你有時間或者正在尋找一個內置函數,你可以提前跳過去查看。

你應該瞭解哪些內置組件?

我估計大多數Python開發人員只需要大約30個內置函數,但是哪30個取決於你實際使用Python做什麼。

我們將以鳥瞰的方式來看看Python中的所有的69個內置函數。

我將嘗試把這些內置組件分成五類:

  1. 眾所周知: 大多數python初學者會因為需要而很快地接觸到這些內置組件
  2. 初學者所忽略的: 瞭解這些函數很有用,但是當你是Python新手時,就會很容易忽略它們
  3. 稍後再學習的: 瞭解這些內置組件通常很有用,但是當/如果你需要它們時,你就會找到它們
  4. 也許最終會學的: 這些東西遲早會派上用場,但只是在特定的情況下
  5. 你可能不需要這些: 除非你在做一些相當專業的事情,否則你不太可能會需要這些

類別1和類別2中的內置函數幾乎是所有Python程序員最終都應該學習的基本內置函數。類別3和類別4中的內置函數是專門的內置函數,它們通常非常有用,但是你對它們的需求會根據你對Python的使用情況而有所不同。類別5是神祕的內置函數,當你需要它們時,這可能非常方便,但是許多Python程序員可能永遠都不需要它們。

Python高手請注意: 我將把所有這些內置組件都稱為函數,儘管其中的27個實際上並不是函數(如我的函數和callables文章中所討論的)。

常見的內置函數(你可能已經很熟悉了):

  1. print
  2. len
  3. str
  4. int
  5. float
  6. list
  7. tuple
  8. dict
  9. set
  10. range

經常被新的Python編程者所忽略的內置函數:

  1. sum
  2. enumerate
  3. zip
  4. bool
  5. reversed
  6. sorted
  7. min
  8. max
  9. any
  10. all

還有5個通常被忽略的內置函數,我建議你自己去了解它們,因為它們使調試更容易: dir、vars、breakpoint、type和help。

除了上面的25個內置函數之外,我們還將在稍後的“以後學習並可能最終會學習的”和“你可能不需要這些”部分中簡要介紹其他的44個內置函數。

10個常見的內置函數

如果你一直在編寫Python代碼,那麼這些內置程序對你來說可能已經很熟悉了。

print

你已經知道了print函數。實現hello world需要用到print。

你可能不瞭解print所接受的各種關鍵字參數:

一些值得學習的Python內置函數(1)

你可以自己查看print函數。

len

在Python中,我們不寫像my_list.length()或my_string.length()這樣的函數; 相反,我們會奇怪地(至少對於新的python開發者來說)使用len(my_list)和len(my_string)。

一些值得學習的Python內置函數(1)

無論你是否喜歡這個類似於操作符的len函數,你都必須使用它,所以你需要習慣它。

str

與許多其他編程語言不同,你不能在Python中連接字符串和數字。

一些值得學習的Python內置函數(1)

Python拒絕將3個整數強制作為一個字符串,所以我們需要自己手動執行,使用內置的str函數(技術上來說是類,但正如我所說的,我將所有這些都稱為函數):

一些值得學習的Python內置函數(1)

int

你是否有用戶輸入並需要將其轉換為數字?那你就需要int函數!

int函數可以將字符串轉換為整數:

一些值得學習的Python內置函數(1)

你還可以使用int將浮點數截斷為整數:

一些值得學習的Python內置函數(1)

注意,如果你在進行除法運算時需要截斷,//操作符可能更合適(儘管它對負數的運行情況會不同):int(3 / 2) == 3 // 2。

float

你要轉換為數字的字符串實際上不是一個整數嗎?那麼你將使用float而不是int來進行轉換。

一些值得學習的Python內置函數(1)

你還可以使用float將整數轉換為浮點數。

在python2中,我們常常使用float將整數轉換為浮點數來強制進行浮點除法而不是整數除法。“整數除法”在Python 3中已經不存在了(除非你專門使用//運算符),因此我們不再需要float來實現這個目的。如果你一旦在Python3代碼中看到float(x) / y,你就可以把它改成x / y。

list

想要創建一個其他一些可迭代對象的列表嗎?

list函數就是做這些的:

一些值得學習的Python內置函數(1)

如果你知道你在處理一個列表,你可以使用copy方法來創建一個該列表的新副本:

一些值得學習的Python內置函數(1)

但是如果你不知道你正在處理的可迭代對象是什麼,list函數是循環一個可迭代對象並複製它的更通用的方法:

一些值得學習的Python內置函數(1)

你也可以使用一個列表推導式,但我不推薦這樣做。

注意,當你想要創建一個空列表時,建議使用列表字面量語法(那些[]括號):

一些值得學習的Python內置函數(1)

使用[]被認為更符合習慣,因為那些方括號([])實際上看起來像一個Python列表。

tuple

tuple函數與list函數非常相似,只是它會創建元組:

一些值得學習的Python內置函數(1)

如果你需要一個元組而不是列表,比如是因為你正在嘗試創建一個可在字典的鍵中使用的可哈希集合,那你可能會想要使用tuple而不是list。

dict

dict函數用於創建一個新字典。

與list和tuple類似,dict函數等價於在一個具有鍵值對的迭代器上進行循環,並從中生成一個字典。

給定一個兩項元組的列表:

一些值得學習的Python內置函數(1)

這個:

一些值得學習的Python內置函數(1)

可以用dict函數代替來生成:

一些值得學習的Python內置函數(1)

dict函數接受兩種類型的參數:

  1. 另一個字典(通用術語是映射),在這種情況下,該字典將被複制
  2. 一個由鍵值元組組成的列表(更準確地說,是由兩項迭代器組成的一個迭代器),在這種情況下,將從這些元素構造一個新字典

所以這也是可行的:

一些值得學習的Python內置函數(1)

dict函數還可以接受關鍵字參數來創建一個帶有基於字符串鍵的字典:

一些值得學習的Python內置函數(1)

但我更喜歡用字典字面量來代替:

一些值得學習的Python內置函數(1)

字典字面量語法更靈活,速度更快,但最重要的是,我發現它更清楚地傳達了我們正在創建一個字典的事實。

就像list和tuple一樣,一個空字典也應該使用字面量語法來創建:

一些值得學習的Python內置函數(1)

使用{}稍微提高了CPU效率,但更重要的是,它更符合人們的習慣: 使用大括號({})創建字典是很常見的,但是dict出現的頻率要低得多。

set

set函數生會成一個新的集合,它接受一個帶有可哈希值的迭代器(字符串、數字或其他不可變類型),並返回一個set:

一些值得學習的Python內置函數(1)

使用{}集合字面量語法(純 {} 會創建一個字典)無法生成空集合,因此set函數是生成空集的唯一方法:

一些值得學習的Python內置函數(1)

事實上,這是一個謊言,因為我們有這個:

"

在我教的每一節Python入門課上,經常都會被問道像“我們如何才能知道所有這些”這樣的問題。

通常還伴隨著這些問題:

  1. Python中有很多函數,記住這些函數的最好方法是什麼?
  2. 學習我們日常需要的函數,如enumerate 和 range,最好的方法是什麼?
  3. 你是如何知道Python中解決問題的所有方法的?你記下來了嗎?

有幾十個內置函數和類,數百個工具捆綁在Python的標準庫中,以及PyPI上的數千個第三方庫。任何人都不可能記住所有這些東西。

我建議你對你的知識進行分類:

  1. 我應該記住的東西,這樣我就能很好地理解它們
  2. 我應該知道的東西,這樣我以後才能更有效地查找它們
  3. 我根本不應該為之煩惱的東西,除非有一天我需要它們

將這個方法記在腦海中,我們來瀏覽Python文檔中的內置函數頁面。

這將是一篇很長的文章,所以在下一節中我將鏈接到5個子部分和20個特定的內置函數,所以如果你有時間或者正在尋找一個內置函數,你可以提前跳過去查看。

你應該瞭解哪些內置組件?

我估計大多數Python開發人員只需要大約30個內置函數,但是哪30個取決於你實際使用Python做什麼。

我們將以鳥瞰的方式來看看Python中的所有的69個內置函數。

我將嘗試把這些內置組件分成五類:

  1. 眾所周知: 大多數python初學者會因為需要而很快地接觸到這些內置組件
  2. 初學者所忽略的: 瞭解這些函數很有用,但是當你是Python新手時,就會很容易忽略它們
  3. 稍後再學習的: 瞭解這些內置組件通常很有用,但是當/如果你需要它們時,你就會找到它們
  4. 也許最終會學的: 這些東西遲早會派上用場,但只是在特定的情況下
  5. 你可能不需要這些: 除非你在做一些相當專業的事情,否則你不太可能會需要這些

類別1和類別2中的內置函數幾乎是所有Python程序員最終都應該學習的基本內置函數。類別3和類別4中的內置函數是專門的內置函數,它們通常非常有用,但是你對它們的需求會根據你對Python的使用情況而有所不同。類別5是神祕的內置函數,當你需要它們時,這可能非常方便,但是許多Python程序員可能永遠都不需要它們。

Python高手請注意: 我將把所有這些內置組件都稱為函數,儘管其中的27個實際上並不是函數(如我的函數和callables文章中所討論的)。

常見的內置函數(你可能已經很熟悉了):

  1. print
  2. len
  3. str
  4. int
  5. float
  6. list
  7. tuple
  8. dict
  9. set
  10. range

經常被新的Python編程者所忽略的內置函數:

  1. sum
  2. enumerate
  3. zip
  4. bool
  5. reversed
  6. sorted
  7. min
  8. max
  9. any
  10. all

還有5個通常被忽略的內置函數,我建議你自己去了解它們,因為它們使調試更容易: dir、vars、breakpoint、type和help。

除了上面的25個內置函數之外,我們還將在稍後的“以後學習並可能最終會學習的”和“你可能不需要這些”部分中簡要介紹其他的44個內置函數。

10個常見的內置函數

如果你一直在編寫Python代碼,那麼這些內置程序對你來說可能已經很熟悉了。

print

你已經知道了print函數。實現hello world需要用到print。

你可能不瞭解print所接受的各種關鍵字參數:

一些值得學習的Python內置函數(1)

你可以自己查看print函數。

len

在Python中,我們不寫像my_list.length()或my_string.length()這樣的函數; 相反,我們會奇怪地(至少對於新的python開發者來說)使用len(my_list)和len(my_string)。

一些值得學習的Python內置函數(1)

無論你是否喜歡這個類似於操作符的len函數,你都必須使用它,所以你需要習慣它。

str

與許多其他編程語言不同,你不能在Python中連接字符串和數字。

一些值得學習的Python內置函數(1)

Python拒絕將3個整數強制作為一個字符串,所以我們需要自己手動執行,使用內置的str函數(技術上來說是類,但正如我所說的,我將所有這些都稱為函數):

一些值得學習的Python內置函數(1)

int

你是否有用戶輸入並需要將其轉換為數字?那你就需要int函數!

int函數可以將字符串轉換為整數:

一些值得學習的Python內置函數(1)

你還可以使用int將浮點數截斷為整數:

一些值得學習的Python內置函數(1)

注意,如果你在進行除法運算時需要截斷,//操作符可能更合適(儘管它對負數的運行情況會不同):int(3 / 2) == 3 // 2。

float

你要轉換為數字的字符串實際上不是一個整數嗎?那麼你將使用float而不是int來進行轉換。

一些值得學習的Python內置函數(1)

你還可以使用float將整數轉換為浮點數。

在python2中,我們常常使用float將整數轉換為浮點數來強制進行浮點除法而不是整數除法。“整數除法”在Python 3中已經不存在了(除非你專門使用//運算符),因此我們不再需要float來實現這個目的。如果你一旦在Python3代碼中看到float(x) / y,你就可以把它改成x / y。

list

想要創建一個其他一些可迭代對象的列表嗎?

list函數就是做這些的:

一些值得學習的Python內置函數(1)

如果你知道你在處理一個列表,你可以使用copy方法來創建一個該列表的新副本:

一些值得學習的Python內置函數(1)

但是如果你不知道你正在處理的可迭代對象是什麼,list函數是循環一個可迭代對象並複製它的更通用的方法:

一些值得學習的Python內置函數(1)

你也可以使用一個列表推導式,但我不推薦這樣做。

注意,當你想要創建一個空列表時,建議使用列表字面量語法(那些[]括號):

一些值得學習的Python內置函數(1)

使用[]被認為更符合習慣,因為那些方括號([])實際上看起來像一個Python列表。

tuple

tuple函數與list函數非常相似,只是它會創建元組:

一些值得學習的Python內置函數(1)

如果你需要一個元組而不是列表,比如是因為你正在嘗試創建一個可在字典的鍵中使用的可哈希集合,那你可能會想要使用tuple而不是list。

dict

dict函數用於創建一個新字典。

與list和tuple類似,dict函數等價於在一個具有鍵值對的迭代器上進行循環,並從中生成一個字典。

給定一個兩項元組的列表:

一些值得學習的Python內置函數(1)

這個:

一些值得學習的Python內置函數(1)

可以用dict函數代替來生成:

一些值得學習的Python內置函數(1)

dict函數接受兩種類型的參數:

  1. 另一個字典(通用術語是映射),在這種情況下,該字典將被複制
  2. 一個由鍵值元組組成的列表(更準確地說,是由兩項迭代器組成的一個迭代器),在這種情況下,將從這些元素構造一個新字典

所以這也是可行的:

一些值得學習的Python內置函數(1)

dict函數還可以接受關鍵字參數來創建一個帶有基於字符串鍵的字典:

一些值得學習的Python內置函數(1)

但我更喜歡用字典字面量來代替:

一些值得學習的Python內置函數(1)

字典字面量語法更靈活,速度更快,但最重要的是,我發現它更清楚地傳達了我們正在創建一個字典的事實。

就像list和tuple一樣,一個空字典也應該使用字面量語法來創建:

一些值得學習的Python內置函數(1)

使用{}稍微提高了CPU效率,但更重要的是,它更符合人們的習慣: 使用大括號({})創建字典是很常見的,但是dict出現的頻率要低得多。

set

set函數生會成一個新的集合,它接受一個帶有可哈希值的迭代器(字符串、數字或其他不可變類型),並返回一個set:

一些值得學習的Python內置函數(1)

使用{}集合字面量語法(純 {} 會創建一個字典)無法生成空集合,因此set函數是生成空集的唯一方法:

一些值得學習的Python內置函數(1)

事實上,這是一個謊言,因為我們有這個:

一些值得學習的Python內置函數(1)

但是這種語法令人困惑(它依賴於*操作符的一個不太常用的特性),所以我不推薦使用它。

range

range函數給我們返回一個range對象,它表示一個數字範圍:

"

在我教的每一節Python入門課上,經常都會被問道像“我們如何才能知道所有這些”這樣的問題。

通常還伴隨著這些問題:

  1. Python中有很多函數,記住這些函數的最好方法是什麼?
  2. 學習我們日常需要的函數,如enumerate 和 range,最好的方法是什麼?
  3. 你是如何知道Python中解決問題的所有方法的?你記下來了嗎?

有幾十個內置函數和類,數百個工具捆綁在Python的標準庫中,以及PyPI上的數千個第三方庫。任何人都不可能記住所有這些東西。

我建議你對你的知識進行分類:

  1. 我應該記住的東西,這樣我就能很好地理解它們
  2. 我應該知道的東西,這樣我以後才能更有效地查找它們
  3. 我根本不應該為之煩惱的東西,除非有一天我需要它們

將這個方法記在腦海中,我們來瀏覽Python文檔中的內置函數頁面。

這將是一篇很長的文章,所以在下一節中我將鏈接到5個子部分和20個特定的內置函數,所以如果你有時間或者正在尋找一個內置函數,你可以提前跳過去查看。

你應該瞭解哪些內置組件?

我估計大多數Python開發人員只需要大約30個內置函數,但是哪30個取決於你實際使用Python做什麼。

我們將以鳥瞰的方式來看看Python中的所有的69個內置函數。

我將嘗試把這些內置組件分成五類:

  1. 眾所周知: 大多數python初學者會因為需要而很快地接觸到這些內置組件
  2. 初學者所忽略的: 瞭解這些函數很有用,但是當你是Python新手時,就會很容易忽略它們
  3. 稍後再學習的: 瞭解這些內置組件通常很有用,但是當/如果你需要它們時,你就會找到它們
  4. 也許最終會學的: 這些東西遲早會派上用場,但只是在特定的情況下
  5. 你可能不需要這些: 除非你在做一些相當專業的事情,否則你不太可能會需要這些

類別1和類別2中的內置函數幾乎是所有Python程序員最終都應該學習的基本內置函數。類別3和類別4中的內置函數是專門的內置函數,它們通常非常有用,但是你對它們的需求會根據你對Python的使用情況而有所不同。類別5是神祕的內置函數,當你需要它們時,這可能非常方便,但是許多Python程序員可能永遠都不需要它們。

Python高手請注意: 我將把所有這些內置組件都稱為函數,儘管其中的27個實際上並不是函數(如我的函數和callables文章中所討論的)。

常見的內置函數(你可能已經很熟悉了):

  1. print
  2. len
  3. str
  4. int
  5. float
  6. list
  7. tuple
  8. dict
  9. set
  10. range

經常被新的Python編程者所忽略的內置函數:

  1. sum
  2. enumerate
  3. zip
  4. bool
  5. reversed
  6. sorted
  7. min
  8. max
  9. any
  10. all

還有5個通常被忽略的內置函數,我建議你自己去了解它們,因為它們使調試更容易: dir、vars、breakpoint、type和help。

除了上面的25個內置函數之外,我們還將在稍後的“以後學習並可能最終會學習的”和“你可能不需要這些”部分中簡要介紹其他的44個內置函數。

10個常見的內置函數

如果你一直在編寫Python代碼,那麼這些內置程序對你來說可能已經很熟悉了。

print

你已經知道了print函數。實現hello world需要用到print。

你可能不瞭解print所接受的各種關鍵字參數:

一些值得學習的Python內置函數(1)

你可以自己查看print函數。

len

在Python中,我們不寫像my_list.length()或my_string.length()這樣的函數; 相反,我們會奇怪地(至少對於新的python開發者來說)使用len(my_list)和len(my_string)。

一些值得學習的Python內置函數(1)

無論你是否喜歡這個類似於操作符的len函數,你都必須使用它,所以你需要習慣它。

str

與許多其他編程語言不同,你不能在Python中連接字符串和數字。

一些值得學習的Python內置函數(1)

Python拒絕將3個整數強制作為一個字符串,所以我們需要自己手動執行,使用內置的str函數(技術上來說是類,但正如我所說的,我將所有這些都稱為函數):

一些值得學習的Python內置函數(1)

int

你是否有用戶輸入並需要將其轉換為數字?那你就需要int函數!

int函數可以將字符串轉換為整數:

一些值得學習的Python內置函數(1)

你還可以使用int將浮點數截斷為整數:

一些值得學習的Python內置函數(1)

注意,如果你在進行除法運算時需要截斷,//操作符可能更合適(儘管它對負數的運行情況會不同):int(3 / 2) == 3 // 2。

float

你要轉換為數字的字符串實際上不是一個整數嗎?那麼你將使用float而不是int來進行轉換。

一些值得學習的Python內置函數(1)

你還可以使用float將整數轉換為浮點數。

在python2中,我們常常使用float將整數轉換為浮點數來強制進行浮點除法而不是整數除法。“整數除法”在Python 3中已經不存在了(除非你專門使用//運算符),因此我們不再需要float來實現這個目的。如果你一旦在Python3代碼中看到float(x) / y,你就可以把它改成x / y。

list

想要創建一個其他一些可迭代對象的列表嗎?

list函數就是做這些的:

一些值得學習的Python內置函數(1)

如果你知道你在處理一個列表,你可以使用copy方法來創建一個該列表的新副本:

一些值得學習的Python內置函數(1)

但是如果你不知道你正在處理的可迭代對象是什麼,list函數是循環一個可迭代對象並複製它的更通用的方法:

一些值得學習的Python內置函數(1)

你也可以使用一個列表推導式,但我不推薦這樣做。

注意,當你想要創建一個空列表時,建議使用列表字面量語法(那些[]括號):

一些值得學習的Python內置函數(1)

使用[]被認為更符合習慣,因為那些方括號([])實際上看起來像一個Python列表。

tuple

tuple函數與list函數非常相似,只是它會創建元組:

一些值得學習的Python內置函數(1)

如果你需要一個元組而不是列表,比如是因為你正在嘗試創建一個可在字典的鍵中使用的可哈希集合,那你可能會想要使用tuple而不是list。

dict

dict函數用於創建一個新字典。

與list和tuple類似,dict函數等價於在一個具有鍵值對的迭代器上進行循環,並從中生成一個字典。

給定一個兩項元組的列表:

一些值得學習的Python內置函數(1)

這個:

一些值得學習的Python內置函數(1)

可以用dict函數代替來生成:

一些值得學習的Python內置函數(1)

dict函數接受兩種類型的參數:

  1. 另一個字典(通用術語是映射),在這種情況下,該字典將被複制
  2. 一個由鍵值元組組成的列表(更準確地說,是由兩項迭代器組成的一個迭代器),在這種情況下,將從這些元素構造一個新字典

所以這也是可行的:

一些值得學習的Python內置函數(1)

dict函數還可以接受關鍵字參數來創建一個帶有基於字符串鍵的字典:

一些值得學習的Python內置函數(1)

但我更喜歡用字典字面量來代替:

一些值得學習的Python內置函數(1)

字典字面量語法更靈活,速度更快,但最重要的是,我發現它更清楚地傳達了我們正在創建一個字典的事實。

就像list和tuple一樣,一個空字典也應該使用字面量語法來創建:

一些值得學習的Python內置函數(1)

使用{}稍微提高了CPU效率,但更重要的是,它更符合人們的習慣: 使用大括號({})創建字典是很常見的,但是dict出現的頻率要低得多。

set

set函數生會成一個新的集合,它接受一個帶有可哈希值的迭代器(字符串、數字或其他不可變類型),並返回一個set:

一些值得學習的Python內置函數(1)

使用{}集合字面量語法(純 {} 會創建一個字典)無法生成空集合,因此set函數是生成空集的唯一方法:

一些值得學習的Python內置函數(1)

事實上,這是一個謊言,因為我們有這個:

一些值得學習的Python內置函數(1)

但是這種語法令人困惑(它依賴於*操作符的一個不太常用的特性),所以我不推薦使用它。

range

range函數給我們返回一個range對象,它表示一個數字範圍:

一些值得學習的Python內置函數(1)

得到的數字範圍包括開始數字,但不包括停止數字(range(0,10)不包括10)。

當你想對一些數字進行循環時,range函數很有用。

"

在我教的每一節Python入門課上,經常都會被問道像“我們如何才能知道所有這些”這樣的問題。

通常還伴隨著這些問題:

  1. Python中有很多函數,記住這些函數的最好方法是什麼?
  2. 學習我們日常需要的函數,如enumerate 和 range,最好的方法是什麼?
  3. 你是如何知道Python中解決問題的所有方法的?你記下來了嗎?

有幾十個內置函數和類,數百個工具捆綁在Python的標準庫中,以及PyPI上的數千個第三方庫。任何人都不可能記住所有這些東西。

我建議你對你的知識進行分類:

  1. 我應該記住的東西,這樣我就能很好地理解它們
  2. 我應該知道的東西,這樣我以後才能更有效地查找它們
  3. 我根本不應該為之煩惱的東西,除非有一天我需要它們

將這個方法記在腦海中,我們來瀏覽Python文檔中的內置函數頁面。

這將是一篇很長的文章,所以在下一節中我將鏈接到5個子部分和20個特定的內置函數,所以如果你有時間或者正在尋找一個內置函數,你可以提前跳過去查看。

你應該瞭解哪些內置組件?

我估計大多數Python開發人員只需要大約30個內置函數,但是哪30個取決於你實際使用Python做什麼。

我們將以鳥瞰的方式來看看Python中的所有的69個內置函數。

我將嘗試把這些內置組件分成五類:

  1. 眾所周知: 大多數python初學者會因為需要而很快地接觸到這些內置組件
  2. 初學者所忽略的: 瞭解這些函數很有用,但是當你是Python新手時,就會很容易忽略它們
  3. 稍後再學習的: 瞭解這些內置組件通常很有用,但是當/如果你需要它們時,你就會找到它們
  4. 也許最終會學的: 這些東西遲早會派上用場,但只是在特定的情況下
  5. 你可能不需要這些: 除非你在做一些相當專業的事情,否則你不太可能會需要這些

類別1和類別2中的內置函數幾乎是所有Python程序員最終都應該學習的基本內置函數。類別3和類別4中的內置函數是專門的內置函數,它們通常非常有用,但是你對它們的需求會根據你對Python的使用情況而有所不同。類別5是神祕的內置函數,當你需要它們時,這可能非常方便,但是許多Python程序員可能永遠都不需要它們。

Python高手請注意: 我將把所有這些內置組件都稱為函數,儘管其中的27個實際上並不是函數(如我的函數和callables文章中所討論的)。

常見的內置函數(你可能已經很熟悉了):

  1. print
  2. len
  3. str
  4. int
  5. float
  6. list
  7. tuple
  8. dict
  9. set
  10. range

經常被新的Python編程者所忽略的內置函數:

  1. sum
  2. enumerate
  3. zip
  4. bool
  5. reversed
  6. sorted
  7. min
  8. max
  9. any
  10. all

還有5個通常被忽略的內置函數,我建議你自己去了解它們,因為它們使調試更容易: dir、vars、breakpoint、type和help。

除了上面的25個內置函數之外,我們還將在稍後的“以後學習並可能最終會學習的”和“你可能不需要這些”部分中簡要介紹其他的44個內置函數。

10個常見的內置函數

如果你一直在編寫Python代碼,那麼這些內置程序對你來說可能已經很熟悉了。

print

你已經知道了print函數。實現hello world需要用到print。

你可能不瞭解print所接受的各種關鍵字參數:

一些值得學習的Python內置函數(1)

你可以自己查看print函數。

len

在Python中,我們不寫像my_list.length()或my_string.length()這樣的函數; 相反,我們會奇怪地(至少對於新的python開發者來說)使用len(my_list)和len(my_string)。

一些值得學習的Python內置函數(1)

無論你是否喜歡這個類似於操作符的len函數,你都必須使用它,所以你需要習慣它。

str

與許多其他編程語言不同,你不能在Python中連接字符串和數字。

一些值得學習的Python內置函數(1)

Python拒絕將3個整數強制作為一個字符串,所以我們需要自己手動執行,使用內置的str函數(技術上來說是類,但正如我所說的,我將所有這些都稱為函數):

一些值得學習的Python內置函數(1)

int

你是否有用戶輸入並需要將其轉換為數字?那你就需要int函數!

int函數可以將字符串轉換為整數:

一些值得學習的Python內置函數(1)

你還可以使用int將浮點數截斷為整數:

一些值得學習的Python內置函數(1)

注意,如果你在進行除法運算時需要截斷,//操作符可能更合適(儘管它對負數的運行情況會不同):int(3 / 2) == 3 // 2。

float

你要轉換為數字的字符串實際上不是一個整數嗎?那麼你將使用float而不是int來進行轉換。

一些值得學習的Python內置函數(1)

你還可以使用float將整數轉換為浮點數。

在python2中,我們常常使用float將整數轉換為浮點數來強制進行浮點除法而不是整數除法。“整數除法”在Python 3中已經不存在了(除非你專門使用//運算符),因此我們不再需要float來實現這個目的。如果你一旦在Python3代碼中看到float(x) / y,你就可以把它改成x / y。

list

想要創建一個其他一些可迭代對象的列表嗎?

list函數就是做這些的:

一些值得學習的Python內置函數(1)

如果你知道你在處理一個列表,你可以使用copy方法來創建一個該列表的新副本:

一些值得學習的Python內置函數(1)

但是如果你不知道你正在處理的可迭代對象是什麼,list函數是循環一個可迭代對象並複製它的更通用的方法:

一些值得學習的Python內置函數(1)

你也可以使用一個列表推導式,但我不推薦這樣做。

注意,當你想要創建一個空列表時,建議使用列表字面量語法(那些[]括號):

一些值得學習的Python內置函數(1)

使用[]被認為更符合習慣,因為那些方括號([])實際上看起來像一個Python列表。

tuple

tuple函數與list函數非常相似,只是它會創建元組:

一些值得學習的Python內置函數(1)

如果你需要一個元組而不是列表,比如是因為你正在嘗試創建一個可在字典的鍵中使用的可哈希集合,那你可能會想要使用tuple而不是list。

dict

dict函數用於創建一個新字典。

與list和tuple類似,dict函數等價於在一個具有鍵值對的迭代器上進行循環,並從中生成一個字典。

給定一個兩項元組的列表:

一些值得學習的Python內置函數(1)

這個:

一些值得學習的Python內置函數(1)

可以用dict函數代替來生成:

一些值得學習的Python內置函數(1)

dict函數接受兩種類型的參數:

  1. 另一個字典(通用術語是映射),在這種情況下,該字典將被複制
  2. 一個由鍵值元組組成的列表(更準確地說,是由兩項迭代器組成的一個迭代器),在這種情況下,將從這些元素構造一個新字典

所以這也是可行的:

一些值得學習的Python內置函數(1)

dict函數還可以接受關鍵字參數來創建一個帶有基於字符串鍵的字典:

一些值得學習的Python內置函數(1)

但我更喜歡用字典字面量來代替:

一些值得學習的Python內置函數(1)

字典字面量語法更靈活,速度更快,但最重要的是,我發現它更清楚地傳達了我們正在創建一個字典的事實。

就像list和tuple一樣,一個空字典也應該使用字面量語法來創建:

一些值得學習的Python內置函數(1)

使用{}稍微提高了CPU效率,但更重要的是,它更符合人們的習慣: 使用大括號({})創建字典是很常見的,但是dict出現的頻率要低得多。

set

set函數生會成一個新的集合,它接受一個帶有可哈希值的迭代器(字符串、數字或其他不可變類型),並返回一個set:

一些值得學習的Python內置函數(1)

使用{}集合字面量語法(純 {} 會創建一個字典)無法生成空集合,因此set函數是生成空集的唯一方法:

一些值得學習的Python內置函數(1)

事實上,這是一個謊言,因為我們有這個:

一些值得學習的Python內置函數(1)

但是這種語法令人困惑(它依賴於*操作符的一個不太常用的特性),所以我不推薦使用它。

range

range函數給我們返回一個range對象,它表示一個數字範圍:

一些值得學習的Python內置函數(1)

得到的數字範圍包括開始數字,但不包括停止數字(range(0,10)不包括10)。

當你想對一些數字進行循環時,range函數很有用。

一些值得學習的Python內置函數(1)

一個常見的用例是執行一個操作n次(順便說一下,這是一個列表推導式):

"

在我教的每一節Python入門課上,經常都會被問道像“我們如何才能知道所有這些”這樣的問題。

通常還伴隨著這些問題:

  1. Python中有很多函數,記住這些函數的最好方法是什麼?
  2. 學習我們日常需要的函數,如enumerate 和 range,最好的方法是什麼?
  3. 你是如何知道Python中解決問題的所有方法的?你記下來了嗎?

有幾十個內置函數和類,數百個工具捆綁在Python的標準庫中,以及PyPI上的數千個第三方庫。任何人都不可能記住所有這些東西。

我建議你對你的知識進行分類:

  1. 我應該記住的東西,這樣我就能很好地理解它們
  2. 我應該知道的東西,這樣我以後才能更有效地查找它們
  3. 我根本不應該為之煩惱的東西,除非有一天我需要它們

將這個方法記在腦海中,我們來瀏覽Python文檔中的內置函數頁面。

這將是一篇很長的文章,所以在下一節中我將鏈接到5個子部分和20個特定的內置函數,所以如果你有時間或者正在尋找一個內置函數,你可以提前跳過去查看。

你應該瞭解哪些內置組件?

我估計大多數Python開發人員只需要大約30個內置函數,但是哪30個取決於你實際使用Python做什麼。

我們將以鳥瞰的方式來看看Python中的所有的69個內置函數。

我將嘗試把這些內置組件分成五類:

  1. 眾所周知: 大多數python初學者會因為需要而很快地接觸到這些內置組件
  2. 初學者所忽略的: 瞭解這些函數很有用,但是當你是Python新手時,就會很容易忽略它們
  3. 稍後再學習的: 瞭解這些內置組件通常很有用,但是當/如果你需要它們時,你就會找到它們
  4. 也許最終會學的: 這些東西遲早會派上用場,但只是在特定的情況下
  5. 你可能不需要這些: 除非你在做一些相當專業的事情,否則你不太可能會需要這些

類別1和類別2中的內置函數幾乎是所有Python程序員最終都應該學習的基本內置函數。類別3和類別4中的內置函數是專門的內置函數,它們通常非常有用,但是你對它們的需求會根據你對Python的使用情況而有所不同。類別5是神祕的內置函數,當你需要它們時,這可能非常方便,但是許多Python程序員可能永遠都不需要它們。

Python高手請注意: 我將把所有這些內置組件都稱為函數,儘管其中的27個實際上並不是函數(如我的函數和callables文章中所討論的)。

常見的內置函數(你可能已經很熟悉了):

  1. print
  2. len
  3. str
  4. int
  5. float
  6. list
  7. tuple
  8. dict
  9. set
  10. range

經常被新的Python編程者所忽略的內置函數:

  1. sum
  2. enumerate
  3. zip
  4. bool
  5. reversed
  6. sorted
  7. min
  8. max
  9. any
  10. all

還有5個通常被忽略的內置函數,我建議你自己去了解它們,因為它們使調試更容易: dir、vars、breakpoint、type和help。

除了上面的25個內置函數之外,我們還將在稍後的“以後學習並可能最終會學習的”和“你可能不需要這些”部分中簡要介紹其他的44個內置函數。

10個常見的內置函數

如果你一直在編寫Python代碼,那麼這些內置程序對你來說可能已經很熟悉了。

print

你已經知道了print函數。實現hello world需要用到print。

你可能不瞭解print所接受的各種關鍵字參數:

一些值得學習的Python內置函數(1)

你可以自己查看print函數。

len

在Python中,我們不寫像my_list.length()或my_string.length()這樣的函數; 相反,我們會奇怪地(至少對於新的python開發者來說)使用len(my_list)和len(my_string)。

一些值得學習的Python內置函數(1)

無論你是否喜歡這個類似於操作符的len函數,你都必須使用它,所以你需要習慣它。

str

與許多其他編程語言不同,你不能在Python中連接字符串和數字。

一些值得學習的Python內置函數(1)

Python拒絕將3個整數強制作為一個字符串,所以我們需要自己手動執行,使用內置的str函數(技術上來說是類,但正如我所說的,我將所有這些都稱為函數):

一些值得學習的Python內置函數(1)

int

你是否有用戶輸入並需要將其轉換為數字?那你就需要int函數!

int函數可以將字符串轉換為整數:

一些值得學習的Python內置函數(1)

你還可以使用int將浮點數截斷為整數:

一些值得學習的Python內置函數(1)

注意,如果你在進行除法運算時需要截斷,//操作符可能更合適(儘管它對負數的運行情況會不同):int(3 / 2) == 3 // 2。

float

你要轉換為數字的字符串實際上不是一個整數嗎?那麼你將使用float而不是int來進行轉換。

一些值得學習的Python內置函數(1)

你還可以使用float將整數轉換為浮點數。

在python2中,我們常常使用float將整數轉換為浮點數來強制進行浮點除法而不是整數除法。“整數除法”在Python 3中已經不存在了(除非你專門使用//運算符),因此我們不再需要float來實現這個目的。如果你一旦在Python3代碼中看到float(x) / y,你就可以把它改成x / y。

list

想要創建一個其他一些可迭代對象的列表嗎?

list函數就是做這些的:

一些值得學習的Python內置函數(1)

如果你知道你在處理一個列表,你可以使用copy方法來創建一個該列表的新副本:

一些值得學習的Python內置函數(1)

但是如果你不知道你正在處理的可迭代對象是什麼,list函數是循環一個可迭代對象並複製它的更通用的方法:

一些值得學習的Python內置函數(1)

你也可以使用一個列表推導式,但我不推薦這樣做。

注意,當你想要創建一個空列表時,建議使用列表字面量語法(那些[]括號):

一些值得學習的Python內置函數(1)

使用[]被認為更符合習慣,因為那些方括號([])實際上看起來像一個Python列表。

tuple

tuple函數與list函數非常相似,只是它會創建元組:

一些值得學習的Python內置函數(1)

如果你需要一個元組而不是列表,比如是因為你正在嘗試創建一個可在字典的鍵中使用的可哈希集合,那你可能會想要使用tuple而不是list。

dict

dict函數用於創建一個新字典。

與list和tuple類似,dict函數等價於在一個具有鍵值對的迭代器上進行循環,並從中生成一個字典。

給定一個兩項元組的列表:

一些值得學習的Python內置函數(1)

這個:

一些值得學習的Python內置函數(1)

可以用dict函數代替來生成:

一些值得學習的Python內置函數(1)

dict函數接受兩種類型的參數:

  1. 另一個字典(通用術語是映射),在這種情況下,該字典將被複制
  2. 一個由鍵值元組組成的列表(更準確地說,是由兩項迭代器組成的一個迭代器),在這種情況下,將從這些元素構造一個新字典

所以這也是可行的:

一些值得學習的Python內置函數(1)

dict函數還可以接受關鍵字參數來創建一個帶有基於字符串鍵的字典:

一些值得學習的Python內置函數(1)

但我更喜歡用字典字面量來代替:

一些值得學習的Python內置函數(1)

字典字面量語法更靈活,速度更快,但最重要的是,我發現它更清楚地傳達了我們正在創建一個字典的事實。

就像list和tuple一樣,一個空字典也應該使用字面量語法來創建:

一些值得學習的Python內置函數(1)

使用{}稍微提高了CPU效率,但更重要的是,它更符合人們的習慣: 使用大括號({})創建字典是很常見的,但是dict出現的頻率要低得多。

set

set函數生會成一個新的集合,它接受一個帶有可哈希值的迭代器(字符串、數字或其他不可變類型),並返回一個set:

一些值得學習的Python內置函數(1)

使用{}集合字面量語法(純 {} 會創建一個字典)無法生成空集合,因此set函數是生成空集的唯一方法:

一些值得學習的Python內置函數(1)

事實上,這是一個謊言,因為我們有這個:

一些值得學習的Python內置函數(1)

但是這種語法令人困惑(它依賴於*操作符的一個不太常用的特性),所以我不推薦使用它。

range

range函數給我們返回一個range對象,它表示一個數字範圍:

一些值得學習的Python內置函數(1)

得到的數字範圍包括開始數字,但不包括停止數字(range(0,10)不包括10)。

當你想對一些數字進行循環時,range函數很有用。

一些值得學習的Python內置函數(1)

一個常見的用例是執行一個操作n次(順便說一下,這是一個列表推導式):

一些值得學習的Python內置函數(1)

Python 2的range函數會返回一個列表,這意味著上面的表達式將生成非常非常大的列表。python3的range運行方式與python2的xrange類似(儘管它們有一點不同),因為當我們在這些range對象上循環時,數字是延遲計算的。

被新進的Python高手忽略的內置函數

如果你已經使用Python編程了一段時間,或者剛剛學習了Python類的介紹,那麼你可能已經瞭解了上面的內置函數。

現在,我想展示15個內置函數,這些函數非常便於瞭解,但是常常被新進的Python高手所忽略。

你將在Python代碼中發現前10個函數,但最後5個函數最常在調試時使用。

bool

bool函數會檢查一個Python對象的真實性。

對於數字,真實性是一個非零的問題:

"

在我教的每一節Python入門課上,經常都會被問道像“我們如何才能知道所有這些”這樣的問題。

通常還伴隨著這些問題:

  1. Python中有很多函數,記住這些函數的最好方法是什麼?
  2. 學習我們日常需要的函數,如enumerate 和 range,最好的方法是什麼?
  3. 你是如何知道Python中解決問題的所有方法的?你記下來了嗎?

有幾十個內置函數和類,數百個工具捆綁在Python的標準庫中,以及PyPI上的數千個第三方庫。任何人都不可能記住所有這些東西。

我建議你對你的知識進行分類:

  1. 我應該記住的東西,這樣我就能很好地理解它們
  2. 我應該知道的東西,這樣我以後才能更有效地查找它們
  3. 我根本不應該為之煩惱的東西,除非有一天我需要它們

將這個方法記在腦海中,我們來瀏覽Python文檔中的內置函數頁面。

這將是一篇很長的文章,所以在下一節中我將鏈接到5個子部分和20個特定的內置函數,所以如果你有時間或者正在尋找一個內置函數,你可以提前跳過去查看。

你應該瞭解哪些內置組件?

我估計大多數Python開發人員只需要大約30個內置函數,但是哪30個取決於你實際使用Python做什麼。

我們將以鳥瞰的方式來看看Python中的所有的69個內置函數。

我將嘗試把這些內置組件分成五類:

  1. 眾所周知: 大多數python初學者會因為需要而很快地接觸到這些內置組件
  2. 初學者所忽略的: 瞭解這些函數很有用,但是當你是Python新手時,就會很容易忽略它們
  3. 稍後再學習的: 瞭解這些內置組件通常很有用,但是當/如果你需要它們時,你就會找到它們
  4. 也許最終會學的: 這些東西遲早會派上用場,但只是在特定的情況下
  5. 你可能不需要這些: 除非你在做一些相當專業的事情,否則你不太可能會需要這些

類別1和類別2中的內置函數幾乎是所有Python程序員最終都應該學習的基本內置函數。類別3和類別4中的內置函數是專門的內置函數,它們通常非常有用,但是你對它們的需求會根據你對Python的使用情況而有所不同。類別5是神祕的內置函數,當你需要它們時,這可能非常方便,但是許多Python程序員可能永遠都不需要它們。

Python高手請注意: 我將把所有這些內置組件都稱為函數,儘管其中的27個實際上並不是函數(如我的函數和callables文章中所討論的)。

常見的內置函數(你可能已經很熟悉了):

  1. print
  2. len
  3. str
  4. int
  5. float
  6. list
  7. tuple
  8. dict
  9. set
  10. range

經常被新的Python編程者所忽略的內置函數:

  1. sum
  2. enumerate
  3. zip
  4. bool
  5. reversed
  6. sorted
  7. min
  8. max
  9. any
  10. all

還有5個通常被忽略的內置函數,我建議你自己去了解它們,因為它們使調試更容易: dir、vars、breakpoint、type和help。

除了上面的25個內置函數之外,我們還將在稍後的“以後學習並可能最終會學習的”和“你可能不需要這些”部分中簡要介紹其他的44個內置函數。

10個常見的內置函數

如果你一直在編寫Python代碼,那麼這些內置程序對你來說可能已經很熟悉了。

print

你已經知道了print函數。實現hello world需要用到print。

你可能不瞭解print所接受的各種關鍵字參數:

一些值得學習的Python內置函數(1)

你可以自己查看print函數。

len

在Python中,我們不寫像my_list.length()或my_string.length()這樣的函數; 相反,我們會奇怪地(至少對於新的python開發者來說)使用len(my_list)和len(my_string)。

一些值得學習的Python內置函數(1)

無論你是否喜歡這個類似於操作符的len函數,你都必須使用它,所以你需要習慣它。

str

與許多其他編程語言不同,你不能在Python中連接字符串和數字。

一些值得學習的Python內置函數(1)

Python拒絕將3個整數強制作為一個字符串,所以我們需要自己手動執行,使用內置的str函數(技術上來說是類,但正如我所說的,我將所有這些都稱為函數):

一些值得學習的Python內置函數(1)

int

你是否有用戶輸入並需要將其轉換為數字?那你就需要int函數!

int函數可以將字符串轉換為整數:

一些值得學習的Python內置函數(1)

你還可以使用int將浮點數截斷為整數:

一些值得學習的Python內置函數(1)

注意,如果你在進行除法運算時需要截斷,//操作符可能更合適(儘管它對負數的運行情況會不同):int(3 / 2) == 3 // 2。

float

你要轉換為數字的字符串實際上不是一個整數嗎?那麼你將使用float而不是int來進行轉換。

一些值得學習的Python內置函數(1)

你還可以使用float將整數轉換為浮點數。

在python2中,我們常常使用float將整數轉換為浮點數來強制進行浮點除法而不是整數除法。“整數除法”在Python 3中已經不存在了(除非你專門使用//運算符),因此我們不再需要float來實現這個目的。如果你一旦在Python3代碼中看到float(x) / y,你就可以把它改成x / y。

list

想要創建一個其他一些可迭代對象的列表嗎?

list函數就是做這些的:

一些值得學習的Python內置函數(1)

如果你知道你在處理一個列表,你可以使用copy方法來創建一個該列表的新副本:

一些值得學習的Python內置函數(1)

但是如果你不知道你正在處理的可迭代對象是什麼,list函數是循環一個可迭代對象並複製它的更通用的方法:

一些值得學習的Python內置函數(1)

你也可以使用一個列表推導式,但我不推薦這樣做。

注意,當你想要創建一個空列表時,建議使用列表字面量語法(那些[]括號):

一些值得學習的Python內置函數(1)

使用[]被認為更符合習慣,因為那些方括號([])實際上看起來像一個Python列表。

tuple

tuple函數與list函數非常相似,只是它會創建元組:

一些值得學習的Python內置函數(1)

如果你需要一個元組而不是列表,比如是因為你正在嘗試創建一個可在字典的鍵中使用的可哈希集合,那你可能會想要使用tuple而不是list。

dict

dict函數用於創建一個新字典。

與list和tuple類似,dict函數等價於在一個具有鍵值對的迭代器上進行循環,並從中生成一個字典。

給定一個兩項元組的列表:

一些值得學習的Python內置函數(1)

這個:

一些值得學習的Python內置函數(1)

可以用dict函數代替來生成:

一些值得學習的Python內置函數(1)

dict函數接受兩種類型的參數:

  1. 另一個字典(通用術語是映射),在這種情況下,該字典將被複制
  2. 一個由鍵值元組組成的列表(更準確地說,是由兩項迭代器組成的一個迭代器),在這種情況下,將從這些元素構造一個新字典

所以這也是可行的:

一些值得學習的Python內置函數(1)

dict函數還可以接受關鍵字參數來創建一個帶有基於字符串鍵的字典:

一些值得學習的Python內置函數(1)

但我更喜歡用字典字面量來代替:

一些值得學習的Python內置函數(1)

字典字面量語法更靈活,速度更快,但最重要的是,我發現它更清楚地傳達了我們正在創建一個字典的事實。

就像list和tuple一樣,一個空字典也應該使用字面量語法來創建:

一些值得學習的Python內置函數(1)

使用{}稍微提高了CPU效率,但更重要的是,它更符合人們的習慣: 使用大括號({})創建字典是很常見的,但是dict出現的頻率要低得多。

set

set函數生會成一個新的集合,它接受一個帶有可哈希值的迭代器(字符串、數字或其他不可變類型),並返回一個set:

一些值得學習的Python內置函數(1)

使用{}集合字面量語法(純 {} 會創建一個字典)無法生成空集合,因此set函數是生成空集的唯一方法:

一些值得學習的Python內置函數(1)

事實上,這是一個謊言,因為我們有這個:

一些值得學習的Python內置函數(1)

但是這種語法令人困惑(它依賴於*操作符的一個不太常用的特性),所以我不推薦使用它。

range

range函數給我們返回一個range對象,它表示一個數字範圍:

一些值得學習的Python內置函數(1)

得到的數字範圍包括開始數字,但不包括停止數字(range(0,10)不包括10)。

當你想對一些數字進行循環時,range函數很有用。

一些值得學習的Python內置函數(1)

一個常見的用例是執行一個操作n次(順便說一下,這是一個列表推導式):

一些值得學習的Python內置函數(1)

Python 2的range函數會返回一個列表,這意味著上面的表達式將生成非常非常大的列表。python3的range運行方式與python2的xrange類似(儘管它們有一點不同),因為當我們在這些range對象上循環時,數字是延遲計算的。

被新進的Python高手忽略的內置函數

如果你已經使用Python編程了一段時間,或者剛剛學習了Python類的介紹,那麼你可能已經瞭解了上面的內置函數。

現在,我想展示15個內置函數,這些函數非常便於瞭解,但是常常被新進的Python高手所忽略。

你將在Python代碼中發現前10個函數,但最後5個函數最常在調試時使用。

bool

bool函數會檢查一個Python對象的真實性。

對於數字,真實性是一個非零的問題:

一些值得學習的Python內置函數(1)

對於集合,真實性通常是一個非空的問題(集合的長度是否大於0):

"

在我教的每一節Python入門課上,經常都會被問道像“我們如何才能知道所有這些”這樣的問題。

通常還伴隨著這些問題:

  1. Python中有很多函數,記住這些函數的最好方法是什麼?
  2. 學習我們日常需要的函數,如enumerate 和 range,最好的方法是什麼?
  3. 你是如何知道Python中解決問題的所有方法的?你記下來了嗎?

有幾十個內置函數和類,數百個工具捆綁在Python的標準庫中,以及PyPI上的數千個第三方庫。任何人都不可能記住所有這些東西。

我建議你對你的知識進行分類:

  1. 我應該記住的東西,這樣我就能很好地理解它們
  2. 我應該知道的東西,這樣我以後才能更有效地查找它們
  3. 我根本不應該為之煩惱的東西,除非有一天我需要它們

將這個方法記在腦海中,我們來瀏覽Python文檔中的內置函數頁面。

這將是一篇很長的文章,所以在下一節中我將鏈接到5個子部分和20個特定的內置函數,所以如果你有時間或者正在尋找一個內置函數,你可以提前跳過去查看。

你應該瞭解哪些內置組件?

我估計大多數Python開發人員只需要大約30個內置函數,但是哪30個取決於你實際使用Python做什麼。

我們將以鳥瞰的方式來看看Python中的所有的69個內置函數。

我將嘗試把這些內置組件分成五類:

  1. 眾所周知: 大多數python初學者會因為需要而很快地接觸到這些內置組件
  2. 初學者所忽略的: 瞭解這些函數很有用,但是當你是Python新手時,就會很容易忽略它們
  3. 稍後再學習的: 瞭解這些內置組件通常很有用,但是當/如果你需要它們時,你就會找到它們
  4. 也許最終會學的: 這些東西遲早會派上用場,但只是在特定的情況下
  5. 你可能不需要這些: 除非你在做一些相當專業的事情,否則你不太可能會需要這些

類別1和類別2中的內置函數幾乎是所有Python程序員最終都應該學習的基本內置函數。類別3和類別4中的內置函數是專門的內置函數,它們通常非常有用,但是你對它們的需求會根據你對Python的使用情況而有所不同。類別5是神祕的內置函數,當你需要它們時,這可能非常方便,但是許多Python程序員可能永遠都不需要它們。

Python高手請注意: 我將把所有這些內置組件都稱為函數,儘管其中的27個實際上並不是函數(如我的函數和callables文章中所討論的)。

常見的內置函數(你可能已經很熟悉了):

  1. print
  2. len
  3. str
  4. int
  5. float
  6. list
  7. tuple
  8. dict
  9. set
  10. range

經常被新的Python編程者所忽略的內置函數:

  1. sum
  2. enumerate
  3. zip
  4. bool
  5. reversed
  6. sorted
  7. min
  8. max
  9. any
  10. all

還有5個通常被忽略的內置函數,我建議你自己去了解它們,因為它們使調試更容易: dir、vars、breakpoint、type和help。

除了上面的25個內置函數之外,我們還將在稍後的“以後學習並可能最終會學習的”和“你可能不需要這些”部分中簡要介紹其他的44個內置函數。

10個常見的內置函數

如果你一直在編寫Python代碼,那麼這些內置程序對你來說可能已經很熟悉了。

print

你已經知道了print函數。實現hello world需要用到print。

你可能不瞭解print所接受的各種關鍵字參數:

一些值得學習的Python內置函數(1)

你可以自己查看print函數。

len

在Python中,我們不寫像my_list.length()或my_string.length()這樣的函數; 相反,我們會奇怪地(至少對於新的python開發者來說)使用len(my_list)和len(my_string)。

一些值得學習的Python內置函數(1)

無論你是否喜歡這個類似於操作符的len函數,你都必須使用它,所以你需要習慣它。

str

與許多其他編程語言不同,你不能在Python中連接字符串和數字。

一些值得學習的Python內置函數(1)

Python拒絕將3個整數強制作為一個字符串,所以我們需要自己手動執行,使用內置的str函數(技術上來說是類,但正如我所說的,我將所有這些都稱為函數):

一些值得學習的Python內置函數(1)

int

你是否有用戶輸入並需要將其轉換為數字?那你就需要int函數!

int函數可以將字符串轉換為整數:

一些值得學習的Python內置函數(1)

你還可以使用int將浮點數截斷為整數:

一些值得學習的Python內置函數(1)

注意,如果你在進行除法運算時需要截斷,//操作符可能更合適(儘管它對負數的運行情況會不同):int(3 / 2) == 3 // 2。

float

你要轉換為數字的字符串實際上不是一個整數嗎?那麼你將使用float而不是int來進行轉換。

一些值得學習的Python內置函數(1)

你還可以使用float將整數轉換為浮點數。

在python2中,我們常常使用float將整數轉換為浮點數來強制進行浮點除法而不是整數除法。“整數除法”在Python 3中已經不存在了(除非你專門使用//運算符),因此我們不再需要float來實現這個目的。如果你一旦在Python3代碼中看到float(x) / y,你就可以把它改成x / y。

list

想要創建一個其他一些可迭代對象的列表嗎?

list函數就是做這些的:

一些值得學習的Python內置函數(1)

如果你知道你在處理一個列表,你可以使用copy方法來創建一個該列表的新副本:

一些值得學習的Python內置函數(1)

但是如果你不知道你正在處理的可迭代對象是什麼,list函數是循環一個可迭代對象並複製它的更通用的方法:

一些值得學習的Python內置函數(1)

你也可以使用一個列表推導式,但我不推薦這樣做。

注意,當你想要創建一個空列表時,建議使用列表字面量語法(那些[]括號):

一些值得學習的Python內置函數(1)

使用[]被認為更符合習慣,因為那些方括號([])實際上看起來像一個Python列表。

tuple

tuple函數與list函數非常相似,只是它會創建元組:

一些值得學習的Python內置函數(1)

如果你需要一個元組而不是列表,比如是因為你正在嘗試創建一個可在字典的鍵中使用的可哈希集合,那你可能會想要使用tuple而不是list。

dict

dict函數用於創建一個新字典。

與list和tuple類似,dict函數等價於在一個具有鍵值對的迭代器上進行循環,並從中生成一個字典。

給定一個兩項元組的列表:

一些值得學習的Python內置函數(1)

這個:

一些值得學習的Python內置函數(1)

可以用dict函數代替來生成:

一些值得學習的Python內置函數(1)

dict函數接受兩種類型的參數:

  1. 另一個字典(通用術語是映射),在這種情況下,該字典將被複制
  2. 一個由鍵值元組組成的列表(更準確地說,是由兩項迭代器組成的一個迭代器),在這種情況下,將從這些元素構造一個新字典

所以這也是可行的:

一些值得學習的Python內置函數(1)

dict函數還可以接受關鍵字參數來創建一個帶有基於字符串鍵的字典:

一些值得學習的Python內置函數(1)

但我更喜歡用字典字面量來代替:

一些值得學習的Python內置函數(1)

字典字面量語法更靈活,速度更快,但最重要的是,我發現它更清楚地傳達了我們正在創建一個字典的事實。

就像list和tuple一樣,一個空字典也應該使用字面量語法來創建:

一些值得學習的Python內置函數(1)

使用{}稍微提高了CPU效率,但更重要的是,它更符合人們的習慣: 使用大括號({})創建字典是很常見的,但是dict出現的頻率要低得多。

set

set函數生會成一個新的集合,它接受一個帶有可哈希值的迭代器(字符串、數字或其他不可變類型),並返回一個set:

一些值得學習的Python內置函數(1)

使用{}集合字面量語法(純 {} 會創建一個字典)無法生成空集合,因此set函數是生成空集的唯一方法:

一些值得學習的Python內置函數(1)

事實上,這是一個謊言,因為我們有這個:

一些值得學習的Python內置函數(1)

但是這種語法令人困惑(它依賴於*操作符的一個不太常用的特性),所以我不推薦使用它。

range

range函數給我們返回一個range對象,它表示一個數字範圍:

一些值得學習的Python內置函數(1)

得到的數字範圍包括開始數字,但不包括停止數字(range(0,10)不包括10)。

當你想對一些數字進行循環時,range函數很有用。

一些值得學習的Python內置函數(1)

一個常見的用例是執行一個操作n次(順便說一下,這是一個列表推導式):

一些值得學習的Python內置函數(1)

Python 2的range函數會返回一個列表,這意味著上面的表達式將生成非常非常大的列表。python3的range運行方式與python2的xrange類似(儘管它們有一點不同),因為當我們在這些range對象上循環時,數字是延遲計算的。

被新進的Python高手忽略的內置函數

如果你已經使用Python編程了一段時間,或者剛剛學習了Python類的介紹,那麼你可能已經瞭解了上面的內置函數。

現在,我想展示15個內置函數,這些函數非常便於瞭解,但是常常被新進的Python高手所忽略。

你將在Python代碼中發現前10個函數,但最後5個函數最常在調試時使用。

bool

bool函數會檢查一個Python對象的真實性。

對於數字,真實性是一個非零的問題:

一些值得學習的Python內置函數(1)

對於集合,真實性通常是一個非空的問題(集合的長度是否大於0):

一些值得學習的Python內置函數(1)

真實性(在文檔中稱為真值測試)在Python中非常重要。

代替詢問一些關於一個容器長度的問題,許多Python高手會問一些有關真實性的問題:

"

在我教的每一節Python入門課上,經常都會被問道像“我們如何才能知道所有這些”這樣的問題。

通常還伴隨著這些問題:

  1. Python中有很多函數,記住這些函數的最好方法是什麼?
  2. 學習我們日常需要的函數,如enumerate 和 range,最好的方法是什麼?
  3. 你是如何知道Python中解決問題的所有方法的?你記下來了嗎?

有幾十個內置函數和類,數百個工具捆綁在Python的標準庫中,以及PyPI上的數千個第三方庫。任何人都不可能記住所有這些東西。

我建議你對你的知識進行分類:

  1. 我應該記住的東西,這樣我就能很好地理解它們
  2. 我應該知道的東西,這樣我以後才能更有效地查找它們
  3. 我根本不應該為之煩惱的東西,除非有一天我需要它們

將這個方法記在腦海中,我們來瀏覽Python文檔中的內置函數頁面。

這將是一篇很長的文章,所以在下一節中我將鏈接到5個子部分和20個特定的內置函數,所以如果你有時間或者正在尋找一個內置函數,你可以提前跳過去查看。

你應該瞭解哪些內置組件?

我估計大多數Python開發人員只需要大約30個內置函數,但是哪30個取決於你實際使用Python做什麼。

我們將以鳥瞰的方式來看看Python中的所有的69個內置函數。

我將嘗試把這些內置組件分成五類:

  1. 眾所周知: 大多數python初學者會因為需要而很快地接觸到這些內置組件
  2. 初學者所忽略的: 瞭解這些函數很有用,但是當你是Python新手時,就會很容易忽略它們
  3. 稍後再學習的: 瞭解這些內置組件通常很有用,但是當/如果你需要它們時,你就會找到它們
  4. 也許最終會學的: 這些東西遲早會派上用場,但只是在特定的情況下
  5. 你可能不需要這些: 除非你在做一些相當專業的事情,否則你不太可能會需要這些

類別1和類別2中的內置函數幾乎是所有Python程序員最終都應該學習的基本內置函數。類別3和類別4中的內置函數是專門的內置函數,它們通常非常有用,但是你對它們的需求會根據你對Python的使用情況而有所不同。類別5是神祕的內置函數,當你需要它們時,這可能非常方便,但是許多Python程序員可能永遠都不需要它們。

Python高手請注意: 我將把所有這些內置組件都稱為函數,儘管其中的27個實際上並不是函數(如我的函數和callables文章中所討論的)。

常見的內置函數(你可能已經很熟悉了):

  1. print
  2. len
  3. str
  4. int
  5. float
  6. list
  7. tuple
  8. dict
  9. set
  10. range

經常被新的Python編程者所忽略的內置函數:

  1. sum
  2. enumerate
  3. zip
  4. bool
  5. reversed
  6. sorted
  7. min
  8. max
  9. any
  10. all

還有5個通常被忽略的內置函數,我建議你自己去了解它們,因為它們使調試更容易: dir、vars、breakpoint、type和help。

除了上面的25個內置函數之外,我們還將在稍後的“以後學習並可能最終會學習的”和“你可能不需要這些”部分中簡要介紹其他的44個內置函數。

10個常見的內置函數

如果你一直在編寫Python代碼,那麼這些內置程序對你來說可能已經很熟悉了。

print

你已經知道了print函數。實現hello world需要用到print。

你可能不瞭解print所接受的各種關鍵字參數:

一些值得學習的Python內置函數(1)

你可以自己查看print函數。

len

在Python中,我們不寫像my_list.length()或my_string.length()這樣的函數; 相反,我們會奇怪地(至少對於新的python開發者來說)使用len(my_list)和len(my_string)。

一些值得學習的Python內置函數(1)

無論你是否喜歡這個類似於操作符的len函數,你都必須使用它,所以你需要習慣它。

str

與許多其他編程語言不同,你不能在Python中連接字符串和數字。

一些值得學習的Python內置函數(1)

Python拒絕將3個整數強制作為一個字符串,所以我們需要自己手動執行,使用內置的str函數(技術上來說是類,但正如我所說的,我將所有這些都稱為函數):

一些值得學習的Python內置函數(1)

int

你是否有用戶輸入並需要將其轉換為數字?那你就需要int函數!

int函數可以將字符串轉換為整數:

一些值得學習的Python內置函數(1)

你還可以使用int將浮點數截斷為整數:

一些值得學習的Python內置函數(1)

注意,如果你在進行除法運算時需要截斷,//操作符可能更合適(儘管它對負數的運行情況會不同):int(3 / 2) == 3 // 2。

float

你要轉換為數字的字符串實際上不是一個整數嗎?那麼你將使用float而不是int來進行轉換。

一些值得學習的Python內置函數(1)

你還可以使用float將整數轉換為浮點數。

在python2中,我們常常使用float將整數轉換為浮點數來強制進行浮點除法而不是整數除法。“整數除法”在Python 3中已經不存在了(除非你專門使用//運算符),因此我們不再需要float來實現這個目的。如果你一旦在Python3代碼中看到float(x) / y,你就可以把它改成x / y。

list

想要創建一個其他一些可迭代對象的列表嗎?

list函數就是做這些的:

一些值得學習的Python內置函數(1)

如果你知道你在處理一個列表,你可以使用copy方法來創建一個該列表的新副本:

一些值得學習的Python內置函數(1)

但是如果你不知道你正在處理的可迭代對象是什麼,list函數是循環一個可迭代對象並複製它的更通用的方法:

一些值得學習的Python內置函數(1)

你也可以使用一個列表推導式,但我不推薦這樣做。

注意,當你想要創建一個空列表時,建議使用列表字面量語法(那些[]括號):

一些值得學習的Python內置函數(1)

使用[]被認為更符合習慣,因為那些方括號([])實際上看起來像一個Python列表。

tuple

tuple函數與list函數非常相似,只是它會創建元組:

一些值得學習的Python內置函數(1)

如果你需要一個元組而不是列表,比如是因為你正在嘗試創建一個可在字典的鍵中使用的可哈希集合,那你可能會想要使用tuple而不是list。

dict

dict函數用於創建一個新字典。

與list和tuple類似,dict函數等價於在一個具有鍵值對的迭代器上進行循環,並從中生成一個字典。

給定一個兩項元組的列表:

一些值得學習的Python內置函數(1)

這個:

一些值得學習的Python內置函數(1)

可以用dict函數代替來生成:

一些值得學習的Python內置函數(1)

dict函數接受兩種類型的參數:

  1. 另一個字典(通用術語是映射),在這種情況下,該字典將被複制
  2. 一個由鍵值元組組成的列表(更準確地說,是由兩項迭代器組成的一個迭代器),在這種情況下,將從這些元素構造一個新字典

所以這也是可行的:

一些值得學習的Python內置函數(1)

dict函數還可以接受關鍵字參數來創建一個帶有基於字符串鍵的字典:

一些值得學習的Python內置函數(1)

但我更喜歡用字典字面量來代替:

一些值得學習的Python內置函數(1)

字典字面量語法更靈活,速度更快,但最重要的是,我發現它更清楚地傳達了我們正在創建一個字典的事實。

就像list和tuple一樣,一個空字典也應該使用字面量語法來創建:

一些值得學習的Python內置函數(1)

使用{}稍微提高了CPU效率,但更重要的是,它更符合人們的習慣: 使用大括號({})創建字典是很常見的,但是dict出現的頻率要低得多。

set

set函數生會成一個新的集合,它接受一個帶有可哈希值的迭代器(字符串、數字或其他不可變類型),並返回一個set:

一些值得學習的Python內置函數(1)

使用{}集合字面量語法(純 {} 會創建一個字典)無法生成空集合,因此set函數是生成空集的唯一方法:

一些值得學習的Python內置函數(1)

事實上,這是一個謊言,因為我們有這個:

一些值得學習的Python內置函數(1)

但是這種語法令人困惑(它依賴於*操作符的一個不太常用的特性),所以我不推薦使用它。

range

range函數給我們返回一個range對象,它表示一個數字範圍:

一些值得學習的Python內置函數(1)

得到的數字範圍包括開始數字,但不包括停止數字(range(0,10)不包括10)。

當你想對一些數字進行循環時,range函數很有用。

一些值得學習的Python內置函數(1)

一個常見的用例是執行一個操作n次(順便說一下,這是一個列表推導式):

一些值得學習的Python內置函數(1)

Python 2的range函數會返回一個列表,這意味著上面的表達式將生成非常非常大的列表。python3的range運行方式與python2的xrange類似(儘管它們有一點不同),因為當我們在這些range對象上循環時,數字是延遲計算的。

被新進的Python高手忽略的內置函數

如果你已經使用Python編程了一段時間,或者剛剛學習了Python類的介紹,那麼你可能已經瞭解了上面的內置函數。

現在,我想展示15個內置函數,這些函數非常便於瞭解,但是常常被新進的Python高手所忽略。

你將在Python代碼中發現前10個函數,但最後5個函數最常在調試時使用。

bool

bool函數會檢查一個Python對象的真實性。

對於數字,真實性是一個非零的問題:

一些值得學習的Python內置函數(1)

對於集合,真實性通常是一個非空的問題(集合的長度是否大於0):

一些值得學習的Python內置函數(1)

真實性(在文檔中稱為真值測試)在Python中非常重要。

代替詢問一些關於一個容器長度的問題,許多Python高手會問一些有關真實性的問題:

一些值得學習的Python內置函數(1)

你可能不會經常看到bool的使用,但是在需要將值強制轉換為布爾值以詢問其真實性的情況下,你會想要了解bool。

enumerate

每當你需要向上計數時,每次一個數字,同時循環遍歷一個迭代器, enumerate函數就會派上用場。

這似乎是一個非常小眾的任務,但它經常出現。

例如,我們可能想要跟蹤一個文件中的行號:

"

在我教的每一節Python入門課上,經常都會被問道像“我們如何才能知道所有這些”這樣的問題。

通常還伴隨著這些問題:

  1. Python中有很多函數,記住這些函數的最好方法是什麼?
  2. 學習我們日常需要的函數,如enumerate 和 range,最好的方法是什麼?
  3. 你是如何知道Python中解決問題的所有方法的?你記下來了嗎?

有幾十個內置函數和類,數百個工具捆綁在Python的標準庫中,以及PyPI上的數千個第三方庫。任何人都不可能記住所有這些東西。

我建議你對你的知識進行分類:

  1. 我應該記住的東西,這樣我就能很好地理解它們
  2. 我應該知道的東西,這樣我以後才能更有效地查找它們
  3. 我根本不應該為之煩惱的東西,除非有一天我需要它們

將這個方法記在腦海中,我們來瀏覽Python文檔中的內置函數頁面。

這將是一篇很長的文章,所以在下一節中我將鏈接到5個子部分和20個特定的內置函數,所以如果你有時間或者正在尋找一個內置函數,你可以提前跳過去查看。

你應該瞭解哪些內置組件?

我估計大多數Python開發人員只需要大約30個內置函數,但是哪30個取決於你實際使用Python做什麼。

我們將以鳥瞰的方式來看看Python中的所有的69個內置函數。

我將嘗試把這些內置組件分成五類:

  1. 眾所周知: 大多數python初學者會因為需要而很快地接觸到這些內置組件
  2. 初學者所忽略的: 瞭解這些函數很有用,但是當你是Python新手時,就會很容易忽略它們
  3. 稍後再學習的: 瞭解這些內置組件通常很有用,但是當/如果你需要它們時,你就會找到它們
  4. 也許最終會學的: 這些東西遲早會派上用場,但只是在特定的情況下
  5. 你可能不需要這些: 除非你在做一些相當專業的事情,否則你不太可能會需要這些

類別1和類別2中的內置函數幾乎是所有Python程序員最終都應該學習的基本內置函數。類別3和類別4中的內置函數是專門的內置函數,它們通常非常有用,但是你對它們的需求會根據你對Python的使用情況而有所不同。類別5是神祕的內置函數,當你需要它們時,這可能非常方便,但是許多Python程序員可能永遠都不需要它們。

Python高手請注意: 我將把所有這些內置組件都稱為函數,儘管其中的27個實際上並不是函數(如我的函數和callables文章中所討論的)。

常見的內置函數(你可能已經很熟悉了):

  1. print
  2. len
  3. str
  4. int
  5. float
  6. list
  7. tuple
  8. dict
  9. set
  10. range

經常被新的Python編程者所忽略的內置函數:

  1. sum
  2. enumerate
  3. zip
  4. bool
  5. reversed
  6. sorted
  7. min
  8. max
  9. any
  10. all

還有5個通常被忽略的內置函數,我建議你自己去了解它們,因為它們使調試更容易: dir、vars、breakpoint、type和help。

除了上面的25個內置函數之外,我們還將在稍後的“以後學習並可能最終會學習的”和“你可能不需要這些”部分中簡要介紹其他的44個內置函數。

10個常見的內置函數

如果你一直在編寫Python代碼,那麼這些內置程序對你來說可能已經很熟悉了。

print

你已經知道了print函數。實現hello world需要用到print。

你可能不瞭解print所接受的各種關鍵字參數:

一些值得學習的Python內置函數(1)

你可以自己查看print函數。

len

在Python中,我們不寫像my_list.length()或my_string.length()這樣的函數; 相反,我們會奇怪地(至少對於新的python開發者來說)使用len(my_list)和len(my_string)。

一些值得學習的Python內置函數(1)

無論你是否喜歡這個類似於操作符的len函數,你都必須使用它,所以你需要習慣它。

str

與許多其他編程語言不同,你不能在Python中連接字符串和數字。

一些值得學習的Python內置函數(1)

Python拒絕將3個整數強制作為一個字符串,所以我們需要自己手動執行,使用內置的str函數(技術上來說是類,但正如我所說的,我將所有這些都稱為函數):

一些值得學習的Python內置函數(1)

int

你是否有用戶輸入並需要將其轉換為數字?那你就需要int函數!

int函數可以將字符串轉換為整數:

一些值得學習的Python內置函數(1)

你還可以使用int將浮點數截斷為整數:

一些值得學習的Python內置函數(1)

注意,如果你在進行除法運算時需要截斷,//操作符可能更合適(儘管它對負數的運行情況會不同):int(3 / 2) == 3 // 2。

float

你要轉換為數字的字符串實際上不是一個整數嗎?那麼你將使用float而不是int來進行轉換。

一些值得學習的Python內置函數(1)

你還可以使用float將整數轉換為浮點數。

在python2中,我們常常使用float將整數轉換為浮點數來強制進行浮點除法而不是整數除法。“整數除法”在Python 3中已經不存在了(除非你專門使用//運算符),因此我們不再需要float來實現這個目的。如果你一旦在Python3代碼中看到float(x) / y,你就可以把它改成x / y。

list

想要創建一個其他一些可迭代對象的列表嗎?

list函數就是做這些的:

一些值得學習的Python內置函數(1)

如果你知道你在處理一個列表,你可以使用copy方法來創建一個該列表的新副本:

一些值得學習的Python內置函數(1)

但是如果你不知道你正在處理的可迭代對象是什麼,list函數是循環一個可迭代對象並複製它的更通用的方法:

一些值得學習的Python內置函數(1)

你也可以使用一個列表推導式,但我不推薦這樣做。

注意,當你想要創建一個空列表時,建議使用列表字面量語法(那些[]括號):

一些值得學習的Python內置函數(1)

使用[]被認為更符合習慣,因為那些方括號([])實際上看起來像一個Python列表。

tuple

tuple函數與list函數非常相似,只是它會創建元組:

一些值得學習的Python內置函數(1)

如果你需要一個元組而不是列表,比如是因為你正在嘗試創建一個可在字典的鍵中使用的可哈希集合,那你可能會想要使用tuple而不是list。

dict

dict函數用於創建一個新字典。

與list和tuple類似,dict函數等價於在一個具有鍵值對的迭代器上進行循環,並從中生成一個字典。

給定一個兩項元組的列表:

一些值得學習的Python內置函數(1)

這個:

一些值得學習的Python內置函數(1)

可以用dict函數代替來生成:

一些值得學習的Python內置函數(1)

dict函數接受兩種類型的參數:

  1. 另一個字典(通用術語是映射),在這種情況下,該字典將被複制
  2. 一個由鍵值元組組成的列表(更準確地說,是由兩項迭代器組成的一個迭代器),在這種情況下,將從這些元素構造一個新字典

所以這也是可行的:

一些值得學習的Python內置函數(1)

dict函數還可以接受關鍵字參數來創建一個帶有基於字符串鍵的字典:

一些值得學習的Python內置函數(1)

但我更喜歡用字典字面量來代替:

一些值得學習的Python內置函數(1)

字典字面量語法更靈活,速度更快,但最重要的是,我發現它更清楚地傳達了我們正在創建一個字典的事實。

就像list和tuple一樣,一個空字典也應該使用字面量語法來創建:

一些值得學習的Python內置函數(1)

使用{}稍微提高了CPU效率,但更重要的是,它更符合人們的習慣: 使用大括號({})創建字典是很常見的,但是dict出現的頻率要低得多。

set

set函數生會成一個新的集合,它接受一個帶有可哈希值的迭代器(字符串、數字或其他不可變類型),並返回一個set:

一些值得學習的Python內置函數(1)

使用{}集合字面量語法(純 {} 會創建一個字典)無法生成空集合,因此set函數是生成空集的唯一方法:

一些值得學習的Python內置函數(1)

事實上,這是一個謊言,因為我們有這個:

一些值得學習的Python內置函數(1)

但是這種語法令人困惑(它依賴於*操作符的一個不太常用的特性),所以我不推薦使用它。

range

range函數給我們返回一個range對象,它表示一個數字範圍:

一些值得學習的Python內置函數(1)

得到的數字範圍包括開始數字,但不包括停止數字(range(0,10)不包括10)。

當你想對一些數字進行循環時,range函數很有用。

一些值得學習的Python內置函數(1)

一個常見的用例是執行一個操作n次(順便說一下,這是一個列表推導式):

一些值得學習的Python內置函數(1)

Python 2的range函數會返回一個列表,這意味著上面的表達式將生成非常非常大的列表。python3的range運行方式與python2的xrange類似(儘管它們有一點不同),因為當我們在這些range對象上循環時,數字是延遲計算的。

被新進的Python高手忽略的內置函數

如果你已經使用Python編程了一段時間,或者剛剛學習了Python類的介紹,那麼你可能已經瞭解了上面的內置函數。

現在,我想展示15個內置函數,這些函數非常便於瞭解,但是常常被新進的Python高手所忽略。

你將在Python代碼中發現前10個函數,但最後5個函數最常在調試時使用。

bool

bool函數會檢查一個Python對象的真實性。

對於數字,真實性是一個非零的問題:

一些值得學習的Python內置函數(1)

對於集合,真實性通常是一個非空的問題(集合的長度是否大於0):

一些值得學習的Python內置函數(1)

真實性(在文檔中稱為真值測試)在Python中非常重要。

代替詢問一些關於一個容器長度的問題,許多Python高手會問一些有關真實性的問題:

一些值得學習的Python內置函數(1)

你可能不會經常看到bool的使用,但是在需要將值強制轉換為布爾值以詢問其真實性的情況下,你會想要了解bool。

enumerate

每當你需要向上計數時,每次一個數字,同時循環遍歷一個迭代器, enumerate函數就會派上用場。

這似乎是一個非常小眾的任務,但它經常出現。

例如,我們可能想要跟蹤一個文件中的行號:

一些值得學習的Python內置函數(1)

enumerate函數也常常用來跟蹤序列中項目的索引。

"

在我教的每一節Python入門課上,經常都會被問道像“我們如何才能知道所有這些”這樣的問題。

通常還伴隨著這些問題:

  1. Python中有很多函數,記住這些函數的最好方法是什麼?
  2. 學習我們日常需要的函數,如enumerate 和 range,最好的方法是什麼?
  3. 你是如何知道Python中解決問題的所有方法的?你記下來了嗎?

有幾十個內置函數和類,數百個工具捆綁在Python的標準庫中,以及PyPI上的數千個第三方庫。任何人都不可能記住所有這些東西。

我建議你對你的知識進行分類:

  1. 我應該記住的東西,這樣我就能很好地理解它們
  2. 我應該知道的東西,這樣我以後才能更有效地查找它們
  3. 我根本不應該為之煩惱的東西,除非有一天我需要它們

將這個方法記在腦海中,我們來瀏覽Python文檔中的內置函數頁面。

這將是一篇很長的文章,所以在下一節中我將鏈接到5個子部分和20個特定的內置函數,所以如果你有時間或者正在尋找一個內置函數,你可以提前跳過去查看。

你應該瞭解哪些內置組件?

我估計大多數Python開發人員只需要大約30個內置函數,但是哪30個取決於你實際使用Python做什麼。

我們將以鳥瞰的方式來看看Python中的所有的69個內置函數。

我將嘗試把這些內置組件分成五類:

  1. 眾所周知: 大多數python初學者會因為需要而很快地接觸到這些內置組件
  2. 初學者所忽略的: 瞭解這些函數很有用,但是當你是Python新手時,就會很容易忽略它們
  3. 稍後再學習的: 瞭解這些內置組件通常很有用,但是當/如果你需要它們時,你就會找到它們
  4. 也許最終會學的: 這些東西遲早會派上用場,但只是在特定的情況下
  5. 你可能不需要這些: 除非你在做一些相當專業的事情,否則你不太可能會需要這些

類別1和類別2中的內置函數幾乎是所有Python程序員最終都應該學習的基本內置函數。類別3和類別4中的內置函數是專門的內置函數,它們通常非常有用,但是你對它們的需求會根據你對Python的使用情況而有所不同。類別5是神祕的內置函數,當你需要它們時,這可能非常方便,但是許多Python程序員可能永遠都不需要它們。

Python高手請注意: 我將把所有這些內置組件都稱為函數,儘管其中的27個實際上並不是函數(如我的函數和callables文章中所討論的)。

常見的內置函數(你可能已經很熟悉了):

  1. print
  2. len
  3. str
  4. int
  5. float
  6. list
  7. tuple
  8. dict
  9. set
  10. range

經常被新的Python編程者所忽略的內置函數:

  1. sum
  2. enumerate
  3. zip
  4. bool
  5. reversed
  6. sorted
  7. min
  8. max
  9. any
  10. all

還有5個通常被忽略的內置函數,我建議你自己去了解它們,因為它們使調試更容易: dir、vars、breakpoint、type和help。

除了上面的25個內置函數之外,我們還將在稍後的“以後學習並可能最終會學習的”和“你可能不需要這些”部分中簡要介紹其他的44個內置函數。

10個常見的內置函數

如果你一直在編寫Python代碼,那麼這些內置程序對你來說可能已經很熟悉了。

print

你已經知道了print函數。實現hello world需要用到print。

你可能不瞭解print所接受的各種關鍵字參數:

一些值得學習的Python內置函數(1)

你可以自己查看print函數。

len

在Python中,我們不寫像my_list.length()或my_string.length()這樣的函數; 相反,我們會奇怪地(至少對於新的python開發者來說)使用len(my_list)和len(my_string)。

一些值得學習的Python內置函數(1)

無論你是否喜歡這個類似於操作符的len函數,你都必須使用它,所以你需要習慣它。

str

與許多其他編程語言不同,你不能在Python中連接字符串和數字。

一些值得學習的Python內置函數(1)

Python拒絕將3個整數強制作為一個字符串,所以我們需要自己手動執行,使用內置的str函數(技術上來說是類,但正如我所說的,我將所有這些都稱為函數):

一些值得學習的Python內置函數(1)

int

你是否有用戶輸入並需要將其轉換為數字?那你就需要int函數!

int函數可以將字符串轉換為整數:

一些值得學習的Python內置函數(1)

你還可以使用int將浮點數截斷為整數:

一些值得學習的Python內置函數(1)

注意,如果你在進行除法運算時需要截斷,//操作符可能更合適(儘管它對負數的運行情況會不同):int(3 / 2) == 3 // 2。

float

你要轉換為數字的字符串實際上不是一個整數嗎?那麼你將使用float而不是int來進行轉換。

一些值得學習的Python內置函數(1)

你還可以使用float將整數轉換為浮點數。

在python2中,我們常常使用float將整數轉換為浮點數來強制進行浮點除法而不是整數除法。“整數除法”在Python 3中已經不存在了(除非你專門使用//運算符),因此我們不再需要float來實現這個目的。如果你一旦在Python3代碼中看到float(x) / y,你就可以把它改成x / y。

list

想要創建一個其他一些可迭代對象的列表嗎?

list函數就是做這些的:

一些值得學習的Python內置函數(1)

如果你知道你在處理一個列表,你可以使用copy方法來創建一個該列表的新副本:

一些值得學習的Python內置函數(1)

但是如果你不知道你正在處理的可迭代對象是什麼,list函數是循環一個可迭代對象並複製它的更通用的方法:

一些值得學習的Python內置函數(1)

你也可以使用一個列表推導式,但我不推薦這樣做。

注意,當你想要創建一個空列表時,建議使用列表字面量語法(那些[]括號):

一些值得學習的Python內置函數(1)

使用[]被認為更符合習慣,因為那些方括號([])實際上看起來像一個Python列表。

tuple

tuple函數與list函數非常相似,只是它會創建元組:

一些值得學習的Python內置函數(1)

如果你需要一個元組而不是列表,比如是因為你正在嘗試創建一個可在字典的鍵中使用的可哈希集合,那你可能會想要使用tuple而不是list。

dict

dict函數用於創建一個新字典。

與list和tuple類似,dict函數等價於在一個具有鍵值對的迭代器上進行循環,並從中生成一個字典。

給定一個兩項元組的列表:

一些值得學習的Python內置函數(1)

這個:

一些值得學習的Python內置函數(1)

可以用dict函數代替來生成:

一些值得學習的Python內置函數(1)

dict函數接受兩種類型的參數:

  1. 另一個字典(通用術語是映射),在這種情況下,該字典將被複制
  2. 一個由鍵值元組組成的列表(更準確地說,是由兩項迭代器組成的一個迭代器),在這種情況下,將從這些元素構造一個新字典

所以這也是可行的:

一些值得學習的Python內置函數(1)

dict函數還可以接受關鍵字參數來創建一個帶有基於字符串鍵的字典:

一些值得學習的Python內置函數(1)

但我更喜歡用字典字面量來代替:

一些值得學習的Python內置函數(1)

字典字面量語法更靈活,速度更快,但最重要的是,我發現它更清楚地傳達了我們正在創建一個字典的事實。

就像list和tuple一樣,一個空字典也應該使用字面量語法來創建:

一些值得學習的Python內置函數(1)

使用{}稍微提高了CPU效率,但更重要的是,它更符合人們的習慣: 使用大括號({})創建字典是很常見的,但是dict出現的頻率要低得多。

set

set函數生會成一個新的集合,它接受一個帶有可哈希值的迭代器(字符串、數字或其他不可變類型),並返回一個set:

一些值得學習的Python內置函數(1)

使用{}集合字面量語法(純 {} 會創建一個字典)無法生成空集合,因此set函數是生成空集的唯一方法:

一些值得學習的Python內置函數(1)

事實上,這是一個謊言,因為我們有這個:

一些值得學習的Python內置函數(1)

但是這種語法令人困惑(它依賴於*操作符的一個不太常用的特性),所以我不推薦使用它。

range

range函數給我們返回一個range對象,它表示一個數字範圍:

一些值得學習的Python內置函數(1)

得到的數字範圍包括開始數字,但不包括停止數字(range(0,10)不包括10)。

當你想對一些數字進行循環時,range函數很有用。

一些值得學習的Python內置函數(1)

一個常見的用例是執行一個操作n次(順便說一下,這是一個列表推導式):

一些值得學習的Python內置函數(1)

Python 2的range函數會返回一個列表,這意味著上面的表達式將生成非常非常大的列表。python3的range運行方式與python2的xrange類似(儘管它們有一點不同),因為當我們在這些range對象上循環時,數字是延遲計算的。

被新進的Python高手忽略的內置函數

如果你已經使用Python編程了一段時間,或者剛剛學習了Python類的介紹,那麼你可能已經瞭解了上面的內置函數。

現在,我想展示15個內置函數,這些函數非常便於瞭解,但是常常被新進的Python高手所忽略。

你將在Python代碼中發現前10個函數,但最後5個函數最常在調試時使用。

bool

bool函數會檢查一個Python對象的真實性。

對於數字,真實性是一個非零的問題:

一些值得學習的Python內置函數(1)

對於集合,真實性通常是一個非空的問題(集合的長度是否大於0):

一些值得學習的Python內置函數(1)

真實性(在文檔中稱為真值測試)在Python中非常重要。

代替詢問一些關於一個容器長度的問題,許多Python高手會問一些有關真實性的問題:

一些值得學習的Python內置函數(1)

你可能不會經常看到bool的使用,但是在需要將值強制轉換為布爾值以詢問其真實性的情況下,你會想要了解bool。

enumerate

每當你需要向上計數時,每次一個數字,同時循環遍歷一個迭代器, enumerate函數就會派上用場。

這似乎是一個非常小眾的任務,但它經常出現。

例如,我們可能想要跟蹤一個文件中的行號:

一些值得學習的Python內置函數(1)

enumerate函數也常常用來跟蹤序列中項目的索引。

一些值得學習的Python內置函數(1)

注意,你可能會看到較新的Python專家在Python中使用range(len(sequence))。如果你看到帶有range(len(…))的代碼,那你幾乎總是希望使用enumerate來代替。

"

在我教的每一節Python入門課上,經常都會被問道像“我們如何才能知道所有這些”這樣的問題。

通常還伴隨著這些問題:

  1. Python中有很多函數,記住這些函數的最好方法是什麼?
  2. 學習我們日常需要的函數,如enumerate 和 range,最好的方法是什麼?
  3. 你是如何知道Python中解決問題的所有方法的?你記下來了嗎?

有幾十個內置函數和類,數百個工具捆綁在Python的標準庫中,以及PyPI上的數千個第三方庫。任何人都不可能記住所有這些東西。

我建議你對你的知識進行分類:

  1. 我應該記住的東西,這樣我就能很好地理解它們
  2. 我應該知道的東西,這樣我以後才能更有效地查找它們
  3. 我根本不應該為之煩惱的東西,除非有一天我需要它們

將這個方法記在腦海中,我們來瀏覽Python文檔中的內置函數頁面。

這將是一篇很長的文章,所以在下一節中我將鏈接到5個子部分和20個特定的內置函數,所以如果你有時間或者正在尋找一個內置函數,你可以提前跳過去查看。

你應該瞭解哪些內置組件?

我估計大多數Python開發人員只需要大約30個內置函數,但是哪30個取決於你實際使用Python做什麼。

我們將以鳥瞰的方式來看看Python中的所有的69個內置函數。

我將嘗試把這些內置組件分成五類:

  1. 眾所周知: 大多數python初學者會因為需要而很快地接觸到這些內置組件
  2. 初學者所忽略的: 瞭解這些函數很有用,但是當你是Python新手時,就會很容易忽略它們
  3. 稍後再學習的: 瞭解這些內置組件通常很有用,但是當/如果你需要它們時,你就會找到它們
  4. 也許最終會學的: 這些東西遲早會派上用場,但只是在特定的情況下
  5. 你可能不需要這些: 除非你在做一些相當專業的事情,否則你不太可能會需要這些

類別1和類別2中的內置函數幾乎是所有Python程序員最終都應該學習的基本內置函數。類別3和類別4中的內置函數是專門的內置函數,它們通常非常有用,但是你對它們的需求會根據你對Python的使用情況而有所不同。類別5是神祕的內置函數,當你需要它們時,這可能非常方便,但是許多Python程序員可能永遠都不需要它們。

Python高手請注意: 我將把所有這些內置組件都稱為函數,儘管其中的27個實際上並不是函數(如我的函數和callables文章中所討論的)。

常見的內置函數(你可能已經很熟悉了):

  1. print
  2. len
  3. str
  4. int
  5. float
  6. list
  7. tuple
  8. dict
  9. set
  10. range

經常被新的Python編程者所忽略的內置函數:

  1. sum
  2. enumerate
  3. zip
  4. bool
  5. reversed
  6. sorted
  7. min
  8. max
  9. any
  10. all

還有5個通常被忽略的內置函數,我建議你自己去了解它們,因為它們使調試更容易: dir、vars、breakpoint、type和help。

除了上面的25個內置函數之外,我們還將在稍後的“以後學習並可能最終會學習的”和“你可能不需要這些”部分中簡要介紹其他的44個內置函數。

10個常見的內置函數

如果你一直在編寫Python代碼,那麼這些內置程序對你來說可能已經很熟悉了。

print

你已經知道了print函數。實現hello world需要用到print。

你可能不瞭解print所接受的各種關鍵字參數:

一些值得學習的Python內置函數(1)

你可以自己查看print函數。

len

在Python中,我們不寫像my_list.length()或my_string.length()這樣的函數; 相反,我們會奇怪地(至少對於新的python開發者來說)使用len(my_list)和len(my_string)。

一些值得學習的Python內置函數(1)

無論你是否喜歡這個類似於操作符的len函數,你都必須使用它,所以你需要習慣它。

str

與許多其他編程語言不同,你不能在Python中連接字符串和數字。

一些值得學習的Python內置函數(1)

Python拒絕將3個整數強制作為一個字符串,所以我們需要自己手動執行,使用內置的str函數(技術上來說是類,但正如我所說的,我將所有這些都稱為函數):

一些值得學習的Python內置函數(1)

int

你是否有用戶輸入並需要將其轉換為數字?那你就需要int函數!

int函數可以將字符串轉換為整數:

一些值得學習的Python內置函數(1)

你還可以使用int將浮點數截斷為整數:

一些值得學習的Python內置函數(1)

注意,如果你在進行除法運算時需要截斷,//操作符可能更合適(儘管它對負數的運行情況會不同):int(3 / 2) == 3 // 2。

float

你要轉換為數字的字符串實際上不是一個整數嗎?那麼你將使用float而不是int來進行轉換。

一些值得學習的Python內置函數(1)

你還可以使用float將整數轉換為浮點數。

在python2中,我們常常使用float將整數轉換為浮點數來強制進行浮點除法而不是整數除法。“整數除法”在Python 3中已經不存在了(除非你專門使用//運算符),因此我們不再需要float來實現這個目的。如果你一旦在Python3代碼中看到float(x) / y,你就可以把它改成x / y。

list

想要創建一個其他一些可迭代對象的列表嗎?

list函數就是做這些的:

一些值得學習的Python內置函數(1)

如果你知道你在處理一個列表,你可以使用copy方法來創建一個該列表的新副本:

一些值得學習的Python內置函數(1)

但是如果你不知道你正在處理的可迭代對象是什麼,list函數是循環一個可迭代對象並複製它的更通用的方法:

一些值得學習的Python內置函數(1)

你也可以使用一個列表推導式,但我不推薦這樣做。

注意,當你想要創建一個空列表時,建議使用列表字面量語法(那些[]括號):

一些值得學習的Python內置函數(1)

使用[]被認為更符合習慣,因為那些方括號([])實際上看起來像一個Python列表。

tuple

tuple函數與list函數非常相似,只是它會創建元組:

一些值得學習的Python內置函數(1)

如果你需要一個元組而不是列表,比如是因為你正在嘗試創建一個可在字典的鍵中使用的可哈希集合,那你可能會想要使用tuple而不是list。

dict

dict函數用於創建一個新字典。

與list和tuple類似,dict函數等價於在一個具有鍵值對的迭代器上進行循環,並從中生成一個字典。

給定一個兩項元組的列表:

一些值得學習的Python內置函數(1)

這個:

一些值得學習的Python內置函數(1)

可以用dict函數代替來生成:

一些值得學習的Python內置函數(1)

dict函數接受兩種類型的參數:

  1. 另一個字典(通用術語是映射),在這種情況下,該字典將被複制
  2. 一個由鍵值元組組成的列表(更準確地說,是由兩項迭代器組成的一個迭代器),在這種情況下,將從這些元素構造一個新字典

所以這也是可行的:

一些值得學習的Python內置函數(1)

dict函數還可以接受關鍵字參數來創建一個帶有基於字符串鍵的字典:

一些值得學習的Python內置函數(1)

但我更喜歡用字典字面量來代替:

一些值得學習的Python內置函數(1)

字典字面量語法更靈活,速度更快,但最重要的是,我發現它更清楚地傳達了我們正在創建一個字典的事實。

就像list和tuple一樣,一個空字典也應該使用字面量語法來創建:

一些值得學習的Python內置函數(1)

使用{}稍微提高了CPU效率,但更重要的是,它更符合人們的習慣: 使用大括號({})創建字典是很常見的,但是dict出現的頻率要低得多。

set

set函數生會成一個新的集合,它接受一個帶有可哈希值的迭代器(字符串、數字或其他不可變類型),並返回一個set:

一些值得學習的Python內置函數(1)

使用{}集合字面量語法(純 {} 會創建一個字典)無法生成空集合,因此set函數是生成空集的唯一方法:

一些值得學習的Python內置函數(1)

事實上,這是一個謊言,因為我們有這個:

一些值得學習的Python內置函數(1)

但是這種語法令人困惑(它依賴於*操作符的一個不太常用的特性),所以我不推薦使用它。

range

range函數給我們返回一個range對象,它表示一個數字範圍:

一些值得學習的Python內置函數(1)

得到的數字範圍包括開始數字,但不包括停止數字(range(0,10)不包括10)。

當你想對一些數字進行循環時,range函數很有用。

一些值得學習的Python內置函數(1)

一個常見的用例是執行一個操作n次(順便說一下,這是一個列表推導式):

一些值得學習的Python內置函數(1)

Python 2的range函數會返回一個列表,這意味著上面的表達式將生成非常非常大的列表。python3的range運行方式與python2的xrange類似(儘管它們有一點不同),因為當我們在這些range對象上循環時,數字是延遲計算的。

被新進的Python高手忽略的內置函數

如果你已經使用Python編程了一段時間,或者剛剛學習了Python類的介紹,那麼你可能已經瞭解了上面的內置函數。

現在,我想展示15個內置函數,這些函數非常便於瞭解,但是常常被新進的Python高手所忽略。

你將在Python代碼中發現前10個函數,但最後5個函數最常在調試時使用。

bool

bool函數會檢查一個Python對象的真實性。

對於數字,真實性是一個非零的問題:

一些值得學習的Python內置函數(1)

對於集合,真實性通常是一個非空的問題(集合的長度是否大於0):

一些值得學習的Python內置函數(1)

真實性(在文檔中稱為真值測試)在Python中非常重要。

代替詢問一些關於一個容器長度的問題,許多Python高手會問一些有關真實性的問題:

一些值得學習的Python內置函數(1)

你可能不會經常看到bool的使用,但是在需要將值強制轉換為布爾值以詢問其真實性的情況下,你會想要了解bool。

enumerate

每當你需要向上計數時,每次一個數字,同時循環遍歷一個迭代器, enumerate函數就會派上用場。

這似乎是一個非常小眾的任務,但它經常出現。

例如,我們可能想要跟蹤一個文件中的行號:

一些值得學習的Python內置函數(1)

enumerate函數也常常用來跟蹤序列中項目的索引。

一些值得學習的Python內置函數(1)

注意,你可能會看到較新的Python專家在Python中使用range(len(sequence))。如果你看到帶有range(len(…))的代碼,那你幾乎總是希望使用enumerate來代替。

一些值得學習的Python內置函數(1)

如果enumerate對你來說是一個新用法(或者如果你經常使用range(len(…)),請查看我關於在Python中使用索引進行循環的文章。

zip

zip函數甚至比enumerate函數更加專門化。

zip函數用於同時循環多個迭代器。

"

在我教的每一節Python入門課上,經常都會被問道像“我們如何才能知道所有這些”這樣的問題。

通常還伴隨著這些問題:

  1. Python中有很多函數,記住這些函數的最好方法是什麼?
  2. 學習我們日常需要的函數,如enumerate 和 range,最好的方法是什麼?
  3. 你是如何知道Python中解決問題的所有方法的?你記下來了嗎?

有幾十個內置函數和類,數百個工具捆綁在Python的標準庫中,以及PyPI上的數千個第三方庫。任何人都不可能記住所有這些東西。

我建議你對你的知識進行分類:

  1. 我應該記住的東西,這樣我就能很好地理解它們
  2. 我應該知道的東西,這樣我以後才能更有效地查找它們
  3. 我根本不應該為之煩惱的東西,除非有一天我需要它們

將這個方法記在腦海中,我們來瀏覽Python文檔中的內置函數頁面。

這將是一篇很長的文章,所以在下一節中我將鏈接到5個子部分和20個特定的內置函數,所以如果你有時間或者正在尋找一個內置函數,你可以提前跳過去查看。

你應該瞭解哪些內置組件?

我估計大多數Python開發人員只需要大約30個內置函數,但是哪30個取決於你實際使用Python做什麼。

我們將以鳥瞰的方式來看看Python中的所有的69個內置函數。

我將嘗試把這些內置組件分成五類:

  1. 眾所周知: 大多數python初學者會因為需要而很快地接觸到這些內置組件
  2. 初學者所忽略的: 瞭解這些函數很有用,但是當你是Python新手時,就會很容易忽略它們
  3. 稍後再學習的: 瞭解這些內置組件通常很有用,但是當/如果你需要它們時,你就會找到它們
  4. 也許最終會學的: 這些東西遲早會派上用場,但只是在特定的情況下
  5. 你可能不需要這些: 除非你在做一些相當專業的事情,否則你不太可能會需要這些

類別1和類別2中的內置函數幾乎是所有Python程序員最終都應該學習的基本內置函數。類別3和類別4中的內置函數是專門的內置函數,它們通常非常有用,但是你對它們的需求會根據你對Python的使用情況而有所不同。類別5是神祕的內置函數,當你需要它們時,這可能非常方便,但是許多Python程序員可能永遠都不需要它們。

Python高手請注意: 我將把所有這些內置組件都稱為函數,儘管其中的27個實際上並不是函數(如我的函數和callables文章中所討論的)。

常見的內置函數(你可能已經很熟悉了):

  1. print
  2. len
  3. str
  4. int
  5. float
  6. list
  7. tuple
  8. dict
  9. set
  10. range

經常被新的Python編程者所忽略的內置函數:

  1. sum
  2. enumerate
  3. zip
  4. bool
  5. reversed
  6. sorted
  7. min
  8. max
  9. any
  10. all

還有5個通常被忽略的內置函數,我建議你自己去了解它們,因為它們使調試更容易: dir、vars、breakpoint、type和help。

除了上面的25個內置函數之外,我們還將在稍後的“以後學習並可能最終會學習的”和“你可能不需要這些”部分中簡要介紹其他的44個內置函數。

10個常見的內置函數

如果你一直在編寫Python代碼,那麼這些內置程序對你來說可能已經很熟悉了。

print

你已經知道了print函數。實現hello world需要用到print。

你可能不瞭解print所接受的各種關鍵字參數:

一些值得學習的Python內置函數(1)

你可以自己查看print函數。

len

在Python中,我們不寫像my_list.length()或my_string.length()這樣的函數; 相反,我們會奇怪地(至少對於新的python開發者來說)使用len(my_list)和len(my_string)。

一些值得學習的Python內置函數(1)

無論你是否喜歡這個類似於操作符的len函數,你都必須使用它,所以你需要習慣它。

str

與許多其他編程語言不同,你不能在Python中連接字符串和數字。

一些值得學習的Python內置函數(1)

Python拒絕將3個整數強制作為一個字符串,所以我們需要自己手動執行,使用內置的str函數(技術上來說是類,但正如我所說的,我將所有這些都稱為函數):

一些值得學習的Python內置函數(1)

int

你是否有用戶輸入並需要將其轉換為數字?那你就需要int函數!

int函數可以將字符串轉換為整數:

一些值得學習的Python內置函數(1)

你還可以使用int將浮點數截斷為整數:

一些值得學習的Python內置函數(1)

注意,如果你在進行除法運算時需要截斷,//操作符可能更合適(儘管它對負數的運行情況會不同):int(3 / 2) == 3 // 2。

float

你要轉換為數字的字符串實際上不是一個整數嗎?那麼你將使用float而不是int來進行轉換。

一些值得學習的Python內置函數(1)

你還可以使用float將整數轉換為浮點數。

在python2中,我們常常使用float將整數轉換為浮點數來強制進行浮點除法而不是整數除法。“整數除法”在Python 3中已經不存在了(除非你專門使用//運算符),因此我們不再需要float來實現這個目的。如果你一旦在Python3代碼中看到float(x) / y,你就可以把它改成x / y。

list

想要創建一個其他一些可迭代對象的列表嗎?

list函數就是做這些的:

一些值得學習的Python內置函數(1)

如果你知道你在處理一個列表,你可以使用copy方法來創建一個該列表的新副本:

一些值得學習的Python內置函數(1)

但是如果你不知道你正在處理的可迭代對象是什麼,list函數是循環一個可迭代對象並複製它的更通用的方法:

一些值得學習的Python內置函數(1)

你也可以使用一個列表推導式,但我不推薦這樣做。

注意,當你想要創建一個空列表時,建議使用列表字面量語法(那些[]括號):

一些值得學習的Python內置函數(1)

使用[]被認為更符合習慣,因為那些方括號([])實際上看起來像一個Python列表。

tuple

tuple函數與list函數非常相似,只是它會創建元組:

一些值得學習的Python內置函數(1)

如果你需要一個元組而不是列表,比如是因為你正在嘗試創建一個可在字典的鍵中使用的可哈希集合,那你可能會想要使用tuple而不是list。

dict

dict函數用於創建一個新字典。

與list和tuple類似,dict函數等價於在一個具有鍵值對的迭代器上進行循環,並從中生成一個字典。

給定一個兩項元組的列表:

一些值得學習的Python內置函數(1)

這個:

一些值得學習的Python內置函數(1)

可以用dict函數代替來生成:

一些值得學習的Python內置函數(1)

dict函數接受兩種類型的參數:

  1. 另一個字典(通用術語是映射),在這種情況下,該字典將被複制
  2. 一個由鍵值元組組成的列表(更準確地說,是由兩項迭代器組成的一個迭代器),在這種情況下,將從這些元素構造一個新字典

所以這也是可行的:

一些值得學習的Python內置函數(1)

dict函數還可以接受關鍵字參數來創建一個帶有基於字符串鍵的字典:

一些值得學習的Python內置函數(1)

但我更喜歡用字典字面量來代替:

一些值得學習的Python內置函數(1)

字典字面量語法更靈活,速度更快,但最重要的是,我發現它更清楚地傳達了我們正在創建一個字典的事實。

就像list和tuple一樣,一個空字典也應該使用字面量語法來創建:

一些值得學習的Python內置函數(1)

使用{}稍微提高了CPU效率,但更重要的是,它更符合人們的習慣: 使用大括號({})創建字典是很常見的,但是dict出現的頻率要低得多。

set

set函數生會成一個新的集合,它接受一個帶有可哈希值的迭代器(字符串、數字或其他不可變類型),並返回一個set:

一些值得學習的Python內置函數(1)

使用{}集合字面量語法(純 {} 會創建一個字典)無法生成空集合,因此set函數是生成空集的唯一方法:

一些值得學習的Python內置函數(1)

事實上,這是一個謊言,因為我們有這個:

一些值得學習的Python內置函數(1)

但是這種語法令人困惑(它依賴於*操作符的一個不太常用的特性),所以我不推薦使用它。

range

range函數給我們返回一個range對象,它表示一個數字範圍:

一些值得學習的Python內置函數(1)

得到的數字範圍包括開始數字,但不包括停止數字(range(0,10)不包括10)。

當你想對一些數字進行循環時,range函數很有用。

一些值得學習的Python內置函數(1)

一個常見的用例是執行一個操作n次(順便說一下,這是一個列表推導式):

一些值得學習的Python內置函數(1)

Python 2的range函數會返回一個列表,這意味著上面的表達式將生成非常非常大的列表。python3的range運行方式與python2的xrange類似(儘管它們有一點不同),因為當我們在這些range對象上循環時,數字是延遲計算的。

被新進的Python高手忽略的內置函數

如果你已經使用Python編程了一段時間,或者剛剛學習了Python類的介紹,那麼你可能已經瞭解了上面的內置函數。

現在,我想展示15個內置函數,這些函數非常便於瞭解,但是常常被新進的Python高手所忽略。

你將在Python代碼中發現前10個函數,但最後5個函數最常在調試時使用。

bool

bool函數會檢查一個Python對象的真實性。

對於數字,真實性是一個非零的問題:

一些值得學習的Python內置函數(1)

對於集合,真實性通常是一個非空的問題(集合的長度是否大於0):

一些值得學習的Python內置函數(1)

真實性(在文檔中稱為真值測試)在Python中非常重要。

代替詢問一些關於一個容器長度的問題,許多Python高手會問一些有關真實性的問題:

一些值得學習的Python內置函數(1)

你可能不會經常看到bool的使用,但是在需要將值強制轉換為布爾值以詢問其真實性的情況下,你會想要了解bool。

enumerate

每當你需要向上計數時,每次一個數字,同時循環遍歷一個迭代器, enumerate函數就會派上用場。

這似乎是一個非常小眾的任務,但它經常出現。

例如,我們可能想要跟蹤一個文件中的行號:

一些值得學習的Python內置函數(1)

enumerate函數也常常用來跟蹤序列中項目的索引。

一些值得學習的Python內置函數(1)

注意,你可能會看到較新的Python專家在Python中使用range(len(sequence))。如果你看到帶有range(len(…))的代碼,那你幾乎總是希望使用enumerate來代替。

一些值得學習的Python內置函數(1)

如果enumerate對你來說是一個新用法(或者如果你經常使用range(len(…)),請查看我關於在Python中使用索引進行循環的文章。

zip

zip函數甚至比enumerate函數更加專門化。

zip函數用於同時循環多個迭代器。

一些值得學習的Python內置函數(1)

如果你必須同時循環兩個列表(或任何其他迭代器),則首選zip而不是enumerate。當你在循環時需要索引時,enumerate函數非常方便,但是當我們特別關心同時循環兩個迭代器時,zip就非常棒了。

如果你是zip新手,我還將在我的“使用索引進行循環”文章中討論它。

enumerate 和 zip都會向我們返回迭代器。迭代器是用來增強for循環的延遲可迭代對象。我有一個關於迭代器的完整討論,以及一篇關於如何創建自己的迭代器的高級文章。

順便說一下,如果你需要對不同長度的迭代器使用zip,你可能需要在Python標準庫中查看 itertools.zip_longest。

reversed

reversed函數,像enumerate和zip一樣,也會返回一個迭代器。

"

在我教的每一節Python入門課上,經常都會被問道像“我們如何才能知道所有這些”這樣的問題。

通常還伴隨著這些問題:

  1. Python中有很多函數,記住這些函數的最好方法是什麼?
  2. 學習我們日常需要的函數,如enumerate 和 range,最好的方法是什麼?
  3. 你是如何知道Python中解決問題的所有方法的?你記下來了嗎?

有幾十個內置函數和類,數百個工具捆綁在Python的標準庫中,以及PyPI上的數千個第三方庫。任何人都不可能記住所有這些東西。

我建議你對你的知識進行分類:

  1. 我應該記住的東西,這樣我就能很好地理解它們
  2. 我應該知道的東西,這樣我以後才能更有效地查找它們
  3. 我根本不應該為之煩惱的東西,除非有一天我需要它們

將這個方法記在腦海中,我們來瀏覽Python文檔中的內置函數頁面。

這將是一篇很長的文章,所以在下一節中我將鏈接到5個子部分和20個特定的內置函數,所以如果你有時間或者正在尋找一個內置函數,你可以提前跳過去查看。

你應該瞭解哪些內置組件?

我估計大多數Python開發人員只需要大約30個內置函數,但是哪30個取決於你實際使用Python做什麼。

我們將以鳥瞰的方式來看看Python中的所有的69個內置函數。

我將嘗試把這些內置組件分成五類:

  1. 眾所周知: 大多數python初學者會因為需要而很快地接觸到這些內置組件
  2. 初學者所忽略的: 瞭解這些函數很有用,但是當你是Python新手時,就會很容易忽略它們
  3. 稍後再學習的: 瞭解這些內置組件通常很有用,但是當/如果你需要它們時,你就會找到它們
  4. 也許最終會學的: 這些東西遲早會派上用場,但只是在特定的情況下
  5. 你可能不需要這些: 除非你在做一些相當專業的事情,否則你不太可能會需要這些

類別1和類別2中的內置函數幾乎是所有Python程序員最終都應該學習的基本內置函數。類別3和類別4中的內置函數是專門的內置函數,它們通常非常有用,但是你對它們的需求會根據你對Python的使用情況而有所不同。類別5是神祕的內置函數,當你需要它們時,這可能非常方便,但是許多Python程序員可能永遠都不需要它們。

Python高手請注意: 我將把所有這些內置組件都稱為函數,儘管其中的27個實際上並不是函數(如我的函數和callables文章中所討論的)。

常見的內置函數(你可能已經很熟悉了):

  1. print
  2. len
  3. str
  4. int
  5. float
  6. list
  7. tuple
  8. dict
  9. set
  10. range

經常被新的Python編程者所忽略的內置函數:

  1. sum
  2. enumerate
  3. zip
  4. bool
  5. reversed
  6. sorted
  7. min
  8. max
  9. any
  10. all

還有5個通常被忽略的內置函數,我建議你自己去了解它們,因為它們使調試更容易: dir、vars、breakpoint、type和help。

除了上面的25個內置函數之外,我們還將在稍後的“以後學習並可能最終會學習的”和“你可能不需要這些”部分中簡要介紹其他的44個內置函數。

10個常見的內置函數

如果你一直在編寫Python代碼,那麼這些內置程序對你來說可能已經很熟悉了。

print

你已經知道了print函數。實現hello world需要用到print。

你可能不瞭解print所接受的各種關鍵字參數:

一些值得學習的Python內置函數(1)

你可以自己查看print函數。

len

在Python中,我們不寫像my_list.length()或my_string.length()這樣的函數; 相反,我們會奇怪地(至少對於新的python開發者來說)使用len(my_list)和len(my_string)。

一些值得學習的Python內置函數(1)

無論你是否喜歡這個類似於操作符的len函數,你都必須使用它,所以你需要習慣它。

str

與許多其他編程語言不同,你不能在Python中連接字符串和數字。

一些值得學習的Python內置函數(1)

Python拒絕將3個整數強制作為一個字符串,所以我們需要自己手動執行,使用內置的str函數(技術上來說是類,但正如我所說的,我將所有這些都稱為函數):

一些值得學習的Python內置函數(1)

int

你是否有用戶輸入並需要將其轉換為數字?那你就需要int函數!

int函數可以將字符串轉換為整數:

一些值得學習的Python內置函數(1)

你還可以使用int將浮點數截斷為整數:

一些值得學習的Python內置函數(1)

注意,如果你在進行除法運算時需要截斷,//操作符可能更合適(儘管它對負數的運行情況會不同):int(3 / 2) == 3 // 2。

float

你要轉換為數字的字符串實際上不是一個整數嗎?那麼你將使用float而不是int來進行轉換。

一些值得學習的Python內置函數(1)

你還可以使用float將整數轉換為浮點數。

在python2中,我們常常使用float將整數轉換為浮點數來強制進行浮點除法而不是整數除法。“整數除法”在Python 3中已經不存在了(除非你專門使用//運算符),因此我們不再需要float來實現這個目的。如果你一旦在Python3代碼中看到float(x) / y,你就可以把它改成x / y。

list

想要創建一個其他一些可迭代對象的列表嗎?

list函數就是做這些的:

一些值得學習的Python內置函數(1)

如果你知道你在處理一個列表,你可以使用copy方法來創建一個該列表的新副本:

一些值得學習的Python內置函數(1)

但是如果你不知道你正在處理的可迭代對象是什麼,list函數是循環一個可迭代對象並複製它的更通用的方法:

一些值得學習的Python內置函數(1)

你也可以使用一個列表推導式,但我不推薦這樣做。

注意,當你想要創建一個空列表時,建議使用列表字面量語法(那些[]括號):

一些值得學習的Python內置函數(1)

使用[]被認為更符合習慣,因為那些方括號([])實際上看起來像一個Python列表。

tuple

tuple函數與list函數非常相似,只是它會創建元組:

一些值得學習的Python內置函數(1)

如果你需要一個元組而不是列表,比如是因為你正在嘗試創建一個可在字典的鍵中使用的可哈希集合,那你可能會想要使用tuple而不是list。

dict

dict函數用於創建一個新字典。

與list和tuple類似,dict函數等價於在一個具有鍵值對的迭代器上進行循環,並從中生成一個字典。

給定一個兩項元組的列表:

一些值得學習的Python內置函數(1)

這個:

一些值得學習的Python內置函數(1)

可以用dict函數代替來生成:

一些值得學習的Python內置函數(1)

dict函數接受兩種類型的參數:

  1. 另一個字典(通用術語是映射),在這種情況下,該字典將被複制
  2. 一個由鍵值元組組成的列表(更準確地說,是由兩項迭代器組成的一個迭代器),在這種情況下,將從這些元素構造一個新字典

所以這也是可行的:

一些值得學習的Python內置函數(1)

dict函數還可以接受關鍵字參數來創建一個帶有基於字符串鍵的字典:

一些值得學習的Python內置函數(1)

但我更喜歡用字典字面量來代替:

一些值得學習的Python內置函數(1)

字典字面量語法更靈活,速度更快,但最重要的是,我發現它更清楚地傳達了我們正在創建一個字典的事實。

就像list和tuple一樣,一個空字典也應該使用字面量語法來創建:

一些值得學習的Python內置函數(1)

使用{}稍微提高了CPU效率,但更重要的是,它更符合人們的習慣: 使用大括號({})創建字典是很常見的,但是dict出現的頻率要低得多。

set

set函數生會成一個新的集合,它接受一個帶有可哈希值的迭代器(字符串、數字或其他不可變類型),並返回一個set:

一些值得學習的Python內置函數(1)

使用{}集合字面量語法(純 {} 會創建一個字典)無法生成空集合,因此set函數是生成空集的唯一方法:

一些值得學習的Python內置函數(1)

事實上,這是一個謊言,因為我們有這個:

一些值得學習的Python內置函數(1)

但是這種語法令人困惑(它依賴於*操作符的一個不太常用的特性),所以我不推薦使用它。

range

range函數給我們返回一個range對象,它表示一個數字範圍:

一些值得學習的Python內置函數(1)

得到的數字範圍包括開始數字,但不包括停止數字(range(0,10)不包括10)。

當你想對一些數字進行循環時,range函數很有用。

一些值得學習的Python內置函數(1)

一個常見的用例是執行一個操作n次(順便說一下,這是一個列表推導式):

一些值得學習的Python內置函數(1)

Python 2的range函數會返回一個列表,這意味著上面的表達式將生成非常非常大的列表。python3的range運行方式與python2的xrange類似(儘管它們有一點不同),因為當我們在這些range對象上循環時,數字是延遲計算的。

被新進的Python高手忽略的內置函數

如果你已經使用Python編程了一段時間,或者剛剛學習了Python類的介紹,那麼你可能已經瞭解了上面的內置函數。

現在,我想展示15個內置函數,這些函數非常便於瞭解,但是常常被新進的Python高手所忽略。

你將在Python代碼中發現前10個函數,但最後5個函數最常在調試時使用。

bool

bool函數會檢查一個Python對象的真實性。

對於數字,真實性是一個非零的問題:

一些值得學習的Python內置函數(1)

對於集合,真實性通常是一個非空的問題(集合的長度是否大於0):

一些值得學習的Python內置函數(1)

真實性(在文檔中稱為真值測試)在Python中非常重要。

代替詢問一些關於一個容器長度的問題,許多Python高手會問一些有關真實性的問題:

一些值得學習的Python內置函數(1)

你可能不會經常看到bool的使用,但是在需要將值強制轉換為布爾值以詢問其真實性的情況下,你會想要了解bool。

enumerate

每當你需要向上計數時,每次一個數字,同時循環遍歷一個迭代器, enumerate函數就會派上用場。

這似乎是一個非常小眾的任務,但它經常出現。

例如,我們可能想要跟蹤一個文件中的行號:

一些值得學習的Python內置函數(1)

enumerate函數也常常用來跟蹤序列中項目的索引。

一些值得學習的Python內置函數(1)

注意,你可能會看到較新的Python專家在Python中使用range(len(sequence))。如果你看到帶有range(len(…))的代碼,那你幾乎總是希望使用enumerate來代替。

一些值得學習的Python內置函數(1)

如果enumerate對你來說是一個新用法(或者如果你經常使用range(len(…)),請查看我關於在Python中使用索引進行循環的文章。

zip

zip函數甚至比enumerate函數更加專門化。

zip函數用於同時循環多個迭代器。

一些值得學習的Python內置函數(1)

如果你必須同時循環兩個列表(或任何其他迭代器),則首選zip而不是enumerate。當你在循環時需要索引時,enumerate函數非常方便,但是當我們特別關心同時循環兩個迭代器時,zip就非常棒了。

如果你是zip新手,我還將在我的“使用索引進行循環”文章中討論它。

enumerate 和 zip都會向我們返回迭代器。迭代器是用來增強for循環的延遲可迭代對象。我有一個關於迭代器的完整討論,以及一篇關於如何創建自己的迭代器的高級文章。

順便說一下,如果你需要對不同長度的迭代器使用zip,你可能需要在Python標準庫中查看 itertools.zip_longest。

reversed

reversed函數,像enumerate和zip一樣,也會返回一個迭代器。

一些值得學習的Python內置函數(1)

我們可以對這個迭代器做的唯一一件事就是對它進行循環(但只能循環一次):

"

在我教的每一節Python入門課上,經常都會被問道像“我們如何才能知道所有這些”這樣的問題。

通常還伴隨著這些問題:

  1. Python中有很多函數,記住這些函數的最好方法是什麼?
  2. 學習我們日常需要的函數,如enumerate 和 range,最好的方法是什麼?
  3. 你是如何知道Python中解決問題的所有方法的?你記下來了嗎?

有幾十個內置函數和類,數百個工具捆綁在Python的標準庫中,以及PyPI上的數千個第三方庫。任何人都不可能記住所有這些東西。

我建議你對你的知識進行分類:

  1. 我應該記住的東西,這樣我就能很好地理解它們
  2. 我應該知道的東西,這樣我以後才能更有效地查找它們
  3. 我根本不應該為之煩惱的東西,除非有一天我需要它們

將這個方法記在腦海中,我們來瀏覽Python文檔中的內置函數頁面。

這將是一篇很長的文章,所以在下一節中我將鏈接到5個子部分和20個特定的內置函數,所以如果你有時間或者正在尋找一個內置函數,你可以提前跳過去查看。

你應該瞭解哪些內置組件?

我估計大多數Python開發人員只需要大約30個內置函數,但是哪30個取決於你實際使用Python做什麼。

我們將以鳥瞰的方式來看看Python中的所有的69個內置函數。

我將嘗試把這些內置組件分成五類:

  1. 眾所周知: 大多數python初學者會因為需要而很快地接觸到這些內置組件
  2. 初學者所忽略的: 瞭解這些函數很有用,但是當你是Python新手時,就會很容易忽略它們
  3. 稍後再學習的: 瞭解這些內置組件通常很有用,但是當/如果你需要它們時,你就會找到它們
  4. 也許最終會學的: 這些東西遲早會派上用場,但只是在特定的情況下
  5. 你可能不需要這些: 除非你在做一些相當專業的事情,否則你不太可能會需要這些

類別1和類別2中的內置函數幾乎是所有Python程序員最終都應該學習的基本內置函數。類別3和類別4中的內置函數是專門的內置函數,它們通常非常有用,但是你對它們的需求會根據你對Python的使用情況而有所不同。類別5是神祕的內置函數,當你需要它們時,這可能非常方便,但是許多Python程序員可能永遠都不需要它們。

Python高手請注意: 我將把所有這些內置組件都稱為函數,儘管其中的27個實際上並不是函數(如我的函數和callables文章中所討論的)。

常見的內置函數(你可能已經很熟悉了):

  1. print
  2. len
  3. str
  4. int
  5. float
  6. list
  7. tuple
  8. dict
  9. set
  10. range

經常被新的Python編程者所忽略的內置函數:

  1. sum
  2. enumerate
  3. zip
  4. bool
  5. reversed
  6. sorted
  7. min
  8. max
  9. any
  10. all

還有5個通常被忽略的內置函數,我建議你自己去了解它們,因為它們使調試更容易: dir、vars、breakpoint、type和help。

除了上面的25個內置函數之外,我們還將在稍後的“以後學習並可能最終會學習的”和“你可能不需要這些”部分中簡要介紹其他的44個內置函數。

10個常見的內置函數

如果你一直在編寫Python代碼,那麼這些內置程序對你來說可能已經很熟悉了。

print

你已經知道了print函數。實現hello world需要用到print。

你可能不瞭解print所接受的各種關鍵字參數:

一些值得學習的Python內置函數(1)

你可以自己查看print函數。

len

在Python中,我們不寫像my_list.length()或my_string.length()這樣的函數; 相反,我們會奇怪地(至少對於新的python開發者來說)使用len(my_list)和len(my_string)。

一些值得學習的Python內置函數(1)

無論你是否喜歡這個類似於操作符的len函數,你都必須使用它,所以你需要習慣它。

str

與許多其他編程語言不同,你不能在Python中連接字符串和數字。

一些值得學習的Python內置函數(1)

Python拒絕將3個整數強制作為一個字符串,所以我們需要自己手動執行,使用內置的str函數(技術上來說是類,但正如我所說的,我將所有這些都稱為函數):

一些值得學習的Python內置函數(1)

int

你是否有用戶輸入並需要將其轉換為數字?那你就需要int函數!

int函數可以將字符串轉換為整數:

一些值得學習的Python內置函數(1)

你還可以使用int將浮點數截斷為整數:

一些值得學習的Python內置函數(1)

注意,如果你在進行除法運算時需要截斷,//操作符可能更合適(儘管它對負數的運行情況會不同):int(3 / 2) == 3 // 2。

float

你要轉換為數字的字符串實際上不是一個整數嗎?那麼你將使用float而不是int來進行轉換。

一些值得學習的Python內置函數(1)

你還可以使用float將整數轉換為浮點數。

在python2中,我們常常使用float將整數轉換為浮點數來強制進行浮點除法而不是整數除法。“整數除法”在Python 3中已經不存在了(除非你專門使用//運算符),因此我們不再需要float來實現這個目的。如果你一旦在Python3代碼中看到float(x) / y,你就可以把它改成x / y。

list

想要創建一個其他一些可迭代對象的列表嗎?

list函數就是做這些的:

一些值得學習的Python內置函數(1)

如果你知道你在處理一個列表,你可以使用copy方法來創建一個該列表的新副本:

一些值得學習的Python內置函數(1)

但是如果你不知道你正在處理的可迭代對象是什麼,list函數是循環一個可迭代對象並複製它的更通用的方法:

一些值得學習的Python內置函數(1)

你也可以使用一個列表推導式,但我不推薦這樣做。

注意,當你想要創建一個空列表時,建議使用列表字面量語法(那些[]括號):

一些值得學習的Python內置函數(1)

使用[]被認為更符合習慣,因為那些方括號([])實際上看起來像一個Python列表。

tuple

tuple函數與list函數非常相似,只是它會創建元組:

一些值得學習的Python內置函數(1)

如果你需要一個元組而不是列表,比如是因為你正在嘗試創建一個可在字典的鍵中使用的可哈希集合,那你可能會想要使用tuple而不是list。

dict

dict函數用於創建一個新字典。

與list和tuple類似,dict函數等價於在一個具有鍵值對的迭代器上進行循環,並從中生成一個字典。

給定一個兩項元組的列表:

一些值得學習的Python內置函數(1)

這個:

一些值得學習的Python內置函數(1)

可以用dict函數代替來生成:

一些值得學習的Python內置函數(1)

dict函數接受兩種類型的參數:

  1. 另一個字典(通用術語是映射),在這種情況下,該字典將被複制
  2. 一個由鍵值元組組成的列表(更準確地說,是由兩項迭代器組成的一個迭代器),在這種情況下,將從這些元素構造一個新字典

所以這也是可行的:

一些值得學習的Python內置函數(1)

dict函數還可以接受關鍵字參數來創建一個帶有基於字符串鍵的字典:

一些值得學習的Python內置函數(1)

但我更喜歡用字典字面量來代替:

一些值得學習的Python內置函數(1)

字典字面量語法更靈活,速度更快,但最重要的是,我發現它更清楚地傳達了我們正在創建一個字典的事實。

就像list和tuple一樣,一個空字典也應該使用字面量語法來創建:

一些值得學習的Python內置函數(1)

使用{}稍微提高了CPU效率,但更重要的是,它更符合人們的習慣: 使用大括號({})創建字典是很常見的,但是dict出現的頻率要低得多。

set

set函數生會成一個新的集合,它接受一個帶有可哈希值的迭代器(字符串、數字或其他不可變類型),並返回一個set:

一些值得學習的Python內置函數(1)

使用{}集合字面量語法(純 {} 會創建一個字典)無法生成空集合,因此set函數是生成空集的唯一方法:

一些值得學習的Python內置函數(1)

事實上,這是一個謊言,因為我們有這個:

一些值得學習的Python內置函數(1)

但是這種語法令人困惑(它依賴於*操作符的一個不太常用的特性),所以我不推薦使用它。

range

range函數給我們返回一個range對象,它表示一個數字範圍:

一些值得學習的Python內置函數(1)

得到的數字範圍包括開始數字,但不包括停止數字(range(0,10)不包括10)。

當你想對一些數字進行循環時,range函數很有用。

一些值得學習的Python內置函數(1)

一個常見的用例是執行一個操作n次(順便說一下,這是一個列表推導式):

一些值得學習的Python內置函數(1)

Python 2的range函數會返回一個列表,這意味著上面的表達式將生成非常非常大的列表。python3的range運行方式與python2的xrange類似(儘管它們有一點不同),因為當我們在這些range對象上循環時,數字是延遲計算的。

被新進的Python高手忽略的內置函數

如果你已經使用Python編程了一段時間,或者剛剛學習了Python類的介紹,那麼你可能已經瞭解了上面的內置函數。

現在,我想展示15個內置函數,這些函數非常便於瞭解,但是常常被新進的Python高手所忽略。

你將在Python代碼中發現前10個函數,但最後5個函數最常在調試時使用。

bool

bool函數會檢查一個Python對象的真實性。

對於數字,真實性是一個非零的問題:

一些值得學習的Python內置函數(1)

對於集合,真實性通常是一個非空的問題(集合的長度是否大於0):

一些值得學習的Python內置函數(1)

真實性(在文檔中稱為真值測試)在Python中非常重要。

代替詢問一些關於一個容器長度的問題,許多Python高手會問一些有關真實性的問題:

一些值得學習的Python內置函數(1)

你可能不會經常看到bool的使用,但是在需要將值強制轉換為布爾值以詢問其真實性的情況下,你會想要了解bool。

enumerate

每當你需要向上計數時,每次一個數字,同時循環遍歷一個迭代器, enumerate函數就會派上用場。

這似乎是一個非常小眾的任務,但它經常出現。

例如,我們可能想要跟蹤一個文件中的行號:

一些值得學習的Python內置函數(1)

enumerate函數也常常用來跟蹤序列中項目的索引。

一些值得學習的Python內置函數(1)

注意,你可能會看到較新的Python專家在Python中使用range(len(sequence))。如果你看到帶有range(len(…))的代碼,那你幾乎總是希望使用enumerate來代替。

一些值得學習的Python內置函數(1)

如果enumerate對你來說是一個新用法(或者如果你經常使用range(len(…)),請查看我關於在Python中使用索引進行循環的文章。

zip

zip函數甚至比enumerate函數更加專門化。

zip函數用於同時循環多個迭代器。

一些值得學習的Python內置函數(1)

如果你必須同時循環兩個列表(或任何其他迭代器),則首選zip而不是enumerate。當你在循環時需要索引時,enumerate函數非常方便,但是當我們特別關心同時循環兩個迭代器時,zip就非常棒了。

如果你是zip新手,我還將在我的“使用索引進行循環”文章中討論它。

enumerate 和 zip都會向我們返回迭代器。迭代器是用來增強for循環的延遲可迭代對象。我有一個關於迭代器的完整討論,以及一篇關於如何創建自己的迭代器的高級文章。

順便說一下,如果你需要對不同長度的迭代器使用zip,你可能需要在Python標準庫中查看 itertools.zip_longest。

reversed

reversed函數,像enumerate和zip一樣,也會返回一個迭代器。

一些值得學習的Python內置函數(1)

我們可以對這個迭代器做的唯一一件事就是對它進行循環(但只能循環一次):

一些值得學習的Python內置函數(1)

與enumerate和zip類似,reversed是一種循環輔助函數。你會更多的發現,reversed專門用於for循環的for部分中:

"

在我教的每一節Python入門課上,經常都會被問道像“我們如何才能知道所有這些”這樣的問題。

通常還伴隨著這些問題:

  1. Python中有很多函數,記住這些函數的最好方法是什麼?
  2. 學習我們日常需要的函數,如enumerate 和 range,最好的方法是什麼?
  3. 你是如何知道Python中解決問題的所有方法的?你記下來了嗎?

有幾十個內置函數和類,數百個工具捆綁在Python的標準庫中,以及PyPI上的數千個第三方庫。任何人都不可能記住所有這些東西。

我建議你對你的知識進行分類:

  1. 我應該記住的東西,這樣我就能很好地理解它們
  2. 我應該知道的東西,這樣我以後才能更有效地查找它們
  3. 我根本不應該為之煩惱的東西,除非有一天我需要它們

將這個方法記在腦海中,我們來瀏覽Python文檔中的內置函數頁面。

這將是一篇很長的文章,所以在下一節中我將鏈接到5個子部分和20個特定的內置函數,所以如果你有時間或者正在尋找一個內置函數,你可以提前跳過去查看。

你應該瞭解哪些內置組件?

我估計大多數Python開發人員只需要大約30個內置函數,但是哪30個取決於你實際使用Python做什麼。

我們將以鳥瞰的方式來看看Python中的所有的69個內置函數。

我將嘗試把這些內置組件分成五類:

  1. 眾所周知: 大多數python初學者會因為需要而很快地接觸到這些內置組件
  2. 初學者所忽略的: 瞭解這些函數很有用,但是當你是Python新手時,就會很容易忽略它們
  3. 稍後再學習的: 瞭解這些內置組件通常很有用,但是當/如果你需要它們時,你就會找到它們
  4. 也許最終會學的: 這些東西遲早會派上用場,但只是在特定的情況下
  5. 你可能不需要這些: 除非你在做一些相當專業的事情,否則你不太可能會需要這些

類別1和類別2中的內置函數幾乎是所有Python程序員最終都應該學習的基本內置函數。類別3和類別4中的內置函數是專門的內置函數,它們通常非常有用,但是你對它們的需求會根據你對Python的使用情況而有所不同。類別5是神祕的內置函數,當你需要它們時,這可能非常方便,但是許多Python程序員可能永遠都不需要它們。

Python高手請注意: 我將把所有這些內置組件都稱為函數,儘管其中的27個實際上並不是函數(如我的函數和callables文章中所討論的)。

常見的內置函數(你可能已經很熟悉了):

  1. print
  2. len
  3. str
  4. int
  5. float
  6. list
  7. tuple
  8. dict
  9. set
  10. range

經常被新的Python編程者所忽略的內置函數:

  1. sum
  2. enumerate
  3. zip
  4. bool
  5. reversed
  6. sorted
  7. min
  8. max
  9. any
  10. all

還有5個通常被忽略的內置函數,我建議你自己去了解它們,因為它們使調試更容易: dir、vars、breakpoint、type和help。

除了上面的25個內置函數之外,我們還將在稍後的“以後學習並可能最終會學習的”和“你可能不需要這些”部分中簡要介紹其他的44個內置函數。

10個常見的內置函數

如果你一直在編寫Python代碼,那麼這些內置程序對你來說可能已經很熟悉了。

print

你已經知道了print函數。實現hello world需要用到print。

你可能不瞭解print所接受的各種關鍵字參數:

一些值得學習的Python內置函數(1)

你可以自己查看print函數。

len

在Python中,我們不寫像my_list.length()或my_string.length()這樣的函數; 相反,我們會奇怪地(至少對於新的python開發者來說)使用len(my_list)和len(my_string)。

一些值得學習的Python內置函數(1)

無論你是否喜歡這個類似於操作符的len函數,你都必須使用它,所以你需要習慣它。

str

與許多其他編程語言不同,你不能在Python中連接字符串和數字。

一些值得學習的Python內置函數(1)

Python拒絕將3個整數強制作為一個字符串,所以我們需要自己手動執行,使用內置的str函數(技術上來說是類,但正如我所說的,我將所有這些都稱為函數):

一些值得學習的Python內置函數(1)

int

你是否有用戶輸入並需要將其轉換為數字?那你就需要int函數!

int函數可以將字符串轉換為整數:

一些值得學習的Python內置函數(1)

你還可以使用int將浮點數截斷為整數:

一些值得學習的Python內置函數(1)

注意,如果你在進行除法運算時需要截斷,//操作符可能更合適(儘管它對負數的運行情況會不同):int(3 / 2) == 3 // 2。

float

你要轉換為數字的字符串實際上不是一個整數嗎?那麼你將使用float而不是int來進行轉換。

一些值得學習的Python內置函數(1)

你還可以使用float將整數轉換為浮點數。

在python2中,我們常常使用float將整數轉換為浮點數來強制進行浮點除法而不是整數除法。“整數除法”在Python 3中已經不存在了(除非你專門使用//運算符),因此我們不再需要float來實現這個目的。如果你一旦在Python3代碼中看到float(x) / y,你就可以把它改成x / y。

list

想要創建一個其他一些可迭代對象的列表嗎?

list函數就是做這些的:

一些值得學習的Python內置函數(1)

如果你知道你在處理一個列表,你可以使用copy方法來創建一個該列表的新副本:

一些值得學習的Python內置函數(1)

但是如果你不知道你正在處理的可迭代對象是什麼,list函數是循環一個可迭代對象並複製它的更通用的方法:

一些值得學習的Python內置函數(1)

你也可以使用一個列表推導式,但我不推薦這樣做。

注意,當你想要創建一個空列表時,建議使用列表字面量語法(那些[]括號):

一些值得學習的Python內置函數(1)

使用[]被認為更符合習慣,因為那些方括號([])實際上看起來像一個Python列表。

tuple

tuple函數與list函數非常相似,只是它會創建元組:

一些值得學習的Python內置函數(1)

如果你需要一個元組而不是列表,比如是因為你正在嘗試創建一個可在字典的鍵中使用的可哈希集合,那你可能會想要使用tuple而不是list。

dict

dict函數用於創建一個新字典。

與list和tuple類似,dict函數等價於在一個具有鍵值對的迭代器上進行循環,並從中生成一個字典。

給定一個兩項元組的列表:

一些值得學習的Python內置函數(1)

這個:

一些值得學習的Python內置函數(1)

可以用dict函數代替來生成:

一些值得學習的Python內置函數(1)

dict函數接受兩種類型的參數:

  1. 另一個字典(通用術語是映射),在這種情況下,該字典將被複制
  2. 一個由鍵值元組組成的列表(更準確地說,是由兩項迭代器組成的一個迭代器),在這種情況下,將從這些元素構造一個新字典

所以這也是可行的:

一些值得學習的Python內置函數(1)

dict函數還可以接受關鍵字參數來創建一個帶有基於字符串鍵的字典:

一些值得學習的Python內置函數(1)

但我更喜歡用字典字面量來代替:

一些值得學習的Python內置函數(1)

字典字面量語法更靈活,速度更快,但最重要的是,我發現它更清楚地傳達了我們正在創建一個字典的事實。

就像list和tuple一樣,一個空字典也應該使用字面量語法來創建:

一些值得學習的Python內置函數(1)

使用{}稍微提高了CPU效率,但更重要的是,它更符合人們的習慣: 使用大括號({})創建字典是很常見的,但是dict出現的頻率要低得多。

set

set函數生會成一個新的集合,它接受一個帶有可哈希值的迭代器(字符串、數字或其他不可變類型),並返回一個set:

一些值得學習的Python內置函數(1)

使用{}集合字面量語法(純 {} 會創建一個字典)無法生成空集合,因此set函數是生成空集的唯一方法:

一些值得學習的Python內置函數(1)

事實上,這是一個謊言,因為我們有這個:

一些值得學習的Python內置函數(1)

但是這種語法令人困惑(它依賴於*操作符的一個不太常用的特性),所以我不推薦使用它。

range

range函數給我們返回一個range對象,它表示一個數字範圍:

一些值得學習的Python內置函數(1)

得到的數字範圍包括開始數字,但不包括停止數字(range(0,10)不包括10)。

當你想對一些數字進行循環時,range函數很有用。

一些值得學習的Python內置函數(1)

一個常見的用例是執行一個操作n次(順便說一下,這是一個列表推導式):

一些值得學習的Python內置函數(1)

Python 2的range函數會返回一個列表,這意味著上面的表達式將生成非常非常大的列表。python3的range運行方式與python2的xrange類似(儘管它們有一點不同),因為當我們在這些range對象上循環時,數字是延遲計算的。

被新進的Python高手忽略的內置函數

如果你已經使用Python編程了一段時間,或者剛剛學習了Python類的介紹,那麼你可能已經瞭解了上面的內置函數。

現在,我想展示15個內置函數,這些函數非常便於瞭解,但是常常被新進的Python高手所忽略。

你將在Python代碼中發現前10個函數,但最後5個函數最常在調試時使用。

bool

bool函數會檢查一個Python對象的真實性。

對於數字,真實性是一個非零的問題:

一些值得學習的Python內置函數(1)

對於集合,真實性通常是一個非空的問題(集合的長度是否大於0):

一些值得學習的Python內置函數(1)

真實性(在文檔中稱為真值測試)在Python中非常重要。

代替詢問一些關於一個容器長度的問題,許多Python高手會問一些有關真實性的問題:

一些值得學習的Python內置函數(1)

你可能不會經常看到bool的使用,但是在需要將值強制轉換為布爾值以詢問其真實性的情況下,你會想要了解bool。

enumerate

每當你需要向上計數時,每次一個數字,同時循環遍歷一個迭代器, enumerate函數就會派上用場。

這似乎是一個非常小眾的任務,但它經常出現。

例如,我們可能想要跟蹤一個文件中的行號:

一些值得學習的Python內置函數(1)

enumerate函數也常常用來跟蹤序列中項目的索引。

一些值得學習的Python內置函數(1)

注意,你可能會看到較新的Python專家在Python中使用range(len(sequence))。如果你看到帶有range(len(…))的代碼,那你幾乎總是希望使用enumerate來代替。

一些值得學習的Python內置函數(1)

如果enumerate對你來說是一個新用法(或者如果你經常使用range(len(…)),請查看我關於在Python中使用索引進行循環的文章。

zip

zip函數甚至比enumerate函數更加專門化。

zip函數用於同時循環多個迭代器。

一些值得學習的Python內置函數(1)

如果你必須同時循環兩個列表(或任何其他迭代器),則首選zip而不是enumerate。當你在循環時需要索引時,enumerate函數非常方便,但是當我們特別關心同時循環兩個迭代器時,zip就非常棒了。

如果你是zip新手,我還將在我的“使用索引進行循環”文章中討論它。

enumerate 和 zip都會向我們返回迭代器。迭代器是用來增強for循環的延遲可迭代對象。我有一個關於迭代器的完整討論,以及一篇關於如何創建自己的迭代器的高級文章。

順便說一下,如果你需要對不同長度的迭代器使用zip,你可能需要在Python標準庫中查看 itertools.zip_longest。

reversed

reversed函數,像enumerate和zip一樣,也會返回一個迭代器。

一些值得學習的Python內置函數(1)

我們可以對這個迭代器做的唯一一件事就是對它進行循環(但只能循環一次):

一些值得學習的Python內置函數(1)

與enumerate和zip類似,reversed是一種循環輔助函數。你會更多的發現,reversed專門用於for循環的for部分中:

一些值得學習的Python內置函數(1)

除了reversed函數外,還有其他方法可以反轉Python列表:

"

在我教的每一節Python入門課上,經常都會被問道像“我們如何才能知道所有這些”這樣的問題。

通常還伴隨著這些問題:

  1. Python中有很多函數,記住這些函數的最好方法是什麼?
  2. 學習我們日常需要的函數,如enumerate 和 range,最好的方法是什麼?
  3. 你是如何知道Python中解決問題的所有方法的?你記下來了嗎?

有幾十個內置函數和類,數百個工具捆綁在Python的標準庫中,以及PyPI上的數千個第三方庫。任何人都不可能記住所有這些東西。

我建議你對你的知識進行分類:

  1. 我應該記住的東西,這樣我就能很好地理解它們
  2. 我應該知道的東西,這樣我以後才能更有效地查找它們
  3. 我根本不應該為之煩惱的東西,除非有一天我需要它們

將這個方法記在腦海中,我們來瀏覽Python文檔中的內置函數頁面。

這將是一篇很長的文章,所以在下一節中我將鏈接到5個子部分和20個特定的內置函數,所以如果你有時間或者正在尋找一個內置函數,你可以提前跳過去查看。

你應該瞭解哪些內置組件?

我估計大多數Python開發人員只需要大約30個內置函數,但是哪30個取決於你實際使用Python做什麼。

我們將以鳥瞰的方式來看看Python中的所有的69個內置函數。

我將嘗試把這些內置組件分成五類:

  1. 眾所周知: 大多數python初學者會因為需要而很快地接觸到這些內置組件
  2. 初學者所忽略的: 瞭解這些函數很有用,但是當你是Python新手時,就會很容易忽略它們
  3. 稍後再學習的: 瞭解這些內置組件通常很有用,但是當/如果你需要它們時,你就會找到它們
  4. 也許最終會學的: 這些東西遲早會派上用場,但只是在特定的情況下
  5. 你可能不需要這些: 除非你在做一些相當專業的事情,否則你不太可能會需要這些

類別1和類別2中的內置函數幾乎是所有Python程序員最終都應該學習的基本內置函數。類別3和類別4中的內置函數是專門的內置函數,它們通常非常有用,但是你對它們的需求會根據你對Python的使用情況而有所不同。類別5是神祕的內置函數,當你需要它們時,這可能非常方便,但是許多Python程序員可能永遠都不需要它們。

Python高手請注意: 我將把所有這些內置組件都稱為函數,儘管其中的27個實際上並不是函數(如我的函數和callables文章中所討論的)。

常見的內置函數(你可能已經很熟悉了):

  1. print
  2. len
  3. str
  4. int
  5. float
  6. list
  7. tuple
  8. dict
  9. set
  10. range

經常被新的Python編程者所忽略的內置函數:

  1. sum
  2. enumerate
  3. zip
  4. bool
  5. reversed
  6. sorted
  7. min
  8. max
  9. any
  10. all

還有5個通常被忽略的內置函數,我建議你自己去了解它們,因為它們使調試更容易: dir、vars、breakpoint、type和help。

除了上面的25個內置函數之外,我們還將在稍後的“以後學習並可能最終會學習的”和“你可能不需要這些”部分中簡要介紹其他的44個內置函數。

10個常見的內置函數

如果你一直在編寫Python代碼,那麼這些內置程序對你來說可能已經很熟悉了。

print

你已經知道了print函數。實現hello world需要用到print。

你可能不瞭解print所接受的各種關鍵字參數:

一些值得學習的Python內置函數(1)

你可以自己查看print函數。

len

在Python中,我們不寫像my_list.length()或my_string.length()這樣的函數; 相反,我們會奇怪地(至少對於新的python開發者來說)使用len(my_list)和len(my_string)。

一些值得學習的Python內置函數(1)

無論你是否喜歡這個類似於操作符的len函數,你都必須使用它,所以你需要習慣它。

str

與許多其他編程語言不同,你不能在Python中連接字符串和數字。

一些值得學習的Python內置函數(1)

Python拒絕將3個整數強制作為一個字符串,所以我們需要自己手動執行,使用內置的str函數(技術上來說是類,但正如我所說的,我將所有這些都稱為函數):

一些值得學習的Python內置函數(1)

int

你是否有用戶輸入並需要將其轉換為數字?那你就需要int函數!

int函數可以將字符串轉換為整數:

一些值得學習的Python內置函數(1)

你還可以使用int將浮點數截斷為整數:

一些值得學習的Python內置函數(1)

注意,如果你在進行除法運算時需要截斷,//操作符可能更合適(儘管它對負數的運行情況會不同):int(3 / 2) == 3 // 2。

float

你要轉換為數字的字符串實際上不是一個整數嗎?那麼你將使用float而不是int來進行轉換。

一些值得學習的Python內置函數(1)

你還可以使用float將整數轉換為浮點數。

在python2中,我們常常使用float將整數轉換為浮點數來強制進行浮點除法而不是整數除法。“整數除法”在Python 3中已經不存在了(除非你專門使用//運算符),因此我們不再需要float來實現這個目的。如果你一旦在Python3代碼中看到float(x) / y,你就可以把它改成x / y。

list

想要創建一個其他一些可迭代對象的列表嗎?

list函數就是做這些的:

一些值得學習的Python內置函數(1)

如果你知道你在處理一個列表,你可以使用copy方法來創建一個該列表的新副本:

一些值得學習的Python內置函數(1)

但是如果你不知道你正在處理的可迭代對象是什麼,list函數是循環一個可迭代對象並複製它的更通用的方法:

一些值得學習的Python內置函數(1)

你也可以使用一個列表推導式,但我不推薦這樣做。

注意,當你想要創建一個空列表時,建議使用列表字面量語法(那些[]括號):

一些值得學習的Python內置函數(1)

使用[]被認為更符合習慣,因為那些方括號([])實際上看起來像一個Python列表。

tuple

tuple函數與list函數非常相似,只是它會創建元組:

一些值得學習的Python內置函數(1)

如果你需要一個元組而不是列表,比如是因為你正在嘗試創建一個可在字典的鍵中使用的可哈希集合,那你可能會想要使用tuple而不是list。

dict

dict函數用於創建一個新字典。

與list和tuple類似,dict函數等價於在一個具有鍵值對的迭代器上進行循環,並從中生成一個字典。

給定一個兩項元組的列表:

一些值得學習的Python內置函數(1)

這個:

一些值得學習的Python內置函數(1)

可以用dict函數代替來生成:

一些值得學習的Python內置函數(1)

dict函數接受兩種類型的參數:

  1. 另一個字典(通用術語是映射),在這種情況下,該字典將被複制
  2. 一個由鍵值元組組成的列表(更準確地說,是由兩項迭代器組成的一個迭代器),在這種情況下,將從這些元素構造一個新字典

所以這也是可行的:

一些值得學習的Python內置函數(1)

dict函數還可以接受關鍵字參數來創建一個帶有基於字符串鍵的字典:

一些值得學習的Python內置函數(1)

但我更喜歡用字典字面量來代替:

一些值得學習的Python內置函數(1)

字典字面量語法更靈活,速度更快,但最重要的是,我發現它更清楚地傳達了我們正在創建一個字典的事實。

就像list和tuple一樣,一個空字典也應該使用字面量語法來創建:

一些值得學習的Python內置函數(1)

使用{}稍微提高了CPU效率,但更重要的是,它更符合人們的習慣: 使用大括號({})創建字典是很常見的,但是dict出現的頻率要低得多。

set

set函數生會成一個新的集合,它接受一個帶有可哈希值的迭代器(字符串、數字或其他不可變類型),並返回一個set:

一些值得學習的Python內置函數(1)

使用{}集合字面量語法(純 {} 會創建一個字典)無法生成空集合,因此set函數是生成空集的唯一方法:

一些值得學習的Python內置函數(1)

事實上,這是一個謊言,因為我們有這個:

一些值得學習的Python內置函數(1)

但是這種語法令人困惑(它依賴於*操作符的一個不太常用的特性),所以我不推薦使用它。

range

range函數給我們返回一個range對象,它表示一個數字範圍:

一些值得學習的Python內置函數(1)

得到的數字範圍包括開始數字,但不包括停止數字(range(0,10)不包括10)。

當你想對一些數字進行循環時,range函數很有用。

一些值得學習的Python內置函數(1)

一個常見的用例是執行一個操作n次(順便說一下,這是一個列表推導式):

一些值得學習的Python內置函數(1)

Python 2的range函數會返回一個列表,這意味著上面的表達式將生成非常非常大的列表。python3的range運行方式與python2的xrange類似(儘管它們有一點不同),因為當我們在這些range對象上循環時,數字是延遲計算的。

被新進的Python高手忽略的內置函數

如果你已經使用Python編程了一段時間,或者剛剛學習了Python類的介紹,那麼你可能已經瞭解了上面的內置函數。

現在,我想展示15個內置函數,這些函數非常便於瞭解,但是常常被新進的Python高手所忽略。

你將在Python代碼中發現前10個函數,但最後5個函數最常在調試時使用。

bool

bool函數會檢查一個Python對象的真實性。

對於數字,真實性是一個非零的問題:

一些值得學習的Python內置函數(1)

對於集合,真實性通常是一個非空的問題(集合的長度是否大於0):

一些值得學習的Python內置函數(1)

真實性(在文檔中稱為真值測試)在Python中非常重要。

代替詢問一些關於一個容器長度的問題,許多Python高手會問一些有關真實性的問題:

一些值得學習的Python內置函數(1)

你可能不會經常看到bool的使用,但是在需要將值強制轉換為布爾值以詢問其真實性的情況下,你會想要了解bool。

enumerate

每當你需要向上計數時,每次一個數字,同時循環遍歷一個迭代器, enumerate函數就會派上用場。

這似乎是一個非常小眾的任務,但它經常出現。

例如,我們可能想要跟蹤一個文件中的行號:

一些值得學習的Python內置函數(1)

enumerate函數也常常用來跟蹤序列中項目的索引。

一些值得學習的Python內置函數(1)

注意,你可能會看到較新的Python專家在Python中使用range(len(sequence))。如果你看到帶有range(len(…))的代碼,那你幾乎總是希望使用enumerate來代替。

一些值得學習的Python內置函數(1)

如果enumerate對你來說是一個新用法(或者如果你經常使用range(len(…)),請查看我關於在Python中使用索引進行循環的文章。

zip

zip函數甚至比enumerate函數更加專門化。

zip函數用於同時循環多個迭代器。

一些值得學習的Python內置函數(1)

如果你必須同時循環兩個列表(或任何其他迭代器),則首選zip而不是enumerate。當你在循環時需要索引時,enumerate函數非常方便,但是當我們特別關心同時循環兩個迭代器時,zip就非常棒了。

如果你是zip新手,我還將在我的“使用索引進行循環”文章中討論它。

enumerate 和 zip都會向我們返回迭代器。迭代器是用來增強for循環的延遲可迭代對象。我有一個關於迭代器的完整討論,以及一篇關於如何創建自己的迭代器的高級文章。

順便說一下,如果你需要對不同長度的迭代器使用zip,你可能需要在Python標準庫中查看 itertools.zip_longest。

reversed

reversed函數,像enumerate和zip一樣,也會返回一個迭代器。

一些值得學習的Python內置函數(1)

我們可以對這個迭代器做的唯一一件事就是對它進行循環(但只能循環一次):

一些值得學習的Python內置函數(1)

與enumerate和zip類似,reversed是一種循環輔助函數。你會更多的發現,reversed專門用於for循環的for部分中:

一些值得學習的Python內置函數(1)

除了reversed函數外,還有其他方法可以反轉Python列表:

一些值得學習的Python內置函數(1)

但是reversed函數通常是反轉Python中任何可迭代對象的最佳方法。

與列表的reverse方法(例如numbers.reverse())不同,reversed方法不會改變列表(相反,它返回一個反轉項的迭代器)。

與numbers[::-1]切片語法不同,reverse (numbers)不會構建一個全新的列表:它返回的延遲迭代器會在我們進行循環時逆向地檢索下一項。此外,reversed(numbers) 比numbers[::-1]更具可讀性(如果你以前從未見過這種特殊的切片用法,那麼它看起來會很奇怪)。

如果我們結合了reversed 和 zip函數的非複製特性,我們就可以重寫palindromic函數(來自上面的enumerate),而不需要佔用任何額外的內存(這裡不會複製列表):

"

在我教的每一節Python入門課上,經常都會被問道像“我們如何才能知道所有這些”這樣的問題。

通常還伴隨著這些問題:

  1. Python中有很多函數,記住這些函數的最好方法是什麼?
  2. 學習我們日常需要的函數,如enumerate 和 range,最好的方法是什麼?
  3. 你是如何知道Python中解決問題的所有方法的?你記下來了嗎?

有幾十個內置函數和類,數百個工具捆綁在Python的標準庫中,以及PyPI上的數千個第三方庫。任何人都不可能記住所有這些東西。

我建議你對你的知識進行分類:

  1. 我應該記住的東西,這樣我就能很好地理解它們
  2. 我應該知道的東西,這樣我以後才能更有效地查找它們
  3. 我根本不應該為之煩惱的東西,除非有一天我需要它們

將這個方法記在腦海中,我們來瀏覽Python文檔中的內置函數頁面。

這將是一篇很長的文章,所以在下一節中我將鏈接到5個子部分和20個特定的內置函數,所以如果你有時間或者正在尋找一個內置函數,你可以提前跳過去查看。

你應該瞭解哪些內置組件?

我估計大多數Python開發人員只需要大約30個內置函數,但是哪30個取決於你實際使用Python做什麼。

我們將以鳥瞰的方式來看看Python中的所有的69個內置函數。

我將嘗試把這些內置組件分成五類:

  1. 眾所周知: 大多數python初學者會因為需要而很快地接觸到這些內置組件
  2. 初學者所忽略的: 瞭解這些函數很有用,但是當你是Python新手時,就會很容易忽略它們
  3. 稍後再學習的: 瞭解這些內置組件通常很有用,但是當/如果你需要它們時,你就會找到它們
  4. 也許最終會學的: 這些東西遲早會派上用場,但只是在特定的情況下
  5. 你可能不需要這些: 除非你在做一些相當專業的事情,否則你不太可能會需要這些

類別1和類別2中的內置函數幾乎是所有Python程序員最終都應該學習的基本內置函數。類別3和類別4中的內置函數是專門的內置函數,它們通常非常有用,但是你對它們的需求會根據你對Python的使用情況而有所不同。類別5是神祕的內置函數,當你需要它們時,這可能非常方便,但是許多Python程序員可能永遠都不需要它們。

Python高手請注意: 我將把所有這些內置組件都稱為函數,儘管其中的27個實際上並不是函數(如我的函數和callables文章中所討論的)。

常見的內置函數(你可能已經很熟悉了):

  1. print
  2. len
  3. str
  4. int
  5. float
  6. list
  7. tuple
  8. dict
  9. set
  10. range

經常被新的Python編程者所忽略的內置函數:

  1. sum
  2. enumerate
  3. zip
  4. bool
  5. reversed
  6. sorted
  7. min
  8. max
  9. any
  10. all

還有5個通常被忽略的內置函數,我建議你自己去了解它們,因為它們使調試更容易: dir、vars、breakpoint、type和help。

除了上面的25個內置函數之外,我們還將在稍後的“以後學習並可能最終會學習的”和“你可能不需要這些”部分中簡要介紹其他的44個內置函數。

10個常見的內置函數

如果你一直在編寫Python代碼,那麼這些內置程序對你來說可能已經很熟悉了。

print

你已經知道了print函數。實現hello world需要用到print。

你可能不瞭解print所接受的各種關鍵字參數:

一些值得學習的Python內置函數(1)

你可以自己查看print函數。

len

在Python中,我們不寫像my_list.length()或my_string.length()這樣的函數; 相反,我們會奇怪地(至少對於新的python開發者來說)使用len(my_list)和len(my_string)。

一些值得學習的Python內置函數(1)

無論你是否喜歡這個類似於操作符的len函數,你都必須使用它,所以你需要習慣它。

str

與許多其他編程語言不同,你不能在Python中連接字符串和數字。

一些值得學習的Python內置函數(1)

Python拒絕將3個整數強制作為一個字符串,所以我們需要自己手動執行,使用內置的str函數(技術上來說是類,但正如我所說的,我將所有這些都稱為函數):

一些值得學習的Python內置函數(1)

int

你是否有用戶輸入並需要將其轉換為數字?那你就需要int函數!

int函數可以將字符串轉換為整數:

一些值得學習的Python內置函數(1)

你還可以使用int將浮點數截斷為整數:

一些值得學習的Python內置函數(1)

注意,如果你在進行除法運算時需要截斷,//操作符可能更合適(儘管它對負數的運行情況會不同):int(3 / 2) == 3 // 2。

float

你要轉換為數字的字符串實際上不是一個整數嗎?那麼你將使用float而不是int來進行轉換。

一些值得學習的Python內置函數(1)

你還可以使用float將整數轉換為浮點數。

在python2中,我們常常使用float將整數轉換為浮點數來強制進行浮點除法而不是整數除法。“整數除法”在Python 3中已經不存在了(除非你專門使用//運算符),因此我們不再需要float來實現這個目的。如果你一旦在Python3代碼中看到float(x) / y,你就可以把它改成x / y。

list

想要創建一個其他一些可迭代對象的列表嗎?

list函數就是做這些的:

一些值得學習的Python內置函數(1)

如果你知道你在處理一個列表,你可以使用copy方法來創建一個該列表的新副本:

一些值得學習的Python內置函數(1)

但是如果你不知道你正在處理的可迭代對象是什麼,list函數是循環一個可迭代對象並複製它的更通用的方法:

一些值得學習的Python內置函數(1)

你也可以使用一個列表推導式,但我不推薦這樣做。

注意,當你想要創建一個空列表時,建議使用列表字面量語法(那些[]括號):

一些值得學習的Python內置函數(1)

使用[]被認為更符合習慣,因為那些方括號([])實際上看起來像一個Python列表。

tuple

tuple函數與list函數非常相似,只是它會創建元組:

一些值得學習的Python內置函數(1)

如果你需要一個元組而不是列表,比如是因為你正在嘗試創建一個可在字典的鍵中使用的可哈希集合,那你可能會想要使用tuple而不是list。

dict

dict函數用於創建一個新字典。

與list和tuple類似,dict函數等價於在一個具有鍵值對的迭代器上進行循環,並從中生成一個字典。

給定一個兩項元組的列表:

一些值得學習的Python內置函數(1)

這個:

一些值得學習的Python內置函數(1)

可以用dict函數代替來生成:

一些值得學習的Python內置函數(1)

dict函數接受兩種類型的參數:

  1. 另一個字典(通用術語是映射),在這種情況下,該字典將被複制
  2. 一個由鍵值元組組成的列表(更準確地說,是由兩項迭代器組成的一個迭代器),在這種情況下,將從這些元素構造一個新字典

所以這也是可行的:

一些值得學習的Python內置函數(1)

dict函數還可以接受關鍵字參數來創建一個帶有基於字符串鍵的字典:

一些值得學習的Python內置函數(1)

但我更喜歡用字典字面量來代替:

一些值得學習的Python內置函數(1)

字典字面量語法更靈活,速度更快,但最重要的是,我發現它更清楚地傳達了我們正在創建一個字典的事實。

就像list和tuple一樣,一個空字典也應該使用字面量語法來創建:

一些值得學習的Python內置函數(1)

使用{}稍微提高了CPU效率,但更重要的是,它更符合人們的習慣: 使用大括號({})創建字典是很常見的,但是dict出現的頻率要低得多。

set

set函數生會成一個新的集合,它接受一個帶有可哈希值的迭代器(字符串、數字或其他不可變類型),並返回一個set:

一些值得學習的Python內置函數(1)

使用{}集合字面量語法(純 {} 會創建一個字典)無法生成空集合,因此set函數是生成空集的唯一方法:

一些值得學習的Python內置函數(1)

事實上,這是一個謊言,因為我們有這個:

一些值得學習的Python內置函數(1)

但是這種語法令人困惑(它依賴於*操作符的一個不太常用的特性),所以我不推薦使用它。

range

range函數給我們返回一個range對象,它表示一個數字範圍:

一些值得學習的Python內置函數(1)

得到的數字範圍包括開始數字,但不包括停止數字(range(0,10)不包括10)。

當你想對一些數字進行循環時,range函數很有用。

一些值得學習的Python內置函數(1)

一個常見的用例是執行一個操作n次(順便說一下,這是一個列表推導式):

一些值得學習的Python內置函數(1)

Python 2的range函數會返回一個列表,這意味著上面的表達式將生成非常非常大的列表。python3的range運行方式與python2的xrange類似(儘管它們有一點不同),因為當我們在這些range對象上循環時,數字是延遲計算的。

被新進的Python高手忽略的內置函數

如果你已經使用Python編程了一段時間,或者剛剛學習了Python類的介紹,那麼你可能已經瞭解了上面的內置函數。

現在,我想展示15個內置函數,這些函數非常便於瞭解,但是常常被新進的Python高手所忽略。

你將在Python代碼中發現前10個函數,但最後5個函數最常在調試時使用。

bool

bool函數會檢查一個Python對象的真實性。

對於數字,真實性是一個非零的問題:

一些值得學習的Python內置函數(1)

對於集合,真實性通常是一個非空的問題(集合的長度是否大於0):

一些值得學習的Python內置函數(1)

真實性(在文檔中稱為真值測試)在Python中非常重要。

代替詢問一些關於一個容器長度的問題,許多Python高手會問一些有關真實性的問題:

一些值得學習的Python內置函數(1)

你可能不會經常看到bool的使用,但是在需要將值強制轉換為布爾值以詢問其真實性的情況下,你會想要了解bool。

enumerate

每當你需要向上計數時,每次一個數字,同時循環遍歷一個迭代器, enumerate函數就會派上用場。

這似乎是一個非常小眾的任務,但它經常出現。

例如,我們可能想要跟蹤一個文件中的行號:

一些值得學習的Python內置函數(1)

enumerate函數也常常用來跟蹤序列中項目的索引。

一些值得學習的Python內置函數(1)

注意,你可能會看到較新的Python專家在Python中使用range(len(sequence))。如果你看到帶有range(len(…))的代碼,那你幾乎總是希望使用enumerate來代替。

一些值得學習的Python內置函數(1)

如果enumerate對你來說是一個新用法(或者如果你經常使用range(len(…)),請查看我關於在Python中使用索引進行循環的文章。

zip

zip函數甚至比enumerate函數更加專門化。

zip函數用於同時循環多個迭代器。

一些值得學習的Python內置函數(1)

如果你必須同時循環兩個列表(或任何其他迭代器),則首選zip而不是enumerate。當你在循環時需要索引時,enumerate函數非常方便,但是當我們特別關心同時循環兩個迭代器時,zip就非常棒了。

如果你是zip新手,我還將在我的“使用索引進行循環”文章中討論它。

enumerate 和 zip都會向我們返回迭代器。迭代器是用來增強for循環的延遲可迭代對象。我有一個關於迭代器的完整討論,以及一篇關於如何創建自己的迭代器的高級文章。

順便說一下,如果你需要對不同長度的迭代器使用zip,你可能需要在Python標準庫中查看 itertools.zip_longest。

reversed

reversed函數,像enumerate和zip一樣,也會返回一個迭代器。

一些值得學習的Python內置函數(1)

我們可以對這個迭代器做的唯一一件事就是對它進行循環(但只能循環一次):

一些值得學習的Python內置函數(1)

與enumerate和zip類似,reversed是一種循環輔助函數。你會更多的發現,reversed專門用於for循環的for部分中:

一些值得學習的Python內置函數(1)

除了reversed函數外,還有其他方法可以反轉Python列表:

一些值得學習的Python內置函數(1)

但是reversed函數通常是反轉Python中任何可迭代對象的最佳方法。

與列表的reverse方法(例如numbers.reverse())不同,reversed方法不會改變列表(相反,它返回一個反轉項的迭代器)。

與numbers[::-1]切片語法不同,reverse (numbers)不會構建一個全新的列表:它返回的延遲迭代器會在我們進行循環時逆向地檢索下一項。此外,reversed(numbers) 比numbers[::-1]更具可讀性(如果你以前從未見過這種特殊的切片用法,那麼它看起來會很奇怪)。

如果我們結合了reversed 和 zip函數的非複製特性,我們就可以重寫palindromic函數(來自上面的enumerate),而不需要佔用任何額外的內存(這裡不會複製列表):

一些值得學習的Python內置函數(1)

sum

sum函數接受一個帶有數字的迭代器,並返回這些數字的和。

"

在我教的每一節Python入門課上,經常都會被問道像“我們如何才能知道所有這些”這樣的問題。

通常還伴隨著這些問題:

  1. Python中有很多函數,記住這些函數的最好方法是什麼?
  2. 學習我們日常需要的函數,如enumerate 和 range,最好的方法是什麼?
  3. 你是如何知道Python中解決問題的所有方法的?你記下來了嗎?

有幾十個內置函數和類,數百個工具捆綁在Python的標準庫中,以及PyPI上的數千個第三方庫。任何人都不可能記住所有這些東西。

我建議你對你的知識進行分類:

  1. 我應該記住的東西,這樣我就能很好地理解它們
  2. 我應該知道的東西,這樣我以後才能更有效地查找它們
  3. 我根本不應該為之煩惱的東西,除非有一天我需要它們

將這個方法記在腦海中,我們來瀏覽Python文檔中的內置函數頁面。

這將是一篇很長的文章,所以在下一節中我將鏈接到5個子部分和20個特定的內置函數,所以如果你有時間或者正在尋找一個內置函數,你可以提前跳過去查看。

你應該瞭解哪些內置組件?

我估計大多數Python開發人員只需要大約30個內置函數,但是哪30個取決於你實際使用Python做什麼。

我們將以鳥瞰的方式來看看Python中的所有的69個內置函數。

我將嘗試把這些內置組件分成五類:

  1. 眾所周知: 大多數python初學者會因為需要而很快地接觸到這些內置組件
  2. 初學者所忽略的: 瞭解這些函數很有用,但是當你是Python新手時,就會很容易忽略它們
  3. 稍後再學習的: 瞭解這些內置組件通常很有用,但是當/如果你需要它們時,你就會找到它們
  4. 也許最終會學的: 這些東西遲早會派上用場,但只是在特定的情況下
  5. 你可能不需要這些: 除非你在做一些相當專業的事情,否則你不太可能會需要這些

類別1和類別2中的內置函數幾乎是所有Python程序員最終都應該學習的基本內置函數。類別3和類別4中的內置函數是專門的內置函數,它們通常非常有用,但是你對它們的需求會根據你對Python的使用情況而有所不同。類別5是神祕的內置函數,當你需要它們時,這可能非常方便,但是許多Python程序員可能永遠都不需要它們。

Python高手請注意: 我將把所有這些內置組件都稱為函數,儘管其中的27個實際上並不是函數(如我的函數和callables文章中所討論的)。

常見的內置函數(你可能已經很熟悉了):

  1. print
  2. len
  3. str
  4. int
  5. float
  6. list
  7. tuple
  8. dict
  9. set
  10. range

經常被新的Python編程者所忽略的內置函數:

  1. sum
  2. enumerate
  3. zip
  4. bool
  5. reversed
  6. sorted
  7. min
  8. max
  9. any
  10. all

還有5個通常被忽略的內置函數,我建議你自己去了解它們,因為它們使調試更容易: dir、vars、breakpoint、type和help。

除了上面的25個內置函數之外,我們還將在稍後的“以後學習並可能最終會學習的”和“你可能不需要這些”部分中簡要介紹其他的44個內置函數。

10個常見的內置函數

如果你一直在編寫Python代碼,那麼這些內置程序對你來說可能已經很熟悉了。

print

你已經知道了print函數。實現hello world需要用到print。

你可能不瞭解print所接受的各種關鍵字參數:

一些值得學習的Python內置函數(1)

你可以自己查看print函數。

len

在Python中,我們不寫像my_list.length()或my_string.length()這樣的函數; 相反,我們會奇怪地(至少對於新的python開發者來說)使用len(my_list)和len(my_string)。

一些值得學習的Python內置函數(1)

無論你是否喜歡這個類似於操作符的len函數,你都必須使用它,所以你需要習慣它。

str

與許多其他編程語言不同,你不能在Python中連接字符串和數字。

一些值得學習的Python內置函數(1)

Python拒絕將3個整數強制作為一個字符串,所以我們需要自己手動執行,使用內置的str函數(技術上來說是類,但正如我所說的,我將所有這些都稱為函數):

一些值得學習的Python內置函數(1)

int

你是否有用戶輸入並需要將其轉換為數字?那你就需要int函數!

int函數可以將字符串轉換為整數:

一些值得學習的Python內置函數(1)

你還可以使用int將浮點數截斷為整數:

一些值得學習的Python內置函數(1)

注意,如果你在進行除法運算時需要截斷,//操作符可能更合適(儘管它對負數的運行情況會不同):int(3 / 2) == 3 // 2。

float

你要轉換為數字的字符串實際上不是一個整數嗎?那麼你將使用float而不是int來進行轉換。

一些值得學習的Python內置函數(1)

你還可以使用float將整數轉換為浮點數。

在python2中,我們常常使用float將整數轉換為浮點數來強制進行浮點除法而不是整數除法。“整數除法”在Python 3中已經不存在了(除非你專門使用//運算符),因此我們不再需要float來實現這個目的。如果你一旦在Python3代碼中看到float(x) / y,你就可以把它改成x / y。

list

想要創建一個其他一些可迭代對象的列表嗎?

list函數就是做這些的:

一些值得學習的Python內置函數(1)

如果你知道你在處理一個列表,你可以使用copy方法來創建一個該列表的新副本:

一些值得學習的Python內置函數(1)

但是如果你不知道你正在處理的可迭代對象是什麼,list函數是循環一個可迭代對象並複製它的更通用的方法:

一些值得學習的Python內置函數(1)

你也可以使用一個列表推導式,但我不推薦這樣做。

注意,當你想要創建一個空列表時,建議使用列表字面量語法(那些[]括號):

一些值得學習的Python內置函數(1)

使用[]被認為更符合習慣,因為那些方括號([])實際上看起來像一個Python列表。

tuple

tuple函數與list函數非常相似,只是它會創建元組:

一些值得學習的Python內置函數(1)

如果你需要一個元組而不是列表,比如是因為你正在嘗試創建一個可在字典的鍵中使用的可哈希集合,那你可能會想要使用tuple而不是list。

dict

dict函數用於創建一個新字典。

與list和tuple類似,dict函數等價於在一個具有鍵值對的迭代器上進行循環,並從中生成一個字典。

給定一個兩項元組的列表:

一些值得學習的Python內置函數(1)

這個:

一些值得學習的Python內置函數(1)

可以用dict函數代替來生成:

一些值得學習的Python內置函數(1)

dict函數接受兩種類型的參數:

  1. 另一個字典(通用術語是映射),在這種情況下,該字典將被複制
  2. 一個由鍵值元組組成的列表(更準確地說,是由兩項迭代器組成的一個迭代器),在這種情況下,將從這些元素構造一個新字典

所以這也是可行的:

一些值得學習的Python內置函數(1)

dict函數還可以接受關鍵字參數來創建一個帶有基於字符串鍵的字典:

一些值得學習的Python內置函數(1)

但我更喜歡用字典字面量來代替:

一些值得學習的Python內置函數(1)

字典字面量語法更靈活,速度更快,但最重要的是,我發現它更清楚地傳達了我們正在創建一個字典的事實。

就像list和tuple一樣,一個空字典也應該使用字面量語法來創建:

一些值得學習的Python內置函數(1)

使用{}稍微提高了CPU效率,但更重要的是,它更符合人們的習慣: 使用大括號({})創建字典是很常見的,但是dict出現的頻率要低得多。

set

set函數生會成一個新的集合,它接受一個帶有可哈希值的迭代器(字符串、數字或其他不可變類型),並返回一個set:

一些值得學習的Python內置函數(1)

使用{}集合字面量語法(純 {} 會創建一個字典)無法生成空集合,因此set函數是生成空集的唯一方法:

一些值得學習的Python內置函數(1)

事實上,這是一個謊言,因為我們有這個:

一些值得學習的Python內置函數(1)

但是這種語法令人困惑(它依賴於*操作符的一個不太常用的特性),所以我不推薦使用它。

range

range函數給我們返回一個range對象,它表示一個數字範圍:

一些值得學習的Python內置函數(1)

得到的數字範圍包括開始數字,但不包括停止數字(range(0,10)不包括10)。

當你想對一些數字進行循環時,range函數很有用。

一些值得學習的Python內置函數(1)

一個常見的用例是執行一個操作n次(順便說一下,這是一個列表推導式):

一些值得學習的Python內置函數(1)

Python 2的range函數會返回一個列表,這意味著上面的表達式將生成非常非常大的列表。python3的range運行方式與python2的xrange類似(儘管它們有一點不同),因為當我們在這些range對象上循環時,數字是延遲計算的。

被新進的Python高手忽略的內置函數

如果你已經使用Python編程了一段時間,或者剛剛學習了Python類的介紹,那麼你可能已經瞭解了上面的內置函數。

現在,我想展示15個內置函數,這些函數非常便於瞭解,但是常常被新進的Python高手所忽略。

你將在Python代碼中發現前10個函數,但最後5個函數最常在調試時使用。

bool

bool函數會檢查一個Python對象的真實性。

對於數字,真實性是一個非零的問題:

一些值得學習的Python內置函數(1)

對於集合,真實性通常是一個非空的問題(集合的長度是否大於0):

一些值得學習的Python內置函數(1)

真實性(在文檔中稱為真值測試)在Python中非常重要。

代替詢問一些關於一個容器長度的問題,許多Python高手會問一些有關真實性的問題:

一些值得學習的Python內置函數(1)

你可能不會經常看到bool的使用,但是在需要將值強制轉換為布爾值以詢問其真實性的情況下,你會想要了解bool。

enumerate

每當你需要向上計數時,每次一個數字,同時循環遍歷一個迭代器, enumerate函數就會派上用場。

這似乎是一個非常小眾的任務,但它經常出現。

例如,我們可能想要跟蹤一個文件中的行號:

一些值得學習的Python內置函數(1)

enumerate函數也常常用來跟蹤序列中項目的索引。

一些值得學習的Python內置函數(1)

注意,你可能會看到較新的Python專家在Python中使用range(len(sequence))。如果你看到帶有range(len(…))的代碼,那你幾乎總是希望使用enumerate來代替。

一些值得學習的Python內置函數(1)

如果enumerate對你來說是一個新用法(或者如果你經常使用range(len(…)),請查看我關於在Python中使用索引進行循環的文章。

zip

zip函數甚至比enumerate函數更加專門化。

zip函數用於同時循環多個迭代器。

一些值得學習的Python內置函數(1)

如果你必須同時循環兩個列表(或任何其他迭代器),則首選zip而不是enumerate。當你在循環時需要索引時,enumerate函數非常方便,但是當我們特別關心同時循環兩個迭代器時,zip就非常棒了。

如果你是zip新手,我還將在我的“使用索引進行循環”文章中討論它。

enumerate 和 zip都會向我們返回迭代器。迭代器是用來增強for循環的延遲可迭代對象。我有一個關於迭代器的完整討論,以及一篇關於如何創建自己的迭代器的高級文章。

順便說一下,如果你需要對不同長度的迭代器使用zip,你可能需要在Python標準庫中查看 itertools.zip_longest。

reversed

reversed函數,像enumerate和zip一樣,也會返回一個迭代器。

一些值得學習的Python內置函數(1)

我們可以對這個迭代器做的唯一一件事就是對它進行循環(但只能循環一次):

一些值得學習的Python內置函數(1)

與enumerate和zip類似,reversed是一種循環輔助函數。你會更多的發現,reversed專門用於for循環的for部分中:

一些值得學習的Python內置函數(1)

除了reversed函數外,還有其他方法可以反轉Python列表:

一些值得學習的Python內置函數(1)

但是reversed函數通常是反轉Python中任何可迭代對象的最佳方法。

與列表的reverse方法(例如numbers.reverse())不同,reversed方法不會改變列表(相反,它返回一個反轉項的迭代器)。

與numbers[::-1]切片語法不同,reverse (numbers)不會構建一個全新的列表:它返回的延遲迭代器會在我們進行循環時逆向地檢索下一項。此外,reversed(numbers) 比numbers[::-1]更具可讀性(如果你以前從未見過這種特殊的切片用法,那麼它看起來會很奇怪)。

如果我們結合了reversed 和 zip函數的非複製特性,我們就可以重寫palindromic函數(來自上面的enumerate),而不需要佔用任何額外的內存(這裡不會複製列表):

一些值得學習的Python內置函數(1)

sum

sum函數接受一個帶有數字的迭代器,並返回這些數字的和。

一些值得學習的Python內置函數(1)

沒有比這更多的了。

Python有很多幫助函數可以為你執行循環,部分原因是它們與生成器表達式能很好地匹配:

"

在我教的每一節Python入門課上,經常都會被問道像“我們如何才能知道所有這些”這樣的問題。

通常還伴隨著這些問題:

  1. Python中有很多函數,記住這些函數的最好方法是什麼?
  2. 學習我們日常需要的函數,如enumerate 和 range,最好的方法是什麼?
  3. 你是如何知道Python中解決問題的所有方法的?你記下來了嗎?

有幾十個內置函數和類,數百個工具捆綁在Python的標準庫中,以及PyPI上的數千個第三方庫。任何人都不可能記住所有這些東西。

我建議你對你的知識進行分類:

  1. 我應該記住的東西,這樣我就能很好地理解它們
  2. 我應該知道的東西,這樣我以後才能更有效地查找它們
  3. 我根本不應該為之煩惱的東西,除非有一天我需要它們

將這個方法記在腦海中,我們來瀏覽Python文檔中的內置函數頁面。

這將是一篇很長的文章,所以在下一節中我將鏈接到5個子部分和20個特定的內置函數,所以如果你有時間或者正在尋找一個內置函數,你可以提前跳過去查看。

你應該瞭解哪些內置組件?

我估計大多數Python開發人員只需要大約30個內置函數,但是哪30個取決於你實際使用Python做什麼。

我們將以鳥瞰的方式來看看Python中的所有的69個內置函數。

我將嘗試把這些內置組件分成五類:

  1. 眾所周知: 大多數python初學者會因為需要而很快地接觸到這些內置組件
  2. 初學者所忽略的: 瞭解這些函數很有用,但是當你是Python新手時,就會很容易忽略它們
  3. 稍後再學習的: 瞭解這些內置組件通常很有用,但是當/如果你需要它們時,你就會找到它們
  4. 也許最終會學的: 這些東西遲早會派上用場,但只是在特定的情況下
  5. 你可能不需要這些: 除非你在做一些相當專業的事情,否則你不太可能會需要這些

類別1和類別2中的內置函數幾乎是所有Python程序員最終都應該學習的基本內置函數。類別3和類別4中的內置函數是專門的內置函數,它們通常非常有用,但是你對它們的需求會根據你對Python的使用情況而有所不同。類別5是神祕的內置函數,當你需要它們時,這可能非常方便,但是許多Python程序員可能永遠都不需要它們。

Python高手請注意: 我將把所有這些內置組件都稱為函數,儘管其中的27個實際上並不是函數(如我的函數和callables文章中所討論的)。

常見的內置函數(你可能已經很熟悉了):

  1. print
  2. len
  3. str
  4. int
  5. float
  6. list
  7. tuple
  8. dict
  9. set
  10. range

經常被新的Python編程者所忽略的內置函數:

  1. sum
  2. enumerate
  3. zip
  4. bool
  5. reversed
  6. sorted
  7. min
  8. max
  9. any
  10. all

還有5個通常被忽略的內置函數,我建議你自己去了解它們,因為它們使調試更容易: dir、vars、breakpoint、type和help。

除了上面的25個內置函數之外,我們還將在稍後的“以後學習並可能最終會學習的”和“你可能不需要這些”部分中簡要介紹其他的44個內置函數。

10個常見的內置函數

如果你一直在編寫Python代碼,那麼這些內置程序對你來說可能已經很熟悉了。

print

你已經知道了print函數。實現hello world需要用到print。

你可能不瞭解print所接受的各種關鍵字參數:

一些值得學習的Python內置函數(1)

你可以自己查看print函數。

len

在Python中,我們不寫像my_list.length()或my_string.length()這樣的函數; 相反,我們會奇怪地(至少對於新的python開發者來說)使用len(my_list)和len(my_string)。

一些值得學習的Python內置函數(1)

無論你是否喜歡這個類似於操作符的len函數,你都必須使用它,所以你需要習慣它。

str

與許多其他編程語言不同,你不能在Python中連接字符串和數字。

一些值得學習的Python內置函數(1)

Python拒絕將3個整數強制作為一個字符串,所以我們需要自己手動執行,使用內置的str函數(技術上來說是類,但正如我所說的,我將所有這些都稱為函數):

一些值得學習的Python內置函數(1)

int

你是否有用戶輸入並需要將其轉換為數字?那你就需要int函數!

int函數可以將字符串轉換為整數:

一些值得學習的Python內置函數(1)

你還可以使用int將浮點數截斷為整數:

一些值得學習的Python內置函數(1)

注意,如果你在進行除法運算時需要截斷,//操作符可能更合適(儘管它對負數的運行情況會不同):int(3 / 2) == 3 // 2。

float

你要轉換為數字的字符串實際上不是一個整數嗎?那麼你將使用float而不是int來進行轉換。

一些值得學習的Python內置函數(1)

你還可以使用float將整數轉換為浮點數。

在python2中,我們常常使用float將整數轉換為浮點數來強制進行浮點除法而不是整數除法。“整數除法”在Python 3中已經不存在了(除非你專門使用//運算符),因此我們不再需要float來實現這個目的。如果你一旦在Python3代碼中看到float(x) / y,你就可以把它改成x / y。

list

想要創建一個其他一些可迭代對象的列表嗎?

list函數就是做這些的:

一些值得學習的Python內置函數(1)

如果你知道你在處理一個列表,你可以使用copy方法來創建一個該列表的新副本:

一些值得學習的Python內置函數(1)

但是如果你不知道你正在處理的可迭代對象是什麼,list函數是循環一個可迭代對象並複製它的更通用的方法:

一些值得學習的Python內置函數(1)

你也可以使用一個列表推導式,但我不推薦這樣做。

注意,當你想要創建一個空列表時,建議使用列表字面量語法(那些[]括號):

一些值得學習的Python內置函數(1)

使用[]被認為更符合習慣,因為那些方括號([])實際上看起來像一個Python列表。

tuple

tuple函數與list函數非常相似,只是它會創建元組:

一些值得學習的Python內置函數(1)

如果你需要一個元組而不是列表,比如是因為你正在嘗試創建一個可在字典的鍵中使用的可哈希集合,那你可能會想要使用tuple而不是list。

dict

dict函數用於創建一個新字典。

與list和tuple類似,dict函數等價於在一個具有鍵值對的迭代器上進行循環,並從中生成一個字典。

給定一個兩項元組的列表:

一些值得學習的Python內置函數(1)

這個:

一些值得學習的Python內置函數(1)

可以用dict函數代替來生成:

一些值得學習的Python內置函數(1)

dict函數接受兩種類型的參數:

  1. 另一個字典(通用術語是映射),在這種情況下,該字典將被複制
  2. 一個由鍵值元組組成的列表(更準確地說,是由兩項迭代器組成的一個迭代器),在這種情況下,將從這些元素構造一個新字典

所以這也是可行的:

一些值得學習的Python內置函數(1)

dict函數還可以接受關鍵字參數來創建一個帶有基於字符串鍵的字典:

一些值得學習的Python內置函數(1)

但我更喜歡用字典字面量來代替:

一些值得學習的Python內置函數(1)

字典字面量語法更靈活,速度更快,但最重要的是,我發現它更清楚地傳達了我們正在創建一個字典的事實。

就像list和tuple一樣,一個空字典也應該使用字面量語法來創建:

一些值得學習的Python內置函數(1)

使用{}稍微提高了CPU效率,但更重要的是,它更符合人們的習慣: 使用大括號({})創建字典是很常見的,但是dict出現的頻率要低得多。

set

set函數生會成一個新的集合,它接受一個帶有可哈希值的迭代器(字符串、數字或其他不可變類型),並返回一個set:

一些值得學習的Python內置函數(1)

使用{}集合字面量語法(純 {} 會創建一個字典)無法生成空集合,因此set函數是生成空集的唯一方法:

一些值得學習的Python內置函數(1)

事實上,這是一個謊言,因為我們有這個:

一些值得學習的Python內置函數(1)

但是這種語法令人困惑(它依賴於*操作符的一個不太常用的特性),所以我不推薦使用它。

range

range函數給我們返回一個range對象,它表示一個數字範圍:

一些值得學習的Python內置函數(1)

得到的數字範圍包括開始數字,但不包括停止數字(range(0,10)不包括10)。

當你想對一些數字進行循環時,range函數很有用。

一些值得學習的Python內置函數(1)

一個常見的用例是執行一個操作n次(順便說一下,這是一個列表推導式):

一些值得學習的Python內置函數(1)

Python 2的range函數會返回一個列表,這意味著上面的表達式將生成非常非常大的列表。python3的range運行方式與python2的xrange類似(儘管它們有一點不同),因為當我們在這些range對象上循環時,數字是延遲計算的。

被新進的Python高手忽略的內置函數

如果你已經使用Python編程了一段時間,或者剛剛學習了Python類的介紹,那麼你可能已經瞭解了上面的內置函數。

現在,我想展示15個內置函數,這些函數非常便於瞭解,但是常常被新進的Python高手所忽略。

你將在Python代碼中發現前10個函數,但最後5個函數最常在調試時使用。

bool

bool函數會檢查一個Python對象的真實性。

對於數字,真實性是一個非零的問題:

一些值得學習的Python內置函數(1)

對於集合,真實性通常是一個非空的問題(集合的長度是否大於0):

一些值得學習的Python內置函數(1)

真實性(在文檔中稱為真值測試)在Python中非常重要。

代替詢問一些關於一個容器長度的問題,許多Python高手會問一些有關真實性的問題:

一些值得學習的Python內置函數(1)

你可能不會經常看到bool的使用,但是在需要將值強制轉換為布爾值以詢問其真實性的情況下,你會想要了解bool。

enumerate

每當你需要向上計數時,每次一個數字,同時循環遍歷一個迭代器, enumerate函數就會派上用場。

這似乎是一個非常小眾的任務,但它經常出現。

例如,我們可能想要跟蹤一個文件中的行號:

一些值得學習的Python內置函數(1)

enumerate函數也常常用來跟蹤序列中項目的索引。

一些值得學習的Python內置函數(1)

注意,你可能會看到較新的Python專家在Python中使用range(len(sequence))。如果你看到帶有range(len(…))的代碼,那你幾乎總是希望使用enumerate來代替。

一些值得學習的Python內置函數(1)

如果enumerate對你來說是一個新用法(或者如果你經常使用range(len(…)),請查看我關於在Python中使用索引進行循環的文章。

zip

zip函數甚至比enumerate函數更加專門化。

zip函數用於同時循環多個迭代器。

一些值得學習的Python內置函數(1)

如果你必須同時循環兩個列表(或任何其他迭代器),則首選zip而不是enumerate。當你在循環時需要索引時,enumerate函數非常方便,但是當我們特別關心同時循環兩個迭代器時,zip就非常棒了。

如果你是zip新手,我還將在我的“使用索引進行循環”文章中討論它。

enumerate 和 zip都會向我們返回迭代器。迭代器是用來增強for循環的延遲可迭代對象。我有一個關於迭代器的完整討論,以及一篇關於如何創建自己的迭代器的高級文章。

順便說一下,如果你需要對不同長度的迭代器使用zip,你可能需要在Python標準庫中查看 itertools.zip_longest。

reversed

reversed函數,像enumerate和zip一樣,也會返回一個迭代器。

一些值得學習的Python內置函數(1)

我們可以對這個迭代器做的唯一一件事就是對它進行循環(但只能循環一次):

一些值得學習的Python內置函數(1)

與enumerate和zip類似,reversed是一種循環輔助函數。你會更多的發現,reversed專門用於for循環的for部分中:

一些值得學習的Python內置函數(1)

除了reversed函數外,還有其他方法可以反轉Python列表:

一些值得學習的Python內置函數(1)

但是reversed函數通常是反轉Python中任何可迭代對象的最佳方法。

與列表的reverse方法(例如numbers.reverse())不同,reversed方法不會改變列表(相反,它返回一個反轉項的迭代器)。

與numbers[::-1]切片語法不同,reverse (numbers)不會構建一個全新的列表:它返回的延遲迭代器會在我們進行循環時逆向地檢索下一項。此外,reversed(numbers) 比numbers[::-1]更具可讀性(如果你以前從未見過這種特殊的切片用法,那麼它看起來會很奇怪)。

如果我們結合了reversed 和 zip函數的非複製特性,我們就可以重寫palindromic函數(來自上面的enumerate),而不需要佔用任何額外的內存(這裡不會複製列表):

一些值得學習的Python內置函數(1)

sum

sum函數接受一個帶有數字的迭代器,並返回這些數字的和。

一些值得學習的Python內置函數(1)

沒有比這更多的了。

Python有很多幫助函數可以為你執行循環,部分原因是它們與生成器表達式能很好地匹配:

一些值得學習的Python內置函數(1)

如果你對生成器表達式感興趣,我在我的“可理解的推導式”演講(以及我3小時的關於“推導式和生成器表達式“的教程)中討論了它們。

min 和 max

min和max函數實現了你所期望的功能:它們會為你返回一個迭代器中的最小和最大項。

"

在我教的每一節Python入門課上,經常都會被問道像“我們如何才能知道所有這些”這樣的問題。

通常還伴隨著這些問題:

  1. Python中有很多函數,記住這些函數的最好方法是什麼?
  2. 學習我們日常需要的函數,如enumerate 和 range,最好的方法是什麼?
  3. 你是如何知道Python中解決問題的所有方法的?你記下來了嗎?

有幾十個內置函數和類,數百個工具捆綁在Python的標準庫中,以及PyPI上的數千個第三方庫。任何人都不可能記住所有這些東西。

我建議你對你的知識進行分類:

  1. 我應該記住的東西,這樣我就能很好地理解它們
  2. 我應該知道的東西,這樣我以後才能更有效地查找它們
  3. 我根本不應該為之煩惱的東西,除非有一天我需要它們

將這個方法記在腦海中,我們來瀏覽Python文檔中的內置函數頁面。

這將是一篇很長的文章,所以在下一節中我將鏈接到5個子部分和20個特定的內置函數,所以如果你有時間或者正在尋找一個內置函數,你可以提前跳過去查看。

你應該瞭解哪些內置組件?

我估計大多數Python開發人員只需要大約30個內置函數,但是哪30個取決於你實際使用Python做什麼。

我們將以鳥瞰的方式來看看Python中的所有的69個內置函數。

我將嘗試把這些內置組件分成五類:

  1. 眾所周知: 大多數python初學者會因為需要而很快地接觸到這些內置組件
  2. 初學者所忽略的: 瞭解這些函數很有用,但是當你是Python新手時,就會很容易忽略它們
  3. 稍後再學習的: 瞭解這些內置組件通常很有用,但是當/如果你需要它們時,你就會找到它們
  4. 也許最終會學的: 這些東西遲早會派上用場,但只是在特定的情況下
  5. 你可能不需要這些: 除非你在做一些相當專業的事情,否則你不太可能會需要這些

類別1和類別2中的內置函數幾乎是所有Python程序員最終都應該學習的基本內置函數。類別3和類別4中的內置函數是專門的內置函數,它們通常非常有用,但是你對它們的需求會根據你對Python的使用情況而有所不同。類別5是神祕的內置函數,當你需要它們時,這可能非常方便,但是許多Python程序員可能永遠都不需要它們。

Python高手請注意: 我將把所有這些內置組件都稱為函數,儘管其中的27個實際上並不是函數(如我的函數和callables文章中所討論的)。

常見的內置函數(你可能已經很熟悉了):

  1. print
  2. len
  3. str
  4. int
  5. float
  6. list
  7. tuple
  8. dict
  9. set
  10. range

經常被新的Python編程者所忽略的內置函數:

  1. sum
  2. enumerate
  3. zip
  4. bool
  5. reversed
  6. sorted
  7. min
  8. max
  9. any
  10. all

還有5個通常被忽略的內置函數,我建議你自己去了解它們,因為它們使調試更容易: dir、vars、breakpoint、type和help。

除了上面的25個內置函數之外,我們還將在稍後的“以後學習並可能最終會學習的”和“你可能不需要這些”部分中簡要介紹其他的44個內置函數。

10個常見的內置函數

如果你一直在編寫Python代碼,那麼這些內置程序對你來說可能已經很熟悉了。

print

你已經知道了print函數。實現hello world需要用到print。

你可能不瞭解print所接受的各種關鍵字參數:

一些值得學習的Python內置函數(1)

你可以自己查看print函數。

len

在Python中,我們不寫像my_list.length()或my_string.length()這樣的函數; 相反,我們會奇怪地(至少對於新的python開發者來說)使用len(my_list)和len(my_string)。

一些值得學習的Python內置函數(1)

無論你是否喜歡這個類似於操作符的len函數,你都必須使用它,所以你需要習慣它。

str

與許多其他編程語言不同,你不能在Python中連接字符串和數字。

一些值得學習的Python內置函數(1)

Python拒絕將3個整數強制作為一個字符串,所以我們需要自己手動執行,使用內置的str函數(技術上來說是類,但正如我所說的,我將所有這些都稱為函數):

一些值得學習的Python內置函數(1)

int

你是否有用戶輸入並需要將其轉換為數字?那你就需要int函數!

int函數可以將字符串轉換為整數:

一些值得學習的Python內置函數(1)

你還可以使用int將浮點數截斷為整數:

一些值得學習的Python內置函數(1)

注意,如果你在進行除法運算時需要截斷,//操作符可能更合適(儘管它對負數的運行情況會不同):int(3 / 2) == 3 // 2。

float

你要轉換為數字的字符串實際上不是一個整數嗎?那麼你將使用float而不是int來進行轉換。

一些值得學習的Python內置函數(1)

你還可以使用float將整數轉換為浮點數。

在python2中,我們常常使用float將整數轉換為浮點數來強制進行浮點除法而不是整數除法。“整數除法”在Python 3中已經不存在了(除非你專門使用//運算符),因此我們不再需要float來實現這個目的。如果你一旦在Python3代碼中看到float(x) / y,你就可以把它改成x / y。

list

想要創建一個其他一些可迭代對象的列表嗎?

list函數就是做這些的:

一些值得學習的Python內置函數(1)

如果你知道你在處理一個列表,你可以使用copy方法來創建一個該列表的新副本:

一些值得學習的Python內置函數(1)

但是如果你不知道你正在處理的可迭代對象是什麼,list函數是循環一個可迭代對象並複製它的更通用的方法:

一些值得學習的Python內置函數(1)

你也可以使用一個列表推導式,但我不推薦這樣做。

注意,當你想要創建一個空列表時,建議使用列表字面量語法(那些[]括號):

一些值得學習的Python內置函數(1)

使用[]被認為更符合習慣,因為那些方括號([])實際上看起來像一個Python列表。

tuple

tuple函數與list函數非常相似,只是它會創建元組:

一些值得學習的Python內置函數(1)

如果你需要一個元組而不是列表,比如是因為你正在嘗試創建一個可在字典的鍵中使用的可哈希集合,那你可能會想要使用tuple而不是list。

dict

dict函數用於創建一個新字典。

與list和tuple類似,dict函數等價於在一個具有鍵值對的迭代器上進行循環,並從中生成一個字典。

給定一個兩項元組的列表:

一些值得學習的Python內置函數(1)

這個:

一些值得學習的Python內置函數(1)

可以用dict函數代替來生成:

一些值得學習的Python內置函數(1)

dict函數接受兩種類型的參數:

  1. 另一個字典(通用術語是映射),在這種情況下,該字典將被複制
  2. 一個由鍵值元組組成的列表(更準確地說,是由兩項迭代器組成的一個迭代器),在這種情況下,將從這些元素構造一個新字典

所以這也是可行的:

一些值得學習的Python內置函數(1)

dict函數還可以接受關鍵字參數來創建一個帶有基於字符串鍵的字典:

一些值得學習的Python內置函數(1)

但我更喜歡用字典字面量來代替:

一些值得學習的Python內置函數(1)

字典字面量語法更靈活,速度更快,但最重要的是,我發現它更清楚地傳達了我們正在創建一個字典的事實。

就像list和tuple一樣,一個空字典也應該使用字面量語法來創建:

一些值得學習的Python內置函數(1)

使用{}稍微提高了CPU效率,但更重要的是,它更符合人們的習慣: 使用大括號({})創建字典是很常見的,但是dict出現的頻率要低得多。

set

set函數生會成一個新的集合,它接受一個帶有可哈希值的迭代器(字符串、數字或其他不可變類型),並返回一個set:

一些值得學習的Python內置函數(1)

使用{}集合字面量語法(純 {} 會創建一個字典)無法生成空集合,因此set函數是生成空集的唯一方法:

一些值得學習的Python內置函數(1)

事實上,這是一個謊言,因為我們有這個:

一些值得學習的Python內置函數(1)

但是這種語法令人困惑(它依賴於*操作符的一個不太常用的特性),所以我不推薦使用它。

range

range函數給我們返回一個range對象,它表示一個數字範圍:

一些值得學習的Python內置函數(1)

得到的數字範圍包括開始數字,但不包括停止數字(range(0,10)不包括10)。

當你想對一些數字進行循環時,range函數很有用。

一些值得學習的Python內置函數(1)

一個常見的用例是執行一個操作n次(順便說一下,這是一個列表推導式):

一些值得學習的Python內置函數(1)

Python 2的range函數會返回一個列表,這意味著上面的表達式將生成非常非常大的列表。python3的range運行方式與python2的xrange類似(儘管它們有一點不同),因為當我們在這些range對象上循環時,數字是延遲計算的。

被新進的Python高手忽略的內置函數

如果你已經使用Python編程了一段時間,或者剛剛學習了Python類的介紹,那麼你可能已經瞭解了上面的內置函數。

現在,我想展示15個內置函數,這些函數非常便於瞭解,但是常常被新進的Python高手所忽略。

你將在Python代碼中發現前10個函數,但最後5個函數最常在調試時使用。

bool

bool函數會檢查一個Python對象的真實性。

對於數字,真實性是一個非零的問題:

一些值得學習的Python內置函數(1)

對於集合,真實性通常是一個非空的問題(集合的長度是否大於0):

一些值得學習的Python內置函數(1)

真實性(在文檔中稱為真值測試)在Python中非常重要。

代替詢問一些關於一個容器長度的問題,許多Python高手會問一些有關真實性的問題:

一些值得學習的Python內置函數(1)

你可能不會經常看到bool的使用,但是在需要將值強制轉換為布爾值以詢問其真實性的情況下,你會想要了解bool。

enumerate

每當你需要向上計數時,每次一個數字,同時循環遍歷一個迭代器, enumerate函數就會派上用場。

這似乎是一個非常小眾的任務,但它經常出現。

例如,我們可能想要跟蹤一個文件中的行號:

一些值得學習的Python內置函數(1)

enumerate函數也常常用來跟蹤序列中項目的索引。

一些值得學習的Python內置函數(1)

注意,你可能會看到較新的Python專家在Python中使用range(len(sequence))。如果你看到帶有range(len(…))的代碼,那你幾乎總是希望使用enumerate來代替。

一些值得學習的Python內置函數(1)

如果enumerate對你來說是一個新用法(或者如果你經常使用range(len(…)),請查看我關於在Python中使用索引進行循環的文章。

zip

zip函數甚至比enumerate函數更加專門化。

zip函數用於同時循環多個迭代器。

一些值得學習的Python內置函數(1)

如果你必須同時循環兩個列表(或任何其他迭代器),則首選zip而不是enumerate。當你在循環時需要索引時,enumerate函數非常方便,但是當我們特別關心同時循環兩個迭代器時,zip就非常棒了。

如果你是zip新手,我還將在我的“使用索引進行循環”文章中討論它。

enumerate 和 zip都會向我們返回迭代器。迭代器是用來增強for循環的延遲可迭代對象。我有一個關於迭代器的完整討論,以及一篇關於如何創建自己的迭代器的高級文章。

順便說一下,如果你需要對不同長度的迭代器使用zip,你可能需要在Python標準庫中查看 itertools.zip_longest。

reversed

reversed函數,像enumerate和zip一樣,也會返回一個迭代器。

一些值得學習的Python內置函數(1)

我們可以對這個迭代器做的唯一一件事就是對它進行循環(但只能循環一次):

一些值得學習的Python內置函數(1)

與enumerate和zip類似,reversed是一種循環輔助函數。你會更多的發現,reversed專門用於for循環的for部分中:

一些值得學習的Python內置函數(1)

除了reversed函數外,還有其他方法可以反轉Python列表:

一些值得學習的Python內置函數(1)

但是reversed函數通常是反轉Python中任何可迭代對象的最佳方法。

與列表的reverse方法(例如numbers.reverse())不同,reversed方法不會改變列表(相反,它返回一個反轉項的迭代器)。

與numbers[::-1]切片語法不同,reverse (numbers)不會構建一個全新的列表:它返回的延遲迭代器會在我們進行循環時逆向地檢索下一項。此外,reversed(numbers) 比numbers[::-1]更具可讀性(如果你以前從未見過這種特殊的切片用法,那麼它看起來會很奇怪)。

如果我們結合了reversed 和 zip函數的非複製特性,我們就可以重寫palindromic函數(來自上面的enumerate),而不需要佔用任何額外的內存(這裡不會複製列表):

一些值得學習的Python內置函數(1)

sum

sum函數接受一個帶有數字的迭代器,並返回這些數字的和。

一些值得學習的Python內置函數(1)

沒有比這更多的了。

Python有很多幫助函數可以為你執行循環,部分原因是它們與生成器表達式能很好地匹配:

一些值得學習的Python內置函數(1)

如果你對生成器表達式感興趣,我在我的“可理解的推導式”演講(以及我3小時的關於“推導式和生成器表達式“的教程)中討論了它們。

min 和 max

min和max函數實現了你所期望的功能:它們會為你返回一個迭代器中的最小和最大項。

一些值得學習的Python內置函數(1)

min和max函數使用<操作符來比較傳給它們的項。因此,所有的值都要是可排序的,並且彼此之間是可比較的(幸運的是,Python中的許多對象是可排序的)。

min和max函數還可以接受一個key函數,允許你自定義特定對象的“最小”和“最大值”的真正含義。

sorted

sorted函數接受任何可迭代的對象,並以排序後的順序返回該可迭代對象中所有值的一個新列表。

"

在我教的每一節Python入門課上,經常都會被問道像“我們如何才能知道所有這些”這樣的問題。

通常還伴隨著這些問題:

  1. Python中有很多函數,記住這些函數的最好方法是什麼?
  2. 學習我們日常需要的函數,如enumerate 和 range,最好的方法是什麼?
  3. 你是如何知道Python中解決問題的所有方法的?你記下來了嗎?

有幾十個內置函數和類,數百個工具捆綁在Python的標準庫中,以及PyPI上的數千個第三方庫。任何人都不可能記住所有這些東西。

我建議你對你的知識進行分類:

  1. 我應該記住的東西,這樣我就能很好地理解它們
  2. 我應該知道的東西,這樣我以後才能更有效地查找它們
  3. 我根本不應該為之煩惱的東西,除非有一天我需要它們

將這個方法記在腦海中,我們來瀏覽Python文檔中的內置函數頁面。

這將是一篇很長的文章,所以在下一節中我將鏈接到5個子部分和20個特定的內置函數,所以如果你有時間或者正在尋找一個內置函數,你可以提前跳過去查看。

你應該瞭解哪些內置組件?

我估計大多數Python開發人員只需要大約30個內置函數,但是哪30個取決於你實際使用Python做什麼。

我們將以鳥瞰的方式來看看Python中的所有的69個內置函數。

我將嘗試把這些內置組件分成五類:

  1. 眾所周知: 大多數python初學者會因為需要而很快地接觸到這些內置組件
  2. 初學者所忽略的: 瞭解這些函數很有用,但是當你是Python新手時,就會很容易忽略它們
  3. 稍後再學習的: 瞭解這些內置組件通常很有用,但是當/如果你需要它們時,你就會找到它們
  4. 也許最終會學的: 這些東西遲早會派上用場,但只是在特定的情況下
  5. 你可能不需要這些: 除非你在做一些相當專業的事情,否則你不太可能會需要這些

類別1和類別2中的內置函數幾乎是所有Python程序員最終都應該學習的基本內置函數。類別3和類別4中的內置函數是專門的內置函數,它們通常非常有用,但是你對它們的需求會根據你對Python的使用情況而有所不同。類別5是神祕的內置函數,當你需要它們時,這可能非常方便,但是許多Python程序員可能永遠都不需要它們。

Python高手請注意: 我將把所有這些內置組件都稱為函數,儘管其中的27個實際上並不是函數(如我的函數和callables文章中所討論的)。

常見的內置函數(你可能已經很熟悉了):

  1. print
  2. len
  3. str
  4. int
  5. float
  6. list
  7. tuple
  8. dict
  9. set
  10. range

經常被新的Python編程者所忽略的內置函數:

  1. sum
  2. enumerate
  3. zip
  4. bool
  5. reversed
  6. sorted
  7. min
  8. max
  9. any
  10. all

還有5個通常被忽略的內置函數,我建議你自己去了解它們,因為它們使調試更容易: dir、vars、breakpoint、type和help。

除了上面的25個內置函數之外,我們還將在稍後的“以後學習並可能最終會學習的”和“你可能不需要這些”部分中簡要介紹其他的44個內置函數。

10個常見的內置函數

如果你一直在編寫Python代碼,那麼這些內置程序對你來說可能已經很熟悉了。

print

你已經知道了print函數。實現hello world需要用到print。

你可能不瞭解print所接受的各種關鍵字參數:

一些值得學習的Python內置函數(1)

你可以自己查看print函數。

len

在Python中,我們不寫像my_list.length()或my_string.length()這樣的函數; 相反,我們會奇怪地(至少對於新的python開發者來說)使用len(my_list)和len(my_string)。

一些值得學習的Python內置函數(1)

無論你是否喜歡這個類似於操作符的len函數,你都必須使用它,所以你需要習慣它。

str

與許多其他編程語言不同,你不能在Python中連接字符串和數字。

一些值得學習的Python內置函數(1)

Python拒絕將3個整數強制作為一個字符串,所以我們需要自己手動執行,使用內置的str函數(技術上來說是類,但正如我所說的,我將所有這些都稱為函數):

一些值得學習的Python內置函數(1)

int

你是否有用戶輸入並需要將其轉換為數字?那你就需要int函數!

int函數可以將字符串轉換為整數:

一些值得學習的Python內置函數(1)

你還可以使用int將浮點數截斷為整數:

一些值得學習的Python內置函數(1)

注意,如果你在進行除法運算時需要截斷,//操作符可能更合適(儘管它對負數的運行情況會不同):int(3 / 2) == 3 // 2。

float

你要轉換為數字的字符串實際上不是一個整數嗎?那麼你將使用float而不是int來進行轉換。

一些值得學習的Python內置函數(1)

你還可以使用float將整數轉換為浮點數。

在python2中,我們常常使用float將整數轉換為浮點數來強制進行浮點除法而不是整數除法。“整數除法”在Python 3中已經不存在了(除非你專門使用//運算符),因此我們不再需要float來實現這個目的。如果你一旦在Python3代碼中看到float(x) / y,你就可以把它改成x / y。

list

想要創建一個其他一些可迭代對象的列表嗎?

list函數就是做這些的:

一些值得學習的Python內置函數(1)

如果你知道你在處理一個列表,你可以使用copy方法來創建一個該列表的新副本:

一些值得學習的Python內置函數(1)

但是如果你不知道你正在處理的可迭代對象是什麼,list函數是循環一個可迭代對象並複製它的更通用的方法:

一些值得學習的Python內置函數(1)

你也可以使用一個列表推導式,但我不推薦這樣做。

注意,當你想要創建一個空列表時,建議使用列表字面量語法(那些[]括號):

一些值得學習的Python內置函數(1)

使用[]被認為更符合習慣,因為那些方括號([])實際上看起來像一個Python列表。

tuple

tuple函數與list函數非常相似,只是它會創建元組:

一些值得學習的Python內置函數(1)

如果你需要一個元組而不是列表,比如是因為你正在嘗試創建一個可在字典的鍵中使用的可哈希集合,那你可能會想要使用tuple而不是list。

dict

dict函數用於創建一個新字典。

與list和tuple類似,dict函數等價於在一個具有鍵值對的迭代器上進行循環,並從中生成一個字典。

給定一個兩項元組的列表:

一些值得學習的Python內置函數(1)

這個:

一些值得學習的Python內置函數(1)

可以用dict函數代替來生成:

一些值得學習的Python內置函數(1)

dict函數接受兩種類型的參數:

  1. 另一個字典(通用術語是映射),在這種情況下,該字典將被複制
  2. 一個由鍵值元組組成的列表(更準確地說,是由兩項迭代器組成的一個迭代器),在這種情況下,將從這些元素構造一個新字典

所以這也是可行的:

一些值得學習的Python內置函數(1)

dict函數還可以接受關鍵字參數來創建一個帶有基於字符串鍵的字典:

一些值得學習的Python內置函數(1)

但我更喜歡用字典字面量來代替:

一些值得學習的Python內置函數(1)

字典字面量語法更靈活,速度更快,但最重要的是,我發現它更清楚地傳達了我們正在創建一個字典的事實。

就像list和tuple一樣,一個空字典也應該使用字面量語法來創建:

一些值得學習的Python內置函數(1)

使用{}稍微提高了CPU效率,但更重要的是,它更符合人們的習慣: 使用大括號({})創建字典是很常見的,但是dict出現的頻率要低得多。

set

set函數生會成一個新的集合,它接受一個帶有可哈希值的迭代器(字符串、數字或其他不可變類型),並返回一個set:

一些值得學習的Python內置函數(1)

使用{}集合字面量語法(純 {} 會創建一個字典)無法生成空集合,因此set函數是生成空集的唯一方法:

一些值得學習的Python內置函數(1)

事實上,這是一個謊言,因為我們有這個:

一些值得學習的Python內置函數(1)

但是這種語法令人困惑(它依賴於*操作符的一個不太常用的特性),所以我不推薦使用它。

range

range函數給我們返回一個range對象,它表示一個數字範圍:

一些值得學習的Python內置函數(1)

得到的數字範圍包括開始數字,但不包括停止數字(range(0,10)不包括10)。

當你想對一些數字進行循環時,range函數很有用。

一些值得學習的Python內置函數(1)

一個常見的用例是執行一個操作n次(順便說一下,這是一個列表推導式):

一些值得學習的Python內置函數(1)

Python 2的range函數會返回一個列表,這意味著上面的表達式將生成非常非常大的列表。python3的range運行方式與python2的xrange類似(儘管它們有一點不同),因為當我們在這些range對象上循環時,數字是延遲計算的。

被新進的Python高手忽略的內置函數

如果你已經使用Python編程了一段時間,或者剛剛學習了Python類的介紹,那麼你可能已經瞭解了上面的內置函數。

現在,我想展示15個內置函數,這些函數非常便於瞭解,但是常常被新進的Python高手所忽略。

你將在Python代碼中發現前10個函數,但最後5個函數最常在調試時使用。

bool

bool函數會檢查一個Python對象的真實性。

對於數字,真實性是一個非零的問題:

一些值得學習的Python內置函數(1)

對於集合,真實性通常是一個非空的問題(集合的長度是否大於0):

一些值得學習的Python內置函數(1)

真實性(在文檔中稱為真值測試)在Python中非常重要。

代替詢問一些關於一個容器長度的問題,許多Python高手會問一些有關真實性的問題:

一些值得學習的Python內置函數(1)

你可能不會經常看到bool的使用,但是在需要將值強制轉換為布爾值以詢問其真實性的情況下,你會想要了解bool。

enumerate

每當你需要向上計數時,每次一個數字,同時循環遍歷一個迭代器, enumerate函數就會派上用場。

這似乎是一個非常小眾的任務,但它經常出現。

例如,我們可能想要跟蹤一個文件中的行號:

一些值得學習的Python內置函數(1)

enumerate函數也常常用來跟蹤序列中項目的索引。

一些值得學習的Python內置函數(1)

注意,你可能會看到較新的Python專家在Python中使用range(len(sequence))。如果你看到帶有range(len(…))的代碼,那你幾乎總是希望使用enumerate來代替。

一些值得學習的Python內置函數(1)

如果enumerate對你來說是一個新用法(或者如果你經常使用range(len(…)),請查看我關於在Python中使用索引進行循環的文章。

zip

zip函數甚至比enumerate函數更加專門化。

zip函數用於同時循環多個迭代器。

一些值得學習的Python內置函數(1)

如果你必須同時循環兩個列表(或任何其他迭代器),則首選zip而不是enumerate。當你在循環時需要索引時,enumerate函數非常方便,但是當我們特別關心同時循環兩個迭代器時,zip就非常棒了。

如果你是zip新手,我還將在我的“使用索引進行循環”文章中討論它。

enumerate 和 zip都會向我們返回迭代器。迭代器是用來增強for循環的延遲可迭代對象。我有一個關於迭代器的完整討論,以及一篇關於如何創建自己的迭代器的高級文章。

順便說一下,如果你需要對不同長度的迭代器使用zip,你可能需要在Python標準庫中查看 itertools.zip_longest。

reversed

reversed函數,像enumerate和zip一樣,也會返回一個迭代器。

一些值得學習的Python內置函數(1)

我們可以對這個迭代器做的唯一一件事就是對它進行循環(但只能循環一次):

一些值得學習的Python內置函數(1)

與enumerate和zip類似,reversed是一種循環輔助函數。你會更多的發現,reversed專門用於for循環的for部分中:

一些值得學習的Python內置函數(1)

除了reversed函數外,還有其他方法可以反轉Python列表:

一些值得學習的Python內置函數(1)

但是reversed函數通常是反轉Python中任何可迭代對象的最佳方法。

與列表的reverse方法(例如numbers.reverse())不同,reversed方法不會改變列表(相反,它返回一個反轉項的迭代器)。

與numbers[::-1]切片語法不同,reverse (numbers)不會構建一個全新的列表:它返回的延遲迭代器會在我們進行循環時逆向地檢索下一項。此外,reversed(numbers) 比numbers[::-1]更具可讀性(如果你以前從未見過這種特殊的切片用法,那麼它看起來會很奇怪)。

如果我們結合了reversed 和 zip函數的非複製特性,我們就可以重寫palindromic函數(來自上面的enumerate),而不需要佔用任何額外的內存(這裡不會複製列表):

一些值得學習的Python內置函數(1)

sum

sum函數接受一個帶有數字的迭代器,並返回這些數字的和。

一些值得學習的Python內置函數(1)

沒有比這更多的了。

Python有很多幫助函數可以為你執行循環,部分原因是它們與生成器表達式能很好地匹配:

一些值得學習的Python內置函數(1)

如果你對生成器表達式感興趣,我在我的“可理解的推導式”演講(以及我3小時的關於“推導式和生成器表達式“的教程)中討論了它們。

min 和 max

min和max函數實現了你所期望的功能:它們會為你返回一個迭代器中的最小和最大項。

一些值得學習的Python內置函數(1)

min和max函數使用<操作符來比較傳給它們的項。因此,所有的值都要是可排序的,並且彼此之間是可比較的(幸運的是,Python中的許多對象是可排序的)。

min和max函數還可以接受一個key函數,允許你自定義特定對象的“最小”和“最大值”的真正含義。

sorted

sorted函數接受任何可迭代的對象,並以排序後的順序返回該可迭代對象中所有值的一個新列表。

一些值得學習的Python內置函數(1)

與min和max類似,sorted函數使用<操作符來比較傳給它的項,因此,所有傳給它的值都需要是可排序的。

sorted函數還允許通過一個key函數來自定義排序過程(就像min和max)。

順便說一下,如果你對sorted和list.sort方法的比較感興趣的話,Florian Dahlitz寫了一篇文章來比較這兩種方法。

any 和 all

any和all函數可以與生成器表達式配對,以確定一個可迭代對象中的任意項和所有項是否與給定條件相匹配。

我們前面的palindromic函數會檢查所有項是否與它們的反轉序列中的對應項相等(第一個值是否等於最後一個值,第二個值是否等於倒數第二個值,等等)。

我們可以使用all函數像這樣來重寫palindromic函數:

"

在我教的每一節Python入門課上,經常都會被問道像“我們如何才能知道所有這些”這樣的問題。

通常還伴隨著這些問題:

  1. Python中有很多函數,記住這些函數的最好方法是什麼?
  2. 學習我們日常需要的函數,如enumerate 和 range,最好的方法是什麼?
  3. 你是如何知道Python中解決問題的所有方法的?你記下來了嗎?

有幾十個內置函數和類,數百個工具捆綁在Python的標準庫中,以及PyPI上的數千個第三方庫。任何人都不可能記住所有這些東西。

我建議你對你的知識進行分類:

  1. 我應該記住的東西,這樣我就能很好地理解它們
  2. 我應該知道的東西,這樣我以後才能更有效地查找它們
  3. 我根本不應該為之煩惱的東西,除非有一天我需要它們

將這個方法記在腦海中,我們來瀏覽Python文檔中的內置函數頁面。

這將是一篇很長的文章,所以在下一節中我將鏈接到5個子部分和20個特定的內置函數,所以如果你有時間或者正在尋找一個內置函數,你可以提前跳過去查看。

你應該瞭解哪些內置組件?

我估計大多數Python開發人員只需要大約30個內置函數,但是哪30個取決於你實際使用Python做什麼。

我們將以鳥瞰的方式來看看Python中的所有的69個內置函數。

我將嘗試把這些內置組件分成五類:

  1. 眾所周知: 大多數python初學者會因為需要而很快地接觸到這些內置組件
  2. 初學者所忽略的: 瞭解這些函數很有用,但是當你是Python新手時,就會很容易忽略它們
  3. 稍後再學習的: 瞭解這些內置組件通常很有用,但是當/如果你需要它們時,你就會找到它們
  4. 也許最終會學的: 這些東西遲早會派上用場,但只是在特定的情況下
  5. 你可能不需要這些: 除非你在做一些相當專業的事情,否則你不太可能會需要這些

類別1和類別2中的內置函數幾乎是所有Python程序員最終都應該學習的基本內置函數。類別3和類別4中的內置函數是專門的內置函數,它們通常非常有用,但是你對它們的需求會根據你對Python的使用情況而有所不同。類別5是神祕的內置函數,當你需要它們時,這可能非常方便,但是許多Python程序員可能永遠都不需要它們。

Python高手請注意: 我將把所有這些內置組件都稱為函數,儘管其中的27個實際上並不是函數(如我的函數和callables文章中所討論的)。

常見的內置函數(你可能已經很熟悉了):

  1. print
  2. len
  3. str
  4. int
  5. float
  6. list
  7. tuple
  8. dict
  9. set
  10. range

經常被新的Python編程者所忽略的內置函數:

  1. sum
  2. enumerate
  3. zip
  4. bool
  5. reversed
  6. sorted
  7. min
  8. max
  9. any
  10. all

還有5個通常被忽略的內置函數,我建議你自己去了解它們,因為它們使調試更容易: dir、vars、breakpoint、type和help。

除了上面的25個內置函數之外,我們還將在稍後的“以後學習並可能最終會學習的”和“你可能不需要這些”部分中簡要介紹其他的44個內置函數。

10個常見的內置函數

如果你一直在編寫Python代碼,那麼這些內置程序對你來說可能已經很熟悉了。

print

你已經知道了print函數。實現hello world需要用到print。

你可能不瞭解print所接受的各種關鍵字參數:

一些值得學習的Python內置函數(1)

你可以自己查看print函數。

len

在Python中,我們不寫像my_list.length()或my_string.length()這樣的函數; 相反,我們會奇怪地(至少對於新的python開發者來說)使用len(my_list)和len(my_string)。

一些值得學習的Python內置函數(1)

無論你是否喜歡這個類似於操作符的len函數,你都必須使用它,所以你需要習慣它。

str

與許多其他編程語言不同,你不能在Python中連接字符串和數字。

一些值得學習的Python內置函數(1)

Python拒絕將3個整數強制作為一個字符串,所以我們需要自己手動執行,使用內置的str函數(技術上來說是類,但正如我所說的,我將所有這些都稱為函數):

一些值得學習的Python內置函數(1)

int

你是否有用戶輸入並需要將其轉換為數字?那你就需要int函數!

int函數可以將字符串轉換為整數:

一些值得學習的Python內置函數(1)

你還可以使用int將浮點數截斷為整數:

一些值得學習的Python內置函數(1)

注意,如果你在進行除法運算時需要截斷,//操作符可能更合適(儘管它對負數的運行情況會不同):int(3 / 2) == 3 // 2。

float

你要轉換為數字的字符串實際上不是一個整數嗎?那麼你將使用float而不是int來進行轉換。

一些值得學習的Python內置函數(1)

你還可以使用float將整數轉換為浮點數。

在python2中,我們常常使用float將整數轉換為浮點數來強制進行浮點除法而不是整數除法。“整數除法”在Python 3中已經不存在了(除非你專門使用//運算符),因此我們不再需要float來實現這個目的。如果你一旦在Python3代碼中看到float(x) / y,你就可以把它改成x / y。

list

想要創建一個其他一些可迭代對象的列表嗎?

list函數就是做這些的:

一些值得學習的Python內置函數(1)

如果你知道你在處理一個列表,你可以使用copy方法來創建一個該列表的新副本:

一些值得學習的Python內置函數(1)

但是如果你不知道你正在處理的可迭代對象是什麼,list函數是循環一個可迭代對象並複製它的更通用的方法:

一些值得學習的Python內置函數(1)

你也可以使用一個列表推導式,但我不推薦這樣做。

注意,當你想要創建一個空列表時,建議使用列表字面量語法(那些[]括號):

一些值得學習的Python內置函數(1)

使用[]被認為更符合習慣,因為那些方括號([])實際上看起來像一個Python列表。

tuple

tuple函數與list函數非常相似,只是它會創建元組:

一些值得學習的Python內置函數(1)

如果你需要一個元組而不是列表,比如是因為你正在嘗試創建一個可在字典的鍵中使用的可哈希集合,那你可能會想要使用tuple而不是list。

dict

dict函數用於創建一個新字典。

與list和tuple類似,dict函數等價於在一個具有鍵值對的迭代器上進行循環,並從中生成一個字典。

給定一個兩項元組的列表:

一些值得學習的Python內置函數(1)

這個:

一些值得學習的Python內置函數(1)

可以用dict函數代替來生成:

一些值得學習的Python內置函數(1)

dict函數接受兩種類型的參數:

  1. 另一個字典(通用術語是映射),在這種情況下,該字典將被複制
  2. 一個由鍵值元組組成的列表(更準確地說,是由兩項迭代器組成的一個迭代器),在這種情況下,將從這些元素構造一個新字典

所以這也是可行的:

一些值得學習的Python內置函數(1)

dict函數還可以接受關鍵字參數來創建一個帶有基於字符串鍵的字典:

一些值得學習的Python內置函數(1)

但我更喜歡用字典字面量來代替:

一些值得學習的Python內置函數(1)

字典字面量語法更靈活,速度更快,但最重要的是,我發現它更清楚地傳達了我們正在創建一個字典的事實。

就像list和tuple一樣,一個空字典也應該使用字面量語法來創建:

一些值得學習的Python內置函數(1)

使用{}稍微提高了CPU效率,但更重要的是,它更符合人們的習慣: 使用大括號({})創建字典是很常見的,但是dict出現的頻率要低得多。

set

set函數生會成一個新的集合,它接受一個帶有可哈希值的迭代器(字符串、數字或其他不可變類型),並返回一個set:

一些值得學習的Python內置函數(1)

使用{}集合字面量語法(純 {} 會創建一個字典)無法生成空集合,因此set函數是生成空集的唯一方法:

一些值得學習的Python內置函數(1)

事實上,這是一個謊言,因為我們有這個:

一些值得學習的Python內置函數(1)

但是這種語法令人困惑(它依賴於*操作符的一個不太常用的特性),所以我不推薦使用它。

range

range函數給我們返回一個range對象,它表示一個數字範圍:

一些值得學習的Python內置函數(1)

得到的數字範圍包括開始數字,但不包括停止數字(range(0,10)不包括10)。

當你想對一些數字進行循環時,range函數很有用。

一些值得學習的Python內置函數(1)

一個常見的用例是執行一個操作n次(順便說一下,這是一個列表推導式):

一些值得學習的Python內置函數(1)

Python 2的range函數會返回一個列表,這意味著上面的表達式將生成非常非常大的列表。python3的range運行方式與python2的xrange類似(儘管它們有一點不同),因為當我們在這些range對象上循環時,數字是延遲計算的。

被新進的Python高手忽略的內置函數

如果你已經使用Python編程了一段時間,或者剛剛學習了Python類的介紹,那麼你可能已經瞭解了上面的內置函數。

現在,我想展示15個內置函數,這些函數非常便於瞭解,但是常常被新進的Python高手所忽略。

你將在Python代碼中發現前10個函數,但最後5個函數最常在調試時使用。

bool

bool函數會檢查一個Python對象的真實性。

對於數字,真實性是一個非零的問題:

一些值得學習的Python內置函數(1)

對於集合,真實性通常是一個非空的問題(集合的長度是否大於0):

一些值得學習的Python內置函數(1)

真實性(在文檔中稱為真值測試)在Python中非常重要。

代替詢問一些關於一個容器長度的問題,許多Python高手會問一些有關真實性的問題:

一些值得學習的Python內置函數(1)

你可能不會經常看到bool的使用,但是在需要將值強制轉換為布爾值以詢問其真實性的情況下,你會想要了解bool。

enumerate

每當你需要向上計數時,每次一個數字,同時循環遍歷一個迭代器, enumerate函數就會派上用場。

這似乎是一個非常小眾的任務,但它經常出現。

例如,我們可能想要跟蹤一個文件中的行號:

一些值得學習的Python內置函數(1)

enumerate函數也常常用來跟蹤序列中項目的索引。

一些值得學習的Python內置函數(1)

注意,你可能會看到較新的Python專家在Python中使用range(len(sequence))。如果你看到帶有range(len(…))的代碼,那你幾乎總是希望使用enumerate來代替。

一些值得學習的Python內置函數(1)

如果enumerate對你來說是一個新用法(或者如果你經常使用range(len(…)),請查看我關於在Python中使用索引進行循環的文章。

zip

zip函數甚至比enumerate函數更加專門化。

zip函數用於同時循環多個迭代器。

一些值得學習的Python內置函數(1)

如果你必須同時循環兩個列表(或任何其他迭代器),則首選zip而不是enumerate。當你在循環時需要索引時,enumerate函數非常方便,但是當我們特別關心同時循環兩個迭代器時,zip就非常棒了。

如果你是zip新手,我還將在我的“使用索引進行循環”文章中討論它。

enumerate 和 zip都會向我們返回迭代器。迭代器是用來增強for循環的延遲可迭代對象。我有一個關於迭代器的完整討論,以及一篇關於如何創建自己的迭代器的高級文章。

順便說一下,如果你需要對不同長度的迭代器使用zip,你可能需要在Python標準庫中查看 itertools.zip_longest。

reversed

reversed函數,像enumerate和zip一樣,也會返回一個迭代器。

一些值得學習的Python內置函數(1)

我們可以對這個迭代器做的唯一一件事就是對它進行循環(但只能循環一次):

一些值得學習的Python內置函數(1)

與enumerate和zip類似,reversed是一種循環輔助函數。你會更多的發現,reversed專門用於for循環的for部分中:

一些值得學習的Python內置函數(1)

除了reversed函數外,還有其他方法可以反轉Python列表:

一些值得學習的Python內置函數(1)

但是reversed函數通常是反轉Python中任何可迭代對象的最佳方法。

與列表的reverse方法(例如numbers.reverse())不同,reversed方法不會改變列表(相反,它返回一個反轉項的迭代器)。

與numbers[::-1]切片語法不同,reverse (numbers)不會構建一個全新的列表:它返回的延遲迭代器會在我們進行循環時逆向地檢索下一項。此外,reversed(numbers) 比numbers[::-1]更具可讀性(如果你以前從未見過這種特殊的切片用法,那麼它看起來會很奇怪)。

如果我們結合了reversed 和 zip函數的非複製特性,我們就可以重寫palindromic函數(來自上面的enumerate),而不需要佔用任何額外的內存(這裡不會複製列表):

一些值得學習的Python內置函數(1)

sum

sum函數接受一個帶有數字的迭代器,並返回這些數字的和。

一些值得學習的Python內置函數(1)

沒有比這更多的了。

Python有很多幫助函數可以為你執行循環,部分原因是它們與生成器表達式能很好地匹配:

一些值得學習的Python內置函數(1)

如果你對生成器表達式感興趣,我在我的“可理解的推導式”演講(以及我3小時的關於“推導式和生成器表達式“的教程)中討論了它們。

min 和 max

min和max函數實現了你所期望的功能:它們會為你返回一個迭代器中的最小和最大項。

一些值得學習的Python內置函數(1)

min和max函數使用<操作符來比較傳給它們的項。因此,所有的值都要是可排序的,並且彼此之間是可比較的(幸運的是,Python中的許多對象是可排序的)。

min和max函數還可以接受一個key函數,允許你自定義特定對象的“最小”和“最大值”的真正含義。

sorted

sorted函數接受任何可迭代的對象,並以排序後的順序返回該可迭代對象中所有值的一個新列表。

一些值得學習的Python內置函數(1)

與min和max類似,sorted函數使用<操作符來比較傳給它的項,因此,所有傳給它的值都需要是可排序的。

sorted函數還允許通過一個key函數來自定義排序過程(就像min和max)。

順便說一下,如果你對sorted和list.sort方法的比較感興趣的話,Florian Dahlitz寫了一篇文章來比較這兩種方法。

any 和 all

any和all函數可以與生成器表達式配對,以確定一個可迭代對象中的任意項和所有項是否與給定條件相匹配。

我們前面的palindromic函數會檢查所有項是否與它們的反轉序列中的對應項相等(第一個值是否等於最後一個值,第二個值是否等於倒數第二個值,等等)。

我們可以使用all函數像這樣來重寫palindromic函數:

一些值得學習的Python內置函數(1)

將all函數中的條件和返回值全部否定時,我們可以等價地使用any(儘管在這個例子中這有點令人困惑):

"

在我教的每一節Python入門課上,經常都會被問道像“我們如何才能知道所有這些”這樣的問題。

通常還伴隨著這些問題:

  1. Python中有很多函數,記住這些函數的最好方法是什麼?
  2. 學習我們日常需要的函數,如enumerate 和 range,最好的方法是什麼?
  3. 你是如何知道Python中解決問題的所有方法的?你記下來了嗎?

有幾十個內置函數和類,數百個工具捆綁在Python的標準庫中,以及PyPI上的數千個第三方庫。任何人都不可能記住所有這些東西。

我建議你對你的知識進行分類:

  1. 我應該記住的東西,這樣我就能很好地理解它們
  2. 我應該知道的東西,這樣我以後才能更有效地查找它們
  3. 我根本不應該為之煩惱的東西,除非有一天我需要它們

將這個方法記在腦海中,我們來瀏覽Python文檔中的內置函數頁面。

這將是一篇很長的文章,所以在下一節中我將鏈接到5個子部分和20個特定的內置函數,所以如果你有時間或者正在尋找一個內置函數,你可以提前跳過去查看。

你應該瞭解哪些內置組件?

我估計大多數Python開發人員只需要大約30個內置函數,但是哪30個取決於你實際使用Python做什麼。

我們將以鳥瞰的方式來看看Python中的所有的69個內置函數。

我將嘗試把這些內置組件分成五類:

  1. 眾所周知: 大多數python初學者會因為需要而很快地接觸到這些內置組件
  2. 初學者所忽略的: 瞭解這些函數很有用,但是當你是Python新手時,就會很容易忽略它們
  3. 稍後再學習的: 瞭解這些內置組件通常很有用,但是當/如果你需要它們時,你就會找到它們
  4. 也許最終會學的: 這些東西遲早會派上用場,但只是在特定的情況下
  5. 你可能不需要這些: 除非你在做一些相當專業的事情,否則你不太可能會需要這些

類別1和類別2中的內置函數幾乎是所有Python程序員最終都應該學習的基本內置函數。類別3和類別4中的內置函數是專門的內置函數,它們通常非常有用,但是你對它們的需求會根據你對Python的使用情況而有所不同。類別5是神祕的內置函數,當你需要它們時,這可能非常方便,但是許多Python程序員可能永遠都不需要它們。

Python高手請注意: 我將把所有這些內置組件都稱為函數,儘管其中的27個實際上並不是函數(如我的函數和callables文章中所討論的)。

常見的內置函數(你可能已經很熟悉了):

  1. print
  2. len
  3. str
  4. int
  5. float
  6. list
  7. tuple
  8. dict
  9. set
  10. range

經常被新的Python編程者所忽略的內置函數:

  1. sum
  2. enumerate
  3. zip
  4. bool
  5. reversed
  6. sorted
  7. min
  8. max
  9. any
  10. all

還有5個通常被忽略的內置函數,我建議你自己去了解它們,因為它們使調試更容易: dir、vars、breakpoint、type和help。

除了上面的25個內置函數之外,我們還將在稍後的“以後學習並可能最終會學習的”和“你可能不需要這些”部分中簡要介紹其他的44個內置函數。

10個常見的內置函數

如果你一直在編寫Python代碼,那麼這些內置程序對你來說可能已經很熟悉了。

print

你已經知道了print函數。實現hello world需要用到print。

你可能不瞭解print所接受的各種關鍵字參數:

一些值得學習的Python內置函數(1)

你可以自己查看print函數。

len

在Python中,我們不寫像my_list.length()或my_string.length()這樣的函數; 相反,我們會奇怪地(至少對於新的python開發者來說)使用len(my_list)和len(my_string)。

一些值得學習的Python內置函數(1)

無論你是否喜歡這個類似於操作符的len函數,你都必須使用它,所以你需要習慣它。

str

與許多其他編程語言不同,你不能在Python中連接字符串和數字。

一些值得學習的Python內置函數(1)

Python拒絕將3個整數強制作為一個字符串,所以我們需要自己手動執行,使用內置的str函數(技術上來說是類,但正如我所說的,我將所有這些都稱為函數):

一些值得學習的Python內置函數(1)

int

你是否有用戶輸入並需要將其轉換為數字?那你就需要int函數!

int函數可以將字符串轉換為整數:

一些值得學習的Python內置函數(1)

你還可以使用int將浮點數截斷為整數:

一些值得學習的Python內置函數(1)

注意,如果你在進行除法運算時需要截斷,//操作符可能更合適(儘管它對負數的運行情況會不同):int(3 / 2) == 3 // 2。

float

你要轉換為數字的字符串實際上不是一個整數嗎?那麼你將使用float而不是int來進行轉換。

一些值得學習的Python內置函數(1)

你還可以使用float將整數轉換為浮點數。

在python2中,我們常常使用float將整數轉換為浮點數來強制進行浮點除法而不是整數除法。“整數除法”在Python 3中已經不存在了(除非你專門使用//運算符),因此我們不再需要float來實現這個目的。如果你一旦在Python3代碼中看到float(x) / y,你就可以把它改成x / y。

list

想要創建一個其他一些可迭代對象的列表嗎?

list函數就是做這些的:

一些值得學習的Python內置函數(1)

如果你知道你在處理一個列表,你可以使用copy方法來創建一個該列表的新副本:

一些值得學習的Python內置函數(1)

但是如果你不知道你正在處理的可迭代對象是什麼,list函數是循環一個可迭代對象並複製它的更通用的方法:

一些值得學習的Python內置函數(1)

你也可以使用一個列表推導式,但我不推薦這樣做。

注意,當你想要創建一個空列表時,建議使用列表字面量語法(那些[]括號):

一些值得學習的Python內置函數(1)

使用[]被認為更符合習慣,因為那些方括號([])實際上看起來像一個Python列表。

tuple

tuple函數與list函數非常相似,只是它會創建元組:

一些值得學習的Python內置函數(1)

如果你需要一個元組而不是列表,比如是因為你正在嘗試創建一個可在字典的鍵中使用的可哈希集合,那你可能會想要使用tuple而不是list。

dict

dict函數用於創建一個新字典。

與list和tuple類似,dict函數等價於在一個具有鍵值對的迭代器上進行循環,並從中生成一個字典。

給定一個兩項元組的列表:

一些值得學習的Python內置函數(1)

這個:

一些值得學習的Python內置函數(1)

可以用dict函數代替來生成:

一些值得學習的Python內置函數(1)

dict函數接受兩種類型的參數:

  1. 另一個字典(通用術語是映射),在這種情況下,該字典將被複制
  2. 一個由鍵值元組組成的列表(更準確地說,是由兩項迭代器組成的一個迭代器),在這種情況下,將從這些元素構造一個新字典

所以這也是可行的:

一些值得學習的Python內置函數(1)

dict函數還可以接受關鍵字參數來創建一個帶有基於字符串鍵的字典:

一些值得學習的Python內置函數(1)

但我更喜歡用字典字面量來代替:

一些值得學習的Python內置函數(1)

字典字面量語法更靈活,速度更快,但最重要的是,我發現它更清楚地傳達了我們正在創建一個字典的事實。

就像list和tuple一樣,一個空字典也應該使用字面量語法來創建:

一些值得學習的Python內置函數(1)

使用{}稍微提高了CPU效率,但更重要的是,它更符合人們的習慣: 使用大括號({})創建字典是很常見的,但是dict出現的頻率要低得多。

set

set函數生會成一個新的集合,它接受一個帶有可哈希值的迭代器(字符串、數字或其他不可變類型),並返回一個set:

一些值得學習的Python內置函數(1)

使用{}集合字面量語法(純 {} 會創建一個字典)無法生成空集合,因此set函數是生成空集的唯一方法:

一些值得學習的Python內置函數(1)

事實上,這是一個謊言,因為我們有這個:

一些值得學習的Python內置函數(1)

但是這種語法令人困惑(它依賴於*操作符的一個不太常用的特性),所以我不推薦使用它。

range

range函數給我們返回一個range對象,它表示一個數字範圍:

一些值得學習的Python內置函數(1)

得到的數字範圍包括開始數字,但不包括停止數字(range(0,10)不包括10)。

當你想對一些數字進行循環時,range函數很有用。

一些值得學習的Python內置函數(1)

一個常見的用例是執行一個操作n次(順便說一下,這是一個列表推導式):

一些值得學習的Python內置函數(1)

Python 2的range函數會返回一個列表,這意味著上面的表達式將生成非常非常大的列表。python3的range運行方式與python2的xrange類似(儘管它們有一點不同),因為當我們在這些range對象上循環時,數字是延遲計算的。

被新進的Python高手忽略的內置函數

如果你已經使用Python編程了一段時間,或者剛剛學習了Python類的介紹,那麼你可能已經瞭解了上面的內置函數。

現在,我想展示15個內置函數,這些函數非常便於瞭解,但是常常被新進的Python高手所忽略。

你將在Python代碼中發現前10個函數,但最後5個函數最常在調試時使用。

bool

bool函數會檢查一個Python對象的真實性。

對於數字,真實性是一個非零的問題:

一些值得學習的Python內置函數(1)

對於集合,真實性通常是一個非空的問題(集合的長度是否大於0):

一些值得學習的Python內置函數(1)

真實性(在文檔中稱為真值測試)在Python中非常重要。

代替詢問一些關於一個容器長度的問題,許多Python高手會問一些有關真實性的問題:

一些值得學習的Python內置函數(1)

你可能不會經常看到bool的使用,但是在需要將值強制轉換為布爾值以詢問其真實性的情況下,你會想要了解bool。

enumerate

每當你需要向上計數時,每次一個數字,同時循環遍歷一個迭代器, enumerate函數就會派上用場。

這似乎是一個非常小眾的任務,但它經常出現。

例如,我們可能想要跟蹤一個文件中的行號:

一些值得學習的Python內置函數(1)

enumerate函數也常常用來跟蹤序列中項目的索引。

一些值得學習的Python內置函數(1)

注意,你可能會看到較新的Python專家在Python中使用range(len(sequence))。如果你看到帶有range(len(…))的代碼,那你幾乎總是希望使用enumerate來代替。

一些值得學習的Python內置函數(1)

如果enumerate對你來說是一個新用法(或者如果你經常使用range(len(…)),請查看我關於在Python中使用索引進行循環的文章。

zip

zip函數甚至比enumerate函數更加專門化。

zip函數用於同時循環多個迭代器。

一些值得學習的Python內置函數(1)

如果你必須同時循環兩個列表(或任何其他迭代器),則首選zip而不是enumerate。當你在循環時需要索引時,enumerate函數非常方便,但是當我們特別關心同時循環兩個迭代器時,zip就非常棒了。

如果你是zip新手,我還將在我的“使用索引進行循環”文章中討論它。

enumerate 和 zip都會向我們返回迭代器。迭代器是用來增強for循環的延遲可迭代對象。我有一個關於迭代器的完整討論,以及一篇關於如何創建自己的迭代器的高級文章。

順便說一下,如果你需要對不同長度的迭代器使用zip,你可能需要在Python標準庫中查看 itertools.zip_longest。

reversed

reversed函數,像enumerate和zip一樣,也會返回一個迭代器。

一些值得學習的Python內置函數(1)

我們可以對這個迭代器做的唯一一件事就是對它進行循環(但只能循環一次):

一些值得學習的Python內置函數(1)

與enumerate和zip類似,reversed是一種循環輔助函數。你會更多的發現,reversed專門用於for循環的for部分中:

一些值得學習的Python內置函數(1)

除了reversed函數外,還有其他方法可以反轉Python列表:

一些值得學習的Python內置函數(1)

但是reversed函數通常是反轉Python中任何可迭代對象的最佳方法。

與列表的reverse方法(例如numbers.reverse())不同,reversed方法不會改變列表(相反,它返回一個反轉項的迭代器)。

與numbers[::-1]切片語法不同,reverse (numbers)不會構建一個全新的列表:它返回的延遲迭代器會在我們進行循環時逆向地檢索下一項。此外,reversed(numbers) 比numbers[::-1]更具可讀性(如果你以前從未見過這種特殊的切片用法,那麼它看起來會很奇怪)。

如果我們結合了reversed 和 zip函數的非複製特性,我們就可以重寫palindromic函數(來自上面的enumerate),而不需要佔用任何額外的內存(這裡不會複製列表):

一些值得學習的Python內置函數(1)

sum

sum函數接受一個帶有數字的迭代器,並返回這些數字的和。

一些值得學習的Python內置函數(1)

沒有比這更多的了。

Python有很多幫助函數可以為你執行循環,部分原因是它們與生成器表達式能很好地匹配:

一些值得學習的Python內置函數(1)

如果你對生成器表達式感興趣,我在我的“可理解的推導式”演講(以及我3小時的關於“推導式和生成器表達式“的教程)中討論了它們。

min 和 max

min和max函數實現了你所期望的功能:它們會為你返回一個迭代器中的最小和最大項。

一些值得學習的Python內置函數(1)

min和max函數使用<操作符來比較傳給它們的項。因此,所有的值都要是可排序的,並且彼此之間是可比較的(幸運的是,Python中的許多對象是可排序的)。

min和max函數還可以接受一個key函數,允許你自定義特定對象的“最小”和“最大值”的真正含義。

sorted

sorted函數接受任何可迭代的對象,並以排序後的順序返回該可迭代對象中所有值的一個新列表。

一些值得學習的Python內置函數(1)

與min和max類似,sorted函數使用<操作符來比較傳給它的項,因此,所有傳給它的值都需要是可排序的。

sorted函數還允許通過一個key函數來自定義排序過程(就像min和max)。

順便說一下,如果你對sorted和list.sort方法的比較感興趣的話,Florian Dahlitz寫了一篇文章來比較這兩種方法。

any 和 all

any和all函數可以與生成器表達式配對,以確定一個可迭代對象中的任意項和所有項是否與給定條件相匹配。

我們前面的palindromic函數會檢查所有項是否與它們的反轉序列中的對應項相等(第一個值是否等於最後一個值,第二個值是否等於倒數第二個值,等等)。

我們可以使用all函數像這樣來重寫palindromic函數:

一些值得學習的Python內置函數(1)

將all函數中的條件和返回值全部否定時,我們可以等價地使用any(儘管在這個例子中這有點令人困惑):

一些值得學習的Python內置函數(1)

如果any和all函數對你來說是新的,那麼你可能想閱讀我關於它們的文章:《在Python中檢查所有項是否與一個條件相匹配》。


英文原文:https://treyhunner.com/2019/05/python-builtins-worth-learning/

譯者:測試

"

相關推薦

推薦中...