Python(27)-模塊

模塊、包

  • 1.模塊導入的方式
  • 2.使用as給模塊取一個別名(大駝峰命名法)
  • 3.從模塊中導入部分工具
  • 4.從模塊中導入全部工具
  • 5.模塊搜索順序
  • 6__name__
  • 7.包
  • 8.發布模塊、安裝模塊、卸載包
  • 9.pip安裝第三方模塊

本系列博文來自學習《Python基礎視頻教程》筆記整理,視屏教程連接地址:http://yun.itheima.com/course/273.html

模塊:每個以.py 結尾的源代碼文件就是一個模塊。模塊名也是一個標識符,所以需要滿足標識符的命名規則。在模塊中定義的全局變量、函數、類,都是提供給外界直接使用的工具。模塊就好比工具包想要使用這個工具包,就需要先導入這個工具包。

模塊是最高級別的程序組織單元。模塊被導入后,在該模塊文件定義的所有變量名都會以被導入模塊對象成員的形式被調用。也就是說,模塊文件的全局作用域變成了模塊對象的局部作用域。即模塊能夠劃分系統的命名空間,避免了不同文件變量重名的問題。

1.模塊導入的方式

方式1

import 模塊1,模塊2

方式2(官方推薦使用)

import 模塊1
import 模塊2

導入之后使用 模塊名.方法 的方式調用模塊內的工具

2.使用as給模塊取一個別名(大駝峰命名法)

import 模塊名 as 模塊別名
import numpy as np

3.從模塊中導入部分工具

from 模塊名 import 工具名

直接使用工具名調用工具,不需要加**模塊名.**來調用工具

注意事項:兩個不同的模塊中,導入相同名字的函數,后面導入的函數會覆蓋掉前面導入的函數。

可以通過給同名函數中的一個起別名的方式來解決這個問題

#from cyy_01_測試模塊1 import say_hello
from cyy_02_測試模塊2 import say_hello as module2_say_hello
from cyy_01_測試模塊1 import say_hello
say_hello()
module2_say_hello()

輸出

我是模塊1
我是模塊2

將帶入代碼全部寫在文件的頂部,一旦發現沖突能夠及時處理

4.從模塊中導入全部工具

from 模塊名 Import *

便利:不需要模塊名就能夠調用工具
缺點:函數重名現象沒有任何提示,出現問題不好排查
72-76

5.模塊搜索順序

模塊的搜索順序:在當前目錄 搜索 指定模塊名的文件,如果有就直接導入;如果沒有就再搜索系統目錄。
注意: 給一個文件命名時,不要和 系統模塊的文件名 重名,這樣可能會導致程序無法執行

6__name__

每一個文件都應該是可以被導入的,當導入文件時,文件中所有沒有任何縮進的代碼都會被執行一遍。
模塊可以提供全局變量、函數,類。但是,直接執行的代碼不可以向外界提供的工具。
當文件被導入時,會直接執行的代碼實際上不需要執行,這時需要使用__name__這個屬性。\

__name__屬性在本文件執行時,是__mian__的值,但是文件作為模塊執行時,對應的值是模塊名稱。所以可以應用這個特性來編寫文件對的測試代碼,在設計模塊代碼時,可以采用下面的結構測試代碼。

#導入模塊
#定義全局變量
#定義類
#定義函數#編寫測試代碼
def main():#....pass
if __name__=="__main__"main()

80

7.包

包:是一個包含多個模塊(一個文件就是一個模塊)的特殊目錄,這個特殊的目錄 有一個 特殊的文件 :__init__.py
包命名 和 變量的命名方式一樣,用小寫字母+_來命名

優點:使用 import 包名,可以一次性導入 包 中的所有模塊

新建一個包有兩個步驟:
step1:新建一個文件夾,在文件夾中編寫 需要給外界提供的.py文件和__init__.py文件

step2:在__init__.py中填寫內容

具體操作如下:
step1 : 新建一個包,兩種方法:
1.1新建一個Directory,在該目錄下再新建一個__init__.py文件

在這里插入圖片描述
1.2.直接新建 Python Package,輸入包的名字后,在新建的目錄下會自動包含一個空白的__init__.py文件

在這里插入圖片描述
step2 : 新建好包目錄,在該目錄下編輯各種模塊,在__init__.py文件中 指定對外界提供的模塊列表

from . import send_massage
from . import receive_massage
.表示從當前目錄下導入摸一個模塊

綜上:當多個模塊有關聯時,就可以整合成一個包

8.發布模塊、安裝模塊、卸載包

如果希望自己開發的文件,分享給其他人,可以制作壓縮包分享給其他人。
step1: 制作壓縮包,setup.py文件

