三分鐘從入門到精通——Python模塊

2021-01-11 程序媛柚柚

#Python入門教程#

什麼是python中的模塊:

假設您正在使用python解釋器。您花了30分鐘來定義一個函數,然後使用它並退出解釋器。但是突然間,您記住仍然需要再次使用該功能。您再次輸入它,但該功能的定義已消失。哎呀,好痛。

現在,您再次需要花費30分鐘來鍵入相同的功能。因此,python有一種方法可以將該函數定義放入文件中並隨時使用。

模塊是ModuleType類型的對象。該模塊基本上是一個python文件(擴展名為的文件.py),其中包含定義和語句(例如:類,函數,變量等)。Python中的模塊為我們提供了邏輯上組織代碼的靈活性。我們使用模塊將大型程序分解為小的可管理文件。我們可以在模塊中定義函數或類,然後使用來在其他模塊中重用它們

import。Python本身帶有很多模塊,例如數學,迭代工具,集合等。

示例:讓我們創建一個模塊。在文件中鍵入以下函數,並將其另存為utils.py。

### utils.py def multiplication(a: int, b: int)-> int:"""This function will return the multiplication of two integers""" return a * b

因此,我們在名為utils的模塊中定義了一個名為乘法的函數。

如何導入模塊:

我們可以使用關鍵字將模塊內的定義導入另一個模塊import。

Python提供了兩種導入模塊的方法,如下所示:

import module_namefrom module_name import name1, name2...示例:讓我們將utils模塊導入另一個名為 operations.py

### operations.pyimport utilsresult = utils.multiplication(2, 4)print(result)>>> 8

當我們在操作模塊中導入utils時,它不會直接將utils模塊內部定義的對象加載到Operations模塊中。相反,它將僅在當前模塊名稱空間中加載模塊名稱(utils)。要使用utils定義的函數或類,我們必須使用上面示例()中所示的表示法。如果您嘗試直接使用乘法,則python會拋出如下所示的異常:

dot (.)

utils.multiplication(2, 4)

>>> import utils>>> multiplication(2,3)Traceback (most recent call last):File "<stdin>", line 1, in <module>NameError: name 'multiplication' is not defined

如果要將特定功能或定義從模塊導入其他模塊,則必須使用

from module_name import name。

### operations.pyfrom utils import multiplicationresult = multiplication(2, 4)print(result)>>>8

如果大家在學習中遇到困難,想找一個python學習交流環境,可以加入我們的python裙,關注小編,並私信「01」即可進裙,領取python學習資料,會節約很多時間,減少很多遇到的難題。

注意:Python還允許我們使用as關鍵字為導入別名,如下所示:

import modulename as somenamefrom modulename import name as somename例:

### operations.py# import utils as ufrom utils import multiplication as mul# result = u.multiplication (2,4)result = mul(2, 4)print(result)>>>8

注意:我們可以使用import *或from .. import *導入特定模塊中的所有對象。

例:

### operations.pyfrom utils import *result = multiplication(2, 4)print(result)>>>8

注意:我們可以使用該dir()函數找出模塊內定義的對象。

>>> import utils>>>dir(utils)['__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', 'multiplication']

在這裡,我們可以看到名稱列表(以及乘法)。所有以下劃線開頭的名稱都是與模塊關聯的默認Python屬性。例如,

__name__存儲模塊的名稱並__file__存儲其所在模塊的路徑。

>>>import utils>>>utils.__name__ # name of the module'utils'>>>utils.__file__ # module path'C:\\Users\\user\\Desktop\\python_practice\\utils.py'

python如何導入模塊:

Python使用了一個相對複雜的系統來查找和加載模塊。該

sys

模塊具有一些屬性,這些屬性定義Python將在哪裡尋找模塊。

Python在哪裡尋找進口?

>>> import sys>>> sys.path['', 'C:\\Users\\user\\Anaconda3\\python37.zip', 'C:\\Users\\user\\Anaconda3\\DLLs', 'C:\\Users\\user\\Anaconda3\\lib', 'C:\\Users\\user\\Anaconda3', 'C:\\Users\\user\\AppData\\Roaming\\Python\\Python37\\site-packages', 'C:\\Users\\user\\Anaconda3\\lib\\site-packages', 'C:\\Users\\user\\Anaconda3\\lib\\site-packages\\win32', 'C:\\Users\\user\\Anaconda3\\lib\\site-packages\\win32\\lib', 'C:\\Users\\user\\Anaconda3\\lib\\site-packages\\Pythonwin']

因此,當我們導入模塊時,python會查看

sys.path

列表。如果在這些路徑之一中未找到該模塊,則它將引發一個

ModuleNotFoundError

有多種方法可以確保在運行Python時目錄始終位於Python sys.path列表中,包括:

sys.path.append('module/package directory')導入前使用。將目錄放入PYTHONPATH環境變量的內容中。使模塊可安裝並安裝。概括地說,這就是Python導入模塊的方式:

