<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>

          千萬別說你會(huì)Python!如果不知道這10個(gè)Python包!

          共 8600字,需瀏覽 18分鐘

           ·

          2021-04-02 12:46


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

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

          為了幫助回答這個(gè)問題,下面列出了您應(yīng)該熟悉的十個(gè)最重要,最有用和最普遍使用的Python程序包,因?yàn)樵谀鷱氖赂鞣N項(xiàng)目時(shí),它們經(jīng)常會(huì)出現(xiàn)。

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

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

          1. Numpy

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

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

          >>> 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是一個(gè)有價(jià)值的Python軟件包,可用于執(zhí)行各種通用編程任務(wù),但如果您想進(jìn)行機(jī)器學(xué)習(xí),則NumPy尤為重要,因?yàn)樗鼮門ensorFlow之類的庫提供了部分基礎(chǔ)。

          2. Pendulum

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

          盡管datetime非常適合這些方面的基礎(chǔ)工作,但Pendulum Python軟件包使執(zhí)行涉及日期和時(shí)間的更復(fù)雜的編碼變得更加容易。使用起來更加直觀,并且可以自動(dòng)管理時(shí)區(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ù)幾個(gè)例外,Pendulum同樣可以工作,無需修改代碼,同時(shí)提供普通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()

          如果您要對(duì)圖像進(jìn)行更高級(jí)的處理(例如圖像識(shí)別,在這種情況下,OpenCV將是一個(gè)不錯(cuò)的選擇),Pillow不會(huì)自行裁切的。但是對(duì)于基本的圖像導(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也不能用作高級(jí)數(shù)據(jù)操作的工具。如果您正在編寫視頻編輯應(yīng)用程序,則可能還需要依靠OpenCV(它可以同時(shí)處理視頻和圖像)來提供MoviePy缺少的高級(jí)功能。但是對(duì)于涉及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請(qǐng)求的代碼可能很棘手,這在很大程度上要?dú)w因于HTTP并未以人類易于閱讀的方式精確地格式化數(shù)據(jù)。

          Requests Python程序包(座右銘:“ HTTP for Humans”)通過自動(dòng)執(zhí)行許多繁瑣的任務(wù)來解決此問題,讓發(fā)送HTTP請(qǐng)求變得異常簡(jiǎn)單。它消除了添加查詢字符串或執(zhí)行POST表單編碼的需要。它還可以使與HTTP服務(wù)器的連接自動(dòng)保持活動(dòng)狀態(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!')

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

          6. Tkinter

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

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

          from tkinter import *

          window = Tk()

          window.title("Welcome to LikeGeeks app")

          window.mainloop()

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

          7. PyQt

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

          Qt Designer Python

          8. Pandas

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

          Pandas有其局限性,因?yàn)樗贿m合用于高級(jí)統(tǒng)計(jì)建模(在這種情況下,您可能想學(xué)習(xí)R或使用statsmodels之類的Python包)。但是,如果您需要執(zhí)行諸如處理時(shí)間序列數(shù)據(jù)或?qū)?shù)據(jù)集進(jìn)行統(tǒng)計(jì)分析之類的工作,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

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

          如果您要構(gòu)建跨平臺(tái)的Python應(yīng)用程序,那么Pywin32并不能為您帶來很多好處,但是Windows開發(fā)人員可能會(huì)發(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

          如果您有一個(gè)復(fù)雜的Python開發(fā)項(xiàng)目,那么對(duì)新代碼執(zhí)行測(cè)試就至關(guān)重要。Pytest軟件包提供了各種模塊來幫助您完成此任務(wù)。無論是簡(jiǎn)單的單元測(cè)試還是更復(fù)雜的功能測(cè)試,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庫或框架未在前十個(gè)必備Python軟件包中列出此列表,請(qǐng)不要冒犯。Python生態(tài)系統(tǒng)已經(jīng)生成了許多有價(jià)值的軟件包,以至于即使在前100名列表中,也不可能包括所有重要軟件包,更不用說前10名列表了。但是,對(duì)于通用Python編程,上述軟件包基本是必備。

          我又來求贊了

          你動(dòng)動(dòng)手,就是對(duì)我最大的鼓勵(lì)。如果對(duì)你有幫助,請(qǐng)給我點(diǎn)贊,點(diǎn)在看!

          求點(diǎn)贊
          瀏覽 41
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <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>
                  日韩精品 A片视频 | 黄色电影在线视频 | 亚洲色婷婷影视 | 免费观看色情 | 尻屄视频网站 |