from distutils.core import setup
setup(name=“cyy_massage”,
version=“1.0”,
description=“itheima’s 發送和接受消息”,
long_description=“完整的發送和接收消息的模塊”,
author=“itheima”,
author_email=“xxxxxxx@163.com”,
url=“www.xxx.com”,)

setup.py文件格式固定,不能在pycharm 中執行,只能在終端中執行。并且希望在什么環境下運行,就使用相應版本的python解釋器。

step2: 構建,模塊

python3 setup.py build

step3: 生成發布壓縮包

python3 setup.py sdist
生成一個.tar.gz 的文件,可以分享給別人

其他人如果拿到了這個.tar.gz這個文件夾之后,可以安裝這個模塊:先解壓縮這個文件,使用usdo 執行setup.py 安裝文件

tar zxvf cyy_massage-1.0.tar.gz

PKG-INFO文件中保存著包的基本信息,可以通過下面命令查看基本信息

cat PKG-INFO

sudo python setup.py install

卸載模塊:直接從安裝目錄底下刪除就可以了
導入模塊->模塊名.__file__查看模塊的完整路徑切換到對應的文件下刪掉那個文件就可以了

rm -r XXX

9.pip安裝第三方模塊

第三方模塊:知名團隊 開發出來,并且 被廣大程序員 廣泛使用 的Python包/模塊。

pygame:一套非常成熟的游戲開發模塊

pip是一個現代的的、通用的python包管理工具。提供了Python包的下載、安裝、查找、卸載等功能。

安裝命令:

sudo pip install 模塊名

卸載命令;

sudo pip uninstall 模塊名

將模塊安裝到Python 3.x 下要使用pip3

sudo pip3 install 模塊名

sudo pip3 uninstall 模塊名

python 下安裝ipython

sudo apt install ipython

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/445129.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/445129.shtml
英文地址,請注明出處:http://en.pswp.cn/news/445129.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Wow6432Node

64 位版本 Windows 中的注冊表分為 32 位注冊表項和 64 位注冊表項。許多 32 位注冊表項與其相應的 64 位注冊表項同名,反之亦然。 64 位版本 Windows 包含的默認 64 位版本注冊表編輯器 (Regedit.exe) 可顯示 64 位和 32 位的 注冊表項。WOW64 注冊表重定向器為 32 位程序提供…

如何使用docker配置深度學習開發環境

文章目錄1.底層驅動的安裝1.1 操作系統的安裝1.2 顯卡驅動的安裝1.3 cuda的安裝2.使用docker配置深度學習開發環境2.1 docker的安裝2.2 nvidia_docker的安裝2.3 安裝過程中的問題2.3.1 docker和nvidia_docker的版本不匹配的問題。2.3.2 解決每次運行docker命令的時候要加sudo.2…

反射全解

反射的概念 反射的引入: Object obj new Student(); 若程序運行時接收到外部傳入的一個對象,該對象的編譯類型是Object,但程序又需要調用該對象運行類型的方法: 1.若編譯和運行類型都知道,使用 instanceof判斷后&…

MachineLearning(4)-核函數與再生核希爾伯特空間

核函數與再生核希爾伯特空間1.支持向量積-核函數2.一個函數為核函數的條件3.核函數與希爾伯特空間3.1希爾伯特空間-Hilbert空間1.支持向量積-核函數 核(kernel)的概念由Aizenman et al.于1964年引入模式識別領域,原文介紹的是勢函數的方法。在那之后,核…

CRegKey 注冊表操作

1.簡介 CRegKey提供了對系統注冊表的操作方法,通過CRegKey類,可以方便的打開注冊表的某個分支或子鍵(CRegKey::Open),可以方便的修改一個鍵的鍵值(CRegKey::SetValue),也可以查詢某…

進程基礎

進程的基本概念 程序順序執行的特征: 1)順序性:處理機嚴格按照程序所規定的順序執行,每一步操作必須在下一步操作開始前執行 2)封閉性:程序在封閉的環境下運行,程序獨占資源,資源的狀…

用Docker容器自帶的tensorflow serving部署模型對外服務

相信很多人和我一樣,在試圖安裝tensorflow serving的時候,翻遍了網上的博客和官網文檔,安裝都是以失敗而告終,我也是一樣,這個問題折磨了我兩個星期之久,都快放棄了。幸運的是在同事的建議下,我…

C資源

云風最近寫了一篇博客《C語言的前世今生》。作為長期使用C語言開發網絡游戲服務器的程序員,云風是有理由寫這樣一篇文字,不過還是感覺談的不夠深入,C語言在業界使用的現狀沒有怎么描寫,有些意猶未盡。在這里想比較系統的談談個人對…