導入搜索期間檢查的第一個地方是sys.modules。它檢查sys.modules緩存以查看模塊是否已經導入-如果是,則僅在其中使用引用,否則:它創建一個新的模塊對象(types.ModuleType)它從文件加載原始碼它將添加一個條目sys.modules,名稱為鍵,新創建的對象引用為值。它編譯並執行原始碼。注意:導入模塊時,將執行模塊代碼。

導入模塊時會發生什麼

導入模塊名如果整個模塊(模塊名)尚不存在,則將其加載到內存中sys.modules使用module_name的鍵添加對它的引用在我們當前的名稱空間中添加一個引用了module_name對象的相同名稱的符號從module_name導入somename如果整個模塊(module_name)還不存在,則將其加載到內存中sys.modules使用module_name的鍵添加對它的引用將符號somename添加到引用module_name.somename函數的當前名稱空間中它不會將符號module_name添加到我們當前的名稱空間中導入module_name作為randomename如果整個模塊(module_name)還不存在,則將其加載到內存中sys.modules使用module_name的鍵添加對它的引用將符號randomename添加到引用module_name對象的當前名稱空間中從module_name導入somename作為randomname如果整個模塊(module_name)尚不存在,則將其加載到內存中sys.modules使用module_name的鍵添加對它的引用將符號randomname添加到引用module_name.somename函數的當前名稱空間中它不會將符號module_name添加到我們當前的名稱空間中從module_name導入*如果整個模塊(module_name)尚不存在,則將其加載到內存中sys.modules使用module_name的鍵添加對它的引用將module_name模塊中所有導出符號的符號直接添加到我們的名稱空間(我們可以使用來控制導入的內容__all__)它不會將符號module_name添加到我們當前的名稱空間中最後多說一句,小編是一名python開發工程師,這裡有我自己整理的整套python學習資料和路線,想要這些資料的都可以關注小編,並私信「01」領取。

