<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          Python基礎(chǔ)第十四講:千萬別說你會Python!如果不知道這10個Python包!

          共 8901字,需瀏覽 18分鐘

           ·

          2021-04-07 11:48





          世界上有超過200,000個Python程序包(這只是基于官方的Python程序包索引PyPI托管的程序包)。

          這就引出了一個問題:擁有這么多的軟件包,每個Python程序員都需要學(xué)習(xí)哪些軟件包是最重要的?

          為了幫助回答這個問題,下面列出了您應(yīng)該熟悉的十個最重要,最有用和最普遍使用的Python程序包,因為在您從事各種項目時,它們經(jīng)常會出現(xiàn)。

          此列表重點關(guān)注涵蓋多種編程場景和目標(biāo)的Python軟件包,而不是僅關(guān)注特定領(lǐng)域,例如數(shù)據(jù)科學(xué)或Web開發(fā)。這10個里面,你用過幾個?請在評論區(qū)留言。

          注:本文為英文翻譯,麥?zhǔn)逭聿⒀a(bǔ)充了代碼示例。原文地址:https://www.activestate.com/blog/top-10-must-have-python-packages/

          1. Numpy

          您可以執(zhí)行基本的數(shù)學(xué)運算,而無需任何特殊的Python包。但是,如果您要進(jìn)行任何復(fù)雜的數(shù)學(xué)運算,則NumPy軟件包將使您的編碼工作變得更加輕松。

          NumPy提供了一些工具來幫助構(gòu)建多維數(shù)組,并對存儲在其中的數(shù)據(jù)進(jìn)行計算。您可以求解代數(shù)公式,執(zhí)行常見的統(tǒng)計運算等等。

          >>> import numpy as np
          >>> a = np.arange(15).reshape(35)
          >>> a
          array([[ 0,  1,  2,  3,  4],
                 [ 5,  6,  7,  8,  9],
                 [1011121314]])
          >>> a.shape
          (35)
          >>> a.ndim
          2
          >>> a.dtype.name
          'int64'
          >>> a.itemsize
          8
          >>> a.size
          15
          >>> type(a)
          <class 'numpy.ndarray'>
          >>> b = np.array([678])
          >>> b
          array([678])
          >>> type(b)
          <class 'numpy.ndarray'>

          盡管NumPy是一個有價值的Python軟件包,可用于執(zhí)行各種通用編程任務(wù),但如果您想進(jìn)行機(jī)器學(xué)習(xí),則NumPy尤為重要,因為它為TensorFlow之類的庫提供了部分基礎(chǔ)。

          2. Pendulum

          如果您至少有一點Python編程經(jīng)驗,則可能知道可以使用datetime模塊來管理應(yīng)用程序中的日期和時間。

          盡管datetime非常適合這些方面的基礎(chǔ)工作,但Pendulum Python軟件包使執(zhí)行涉及日期和時間的更復(fù)雜的編碼變得更加容易。使用起來更加直觀,并且可以自動管理時區(qū)。

          import pendulum

          now = pendulum.now("Europe/Paris")

          # Changing timezone
          now.in_timezone("America/Toronto")

          # Default support for common datetime formats
          now.to_iso8601_string()

          # Shifting
          now.add(days=2)

          最棒的是,Pendulum旨在替代datetime。這意味著您可以將其與已經(jīng)基于datetime編寫的代碼一起使用。除了少數(shù)幾個例外,Pendulum同樣可以工作,無需修改代碼,同時提供普通datetime所沒有的其他功能。

          3. Python 圖片處理包

          如果您的Python應(yīng)用程序以任何方式與圖像進(jìn)行交互,則Python映像庫(也稱為PIL或Pillow)是Python必需的。它使編寫以各種格式打開,修改和保存圖像的代碼變得容易。

          from PIL import Image
          #Open image using Image module
          im = Image.open("images/cuba.jpg")
          #Show actual Image
          im.show()
          #Show rotated Image
          im = im.rotate(45)
          im.show()

          如果您要對圖像進(jìn)行更高級的處理(例如圖像識別,在這種情況下,OpenCV將是一個不錯的選擇),Pillow不會自行裁切的。但是對于基本的圖像導(dǎo)入,處理和導(dǎo)出,Pillow是您的首選解決方案。

          import cv2
          import numpy as np
          import matplotlib.pyplot as plt
           
          image = cv2.imread("C://gfg//tomatoes.jpg"1)
          # Loading the image
           
          half = cv2.resize(image, (00), fx = 0.1, fy = 0.1)
          bigger = cv2.resize(image, (10501610))
           
          stretch_near = cv2.resize(image, (780540), 
                         interpolation = cv2.INTER_NEAREST)
           
           
          Titles =["Original""Half""Bigger""Interpolation Nearest"]
          images =[image, half, bigger, stretch_near]
          count = 4
           
          for i in range(count):
              plt.subplot(22, i + 1)
              plt.title(Titles[i])
              plt.imshow(images[i])
           
          plt.show()

          4. MoviePy

          MoviePy代表視頻,Pillow代表圖像。它為與導(dǎo)入,修改和導(dǎo)出視頻文件相關(guān)的常見任務(wù)提供了一系列功能。它還可以讓您執(zhí)行一些操作,例如將標(biāo)題插入視頻或?qū)⒁曨l旋轉(zhuǎn)90度(如果出于某種原因您決定這樣做)。

          像Pillow一樣,MoviePy也不能用作高級數(shù)據(jù)操作的工具。如果您正在編寫視頻編輯應(yīng)用程序,則可能還需要依靠OpenCV(它可以同時處理視頻和圖像)來提供MoviePy缺少的高級功能。但是對于涉及Python代碼視頻的大多數(shù)標(biāo)準(zhǔn)任務(wù),MoviePy可以很好地完成工作。

          from skimage.filters import gaussian_filter
          from moviepy.editor import VideoFileClip

          def blur(image):
              """ Returns a blurred (radius=2 pixels) version of the image """
              return gaussian_filter(image.astype(float), sigma=2)

          clip = VideoFileClip("my_video.mp4")
          clip_blurred = clip.fl_image( blur )
          clip_blurred.write_videofile("blurred_video.mp4")

          5. requests

          編寫發(fā)送HTTP請求的代碼可能很棘手,這在很大程度上要歸因于HTTP并未以人類易于閱讀的方式精確地格式化數(shù)據(jù)。

          Requests Python程序包(座右銘:“ HTTP for Humans”)通過自動執(zhí)行許多繁瑣的任務(wù)來解決此問題,讓發(fā)送HTTP請求變得異常簡單。它消除了添加查詢字符串或執(zhí)行POST表單編碼的需要。它還可以使與HTTP服務(wù)器的連接自動保持活動狀態(tài),從而無需編寫大量代碼。

          import requests
          from requests.exceptions import HTTPError

          for url in ['https://api.github.com''https://api.github.com/invalid']:
              try:
                  response = requests.get(url)

                  # If the response was successful, no Exception will be raised
                  response.raise_for_status()
              except HTTPError as http_err:
                  print(f'HTTP error occurred: {http_err}')  # Python 3.6
              except Exception as err:
                  print(f'Other error occurred: {err}')  # Python 3.6
              else:
                  print('Success!')

          簡而言之,如果您的應(yīng)用程序通過HTTP發(fā)送任何數(shù)據(jù),則請求是必不可少的程序包。

          6. Tkinter

          是否要開發(fā)具有圖形用戶界面(GUI)的Python應(yīng)用程序?

          有很多做圖形界面的Python包(實際上,我們都可以來個Python GUI前十排行榜)。但是我認(rèn)為大多數(shù)Python開發(fā)人員都會同意Tkinter是用于創(chuàng)建GUI的最重要且也是最常用的框架。它將Python綁定到TK GUI工具箱,該工具箱幾乎可在所有現(xiàn)代操作系統(tǒng)上運行。

          from tkinter import *

          window = Tk()

          window.title("Welcome to LikeGeeks app")

          window.mainloop()

          除非您強(qiáng)烈希望使用其他GUI工具包,否則Tkinter可能是創(chuàng)建Python GUI的最佳起點。

          7. PyQt

          盡管前面大力推薦Tkinter,PyQT(另一個用于構(gòu)建GUI的Python軟件包)也是一個有力的競爭者。它提供了到Qt工具箱的綁定(您猜對了),該工具箱也是跨平臺的。它比Tkinter用于重型GUI編程。這意味著如果您要構(gòu)建具有非常簡單的界面的應(yīng)用程序(例如,只有帶有一些按鈕和文本字段的窗口),使用Tkinter就對了。但如果要構(gòu)建一個很復(fù)雜的桌面程序,比如開發(fā)一個QQ程序,則PyQT會更適合。

          Qt Designer Python

          8. Pandas

          有大量的Python軟件包設(shè)計用于處理復(fù)雜的數(shù)據(jù)集。但是可以說,Pandas是最重要的。Pandas可以幫助您處理和分析大量數(shù)據(jù),而無需學(xué)習(xí)專門的數(shù)據(jù)處理語言(例如R)。

          Pandas有其局限性,因為它不適合用于高級統(tǒng)計建模(在這種情況下,您可能想學(xué)習(xí)R或使用statsmodels之類的Python包)。但是,如果您需要執(zhí)行諸如處理時間序列數(shù)據(jù)或?qū)?shù)據(jù)集進(jìn)行統(tǒng)計分析之類的工作,Pandas可以為您服務(wù)。

          In [5]: dates = pd.date_range("20130101", periods=6)

          In [6]: dates
          Out[6]: 
          DatetimeIndex(['2013-01-01''2013-01-02''2013-01-03''2013-01-04',
                         '2013-01-05''2013-01-06'],
                        dtype='datetime64[ns]', freq='D')

          In [7]: df = pd.DataFrame(np.random.randn(64), index=dates, columns=list("ABCD"))

          In [8]: df
          Out[8]: 
                             A         B         C         D
          2013-01-01  0.469112 -0.282863 -1.509059 -1.135632
          2013-01-02  1.212112 -0.173215  0.119209 -1.044236
          2013-01-03 -0.861849 -2.104569 -0.494929  1.071804
          2013-01-04  0.721555 -0.706771 -1.039575  0.271860
          2013-01-05 -0.424972  0.567020  0.276232 -1.087401
          2013-01-06 -0.673690  0.113648 -1.478427  0.524988

          9. Pywin32

          特別是對于Windows Python編程,Pywin32是必備軟件包。它提供對許多本機(jī)Windows API函數(shù)的訪問,使您可以執(zhí)行諸如與Windows注冊表進(jìn)行交互,使用Windows剪貼板等操作。

          如果您要構(gòu)建跨平臺的Python應(yīng)用程序,那么Pywin32并不能為您帶來很多好處,但是Windows開發(fā)人員可能會發(fā)現(xiàn)他們非常喜歡它,以至于使用它代替了本機(jī)Windows工具。

          import win32com.client as win32
          excel = win32.gencache.EnsureDispatch('Excel.Application')

          excel.Visible = True
          _ = input("Press ENTER to quit:")

          excel.Application.Quit()

          10. Pytest

          如果您有一個復(fù)雜的Python開發(fā)項目,那么對新代碼執(zhí)行測試就至關(guān)重要。Pytest軟件包提供了各種模塊來幫助您完成此任務(wù)。無論是簡單的單元測試還是更復(fù)雜的功能測試,Pytest都可以幫助您編寫它。

          # test_capitalize.py

          import pytest

          def test_capital_case():
              assert capital_case('semaphore') == 'Semaphore'

          def test_raises_exception_on_non_string_arguments():
              with pytest.raises(TypeError):
                  capital_case(9)

          如果您最喜歡的Python庫或框架未在前十個必備Python軟件包中列出此列表,請不要冒犯。Python生態(tài)系統(tǒng)已經(jīng)生成了許多有價值的軟件包,以至于即使在前100名列表中,也不可能包括所有重要軟件包,更不用說前10名列表了。但是,對于通用Python編程,上述軟件包基本是必備。

          零基礎(chǔ)學(xué) Python,看下嘛
          送109元的零基礎(chǔ)視頻課

           只需7天時間,跨進(jìn)Python編程大門,已有3800+加入
          【基礎(chǔ)】0基礎(chǔ)入門python,24小時有人快速解答問題;
          【提高】40多個項目實戰(zhàn),老手可以從真實場景中學(xué)習(xí)python;
          【直播】不定期直播項目案例講解,手把手教你如何分析項目;
          【分享】優(yōu)質(zhì)python學(xué)習(xí)資料分享,讓你在最短時間獲得有價值的學(xué)習(xí)資源;圈友優(yōu)質(zhì)資料或?qū)W習(xí)分享,會不時給予贊賞支持,希望每個優(yōu)質(zhì)圈友既能賺回加入費用,也能快速成長,并享受分享與幫助他人的樂趣。
          【人脈】收獲一群志同道合的朋友,并且都是python從業(yè)者
          【價格】本著布道思想,只需 69元 加入一個能保證學(xué)習(xí)效果的良心圈子。
          【贈予】價值109元 0基礎(chǔ)入門在線課程,免費送給圈友們,供鞏固
          瀏覽 60
          點贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  五月激情视频 | 九九成人电影www | 国产伦子伦免费 | 看大黄美女全裸大黄 | 淫淫色综合 |