學點數學(2)-特征函數

特征函數1.數列特征方程2.矩陣特征方程3.微分方程特征方程4.積分方程特征方程特征方程是為研究相應的數學對象而引入的一些等式,這些等式描述了特定對象的特性。依據研究的對象不同,特征方程包括數列特征方程、矩陣特征方程、微分方程特征方程、積分方程…

GCC如何產生core dump

先決條件1.安裝apport(automatically generate crash reports for debugging)2.修改/etc/security/limits.conf文件,使允許core dump,或者用ulimit -c unlimited設置core dump文件的大小為unlimited3.C/C的編譯開關-g(…

經典的進程同步問題

經典的進程同步問題 普通版:一類進程作為生產者,生產產品,生產的產品放入一個緩沖區,消費者從緩沖區中取出產品,需要保證生產者不可以向滿的緩沖區中添加產品,消費者不可以從空的緩沖區中取出產品。同一時刻…

面試題匯總---深度學習(圖像識別,NLP內容)

文章目錄1.基本概念1.1 為什么神經網絡中深度網絡的表現比廣度網絡表現好?1.2 推導BP算法1.3 什么是梯度消失和梯度爆炸?1.4 常用的激活函數有哪些?1.5 常用的參數更新方法有哪些?1.6 解決過擬合的方法?數據層面模型層…

Linux-2.6.25 TCPIP函數調用大致流程

Linux-2.6.25 TCPIP函數調用大致流程學習目的,隨手筆記。函數和文字說明會不斷補充更新。Changelog2008.10.08 最近找工作忙。暫時緩緩插口層系統調用sendsys_sendsys_sendtosendtosys_sendtosock_sendmsgsendmsgsys_sendmsgsock_sendmsgwritesys_writevfs_write…

Python(28)-文件,os模塊

文件1. 文件2. 文件的基本操作3. 讀取文件open()3.1 文件指針: 標記從哪一個位置開始讀取數據.3.2 文件的打開方式mode3.3 文件按行讀取3.3.1 readline()3.3.2 readlines()4.文件輸出f.write(),print()5.文件復制5.1 小文件復制(搬家)5.2 大文件復制&…

IOCP的程序

C代碼 #include <winsock2.h> #include <mswsock.h> #include <windows.h> #include <stdio.h> #include <stdlib.h> #include <assert.h> #include "vld.h" #pragma message("automatic link to ws2_32.lib and…

PaperNotes(3)-圖像分割-RCNN-FCN-Boxsup

圖像分割算法對比小結1.{基本概念}2.{R-CNN}2.1R-CNN 網絡結構選擇性搜索算法為什么選擇SVM作分類器邊框回歸2.2{R-CNN 訓練}2.3{R-CNN實驗結果}2.4{R-CNN語義分割}2.5{補充材料}2.5.1{R-CNN建議區域放縮}2.5.2{IOU閾值設置不一樣的原因}2.5.3{Bounding-box回歸修正}2.6{R-CNN存…

Python模塊(3)--PIL 簡易使用教程

PIL模塊-用與記1.圖片導入Image.open()2.圖像顯示.show()4.查看圖片屬性.format,.size,.mode3.圖像格式轉換.convert()4.圖像模式“L”&#xff0c;“RGB”,"CYMK"5. 圖片旋轉.rotate()旋轉方式1&#xff1a;旋轉不擴展旋轉方式2&#xff1a;旋轉擴展旋轉方式3&#…

日志級別 debug info warn eirror fatal

日志級別 debug info warn eirror fatal 軟件中總免不了要使用諸如 Log4net, Log4j, Tracer 等東東來寫日志&#xff0c;不管用什么&#xff0c;這些東東大多是大同小異的&#xff0c;一般都提供了這樣5個日志級別&#xff1a; Debug Info Warn Error Fatal一個等級比一個高&…

輸入輸出系統

I/O設備&#xff1a;輸入輸出和存儲功能的設備 I/O設備的分類 按傳輸的速度&#xff1a; 低速設備&#xff08;如鍵盤、鼠標、語音輸入輸出設備&#xff09; 中速設備&#xff08;如行式打印機、激光打印機等&#xff09; 高速設備&#xff08;如磁帶機、磁盤機、光盤機等&…

vue2源碼解析---v-model雙向數據綁定

什么是v-model v-model 是 Vue 中的一個指令&#xff0c;用于實現表單元素與 Vue 實例中數據的雙向綁定。這意味著當表單元素的值發生變化時&#xff0c;Vue 實例中的數據也會隨之更新 工作原理 生成ast樹 本質上是語法糖 結合了v-bind和v-on兩個指令 示例代碼 new Vue({e…