相關焦點

  • Python入門小迷宮,走完這個迷宮,就能掌握python編程基礎
    其實,這是一個用python做的迷宮小遊戲,非常簡單,但對於python初學者來說,還是有一定的挑戰性,但TONOW有源碼和教程,只要跟著python迷宮小遊戲的教程和相應的源碼,不僅很容易就能自己開發出這個遊戲,還能在這個過程中,掌握python編程的基礎哦!
  • Python爬蟲從入門到精通只需要三個月
    如何入門Python,為了能夠幫助大家更輕鬆的學好Python開發,Python爬數據,Python數據分析等相關理論知識,給大家共同分享自己一套Python學習生活資料,文章最後面的有附屬的相關資料,無論你是大牛還是小白,是想轉行還是想入行都可以來了解,一起不斷進步以及一起努力學習
  • 《小灰教你零基礎學python》-Python入門語言
    程式語言有很多,咱們就學簡單強大的python即可。三、python程式語言介紹Python是荷蘭人吉多·范羅蘇姆(Guido van Rossum)在1989年聖誕節期間開發的一門解釋性的腳本語言,什麼是解釋性的語言,大家可以參照百度百科(
  • Python趣味打怪:147段簡單代碼完成從入門到大師
    不要害怕學習的過程枯燥無味,這裡有程式設計師jackzhenguo打造的一份中文Python「糖果包」:147個代碼小樣,60秒一口,營養又好玩,從Python基礎到機器學習盡皆囊括。入門簡單如十進位轉二進位,盡顯Python簡潔之美:In [1]: bin(10)Out[1]: '0b1010'冬天到了,就算沒有點亮手繪技能,也能用簡單幾行代碼繪出漫天雪花:例子是有趣的例子,教程也是正經教程,學習路徑清晰、系統,先一起來看看完整目錄:
  • Python模塊NumPy,Pandas,matplotlib的中文文檔
    今天比較忙所以不能寫長文了作為一名數據工程師需要熟練掌握python中的這些numpy,matplotlib,pandas,sklearn,seaborn,statsmodel.模塊但是由於這些模塊的文檔都是英文的可能一些英文不好的同學學起來會比較的困難,所以我從網上給大家找到一些中文的文檔
  • 中科大統計學python_python 中科大 - CSDN
    3、【數據分析】SQL資料庫入門到精通,最乾淨易懂的小白必備教程10小時完整版https://www.bilibili.com/video/av77541375課程介紹:英文課程,中文字幕,很多同學表示這是看過最好的課程
  • Python基礎教程(一) - 快速入門
    從今天開始學習python,會將學習到的相關知識整理到這裡。今後的所有內容都基於Ubuntu系統中進行的,和其他語言一樣,讓我們先來"Hello World!"吧。Hello world!#!/usr/bin/python為Linux系統下Python解釋器的路徑,通常python解釋器的路徑安裝在/usr/local/bin或/usr/bin目錄下。
  • python sys模塊的常見用法匯總
    python的內置模塊sys,提供了系統相關的一些變量和函數,在實際開發中,常見的有以下幾種用法1.版本有限制的代碼,可以通過以上方法來判斷python版本是否符合要求。6. sys.path該變量存儲了python尋找模塊的路徑
  • Python的武器庫05:numpy模塊(下)
    說到程式語言python,有一個著名的格言"餘生太短,只用python"。如果要分析為什麼會存在這麼一句格言?python的語法並不簡單,有複雜難懂的部分,之所以有這樣一句格言,是因為python中有很多強大的模塊,就像一個武器庫。
  • Python內置模塊math介紹
    # 導入模塊import math#dir(module):可以通過它查看任何模塊中所包含的工具
  • Python神器:找不到模塊怎麼辦?pip安裝器一鍵全搞定
    一個錯誤從上圖中可以看到運行編寫的python程序時,出現了ModuleNotFoundError的提示,意思python解釋器找不到名為pandas的模塊/庫 !pip安裝pandas模塊使用pip list檢測python解釋器中是否成功安裝了pandas庫:
  • Python的武器庫04:numpy模塊(上)
    說到程式語言python,有一個著名的格言"餘生太短,只用python"。如果要分析為什麼會存在這麼一句格言?python的語法並不簡單,有複雜難懂的部分,之所以又這樣一句格言,是因為python中有很多強大的模塊,就像一個武器庫。Python正式由於這些模塊的出現,只要引入這個模塊,調用這個模塊的集成函數,問題迎刃而解;不需要從頭開始,節省了大量的時間。
  • 質粒構建:從入門到精通之高手進階
    輕鬆科研 | 趣讀文獻 | 前沿資訊 | 實用技巧在前兩期《質粒構建:從入門到精通之初窺門徑
  • Python入門基礎之socket多線程編程,TCP伺服器和客戶端通信
    在上一篇文章中,我介紹了一下python3 socket編程的基礎,包括TCP、UDP客戶端和伺服器的建立過程(連結在最下方)。不過那個只是單線程的,伺服器一次只能和一個客戶端會話,多個客戶端的話只能等待。
  • 三分鐘入門大數據之大數據相關職業體系是什麼?
    很多年輕的學子,或是其他行業的有志青年,都想要投身到這個行業中來。然而一方面受到「網際網路寒冬」的影響,最近頻頻傳出各家知名網際網路公司裁員縮編的消息;另一方面,大量的人才湧入,又使得網際網路產業在職場上呈現出供過於求的特徵,並最終導致了職場上的激烈競爭。那麼網際網路行業未來的潛力在哪裡?我們又應該在哪個方向上發力,才能保證自己可以獲得一份高薪而穩定的工作?
  • Python開發簡單爬蟲【學習資料總結】
    ;另一方面,會將新的URL補充進URL管理器,若有URL管理器中含有新的URL,則重複上述步驟,直到爬取完所有的URL 6、最後,調度器會調動應用的方法,將價值數據輸出到需要的格式。
  • 成都Python培訓周期多久
    常用標準庫模塊 函數 異常處理 MySQL使用 協程 ...在千鋒教育python培訓班學習,遇到問題可以及時得到解決。千鋒Python課堂有老師和同學幫忙解答,不用到網上去搜索尋找答案。雄厚的師資力量為你保駕護航,專業的培訓課程讓您學到更多的知識,真正的企業項目實踐,實現您的工程師夢想。業內大牛親自執教,讓你真正了解到什麼是名師出高徒,千鋒教育python培訓學校的就業率能達到95%以上,工資水平也很不錯。如果你覺得自己的專業優勢不明顯,在千鋒python培訓機構的幫助下,達到更好的成果。
  • Python趣味打怪:60秒學會一個例子,147段代碼助你從入門到大師
    不要害怕學習的過程枯燥無味,這裡有程式設計師jackzhenguo打造的一份中文Python「糖果包」:147個代碼小樣,60秒一口,營養又好玩,從Python基礎到機器學習盡皆囊括。入門簡單如十進位轉二進位,盡顯Python簡潔之美:In [1]: bin(10)Out[1]: '0b1010'冬天到了,就算沒有點亮手繪技能,也能用簡單幾行代碼繪出漫天雪花:
  • python基礎系列|示例講解時間模塊datetime
    Python 有很多種方式處理日期和時間,常見的時間處理的模塊是datetime、time、calendar。能融匯貫通的了解和使用這三個模塊,才能輕而易舉地用python處理時間。本文以此為目的,通過講述各個時間模塊的概述、函數及相關知識細節、以及相應的示例來講透它們的使用方式。
  • 成都學習Python開發哪家好
    常用標準庫模塊 函數 異常處理 MySQL使用 協程 ...雄厚的師資力量為你保駕護航,專業的培訓課程讓您學到更多的知識,真正的企業項目實踐,實現您的工程師夢想。業內大牛親自執教,讓你真正了解到什麼是名師出高徒,千鋒教育python培訓學校的就業率能達到95%以上,工資水平也很不錯。如果你覺得自己的專業優勢不明顯,在千鋒python培訓機構的幫助下,達到更好的成果。