Python的包(package)和模組(module)介紹
Python的包(package)和模組(module)
一、Python的包(package)
包:初期理解為資料夾,用於裝多個模組
作用:一種管理Python模組名稱空間的形式,採用"點語法" os.path
包和資料夾之間的區別:Python的包中有一個特殊的檔案__init__.py檔案,前期裡面不寫任何內容,但是,就是為了告訴編譯器,當前這個目錄不是普通目錄,是一個包
建立方式:選中工程,建立Python package(使用pycharm編輯器)
二、Python的模組(module)
1.概述
為了解決維護問題,一般情況下,在一個完整的專案中,會將特定的功能分組,分別放到不同的檔案中,在使用的過程中,可以單獨維護,各個不同的檔案之間互不影響,每個.py檔案就被稱為一個模組,透過結合包的使用來組織檔案
封裝思路: 函式 => 類 => 模組 => 包 => 專案
優點:
a.提高了程式碼的可維護性
b.提高了程式碼的複用性【當一個模組被完成之後,可以在多個檔案中使用】
c.引用其他的模組【第三方模組】
d.避免函式名和變數的命名衝突
2 os模組
提供有關於作業系統的函式,處理檔案或者資料夾
**注意:**若path不是絕對路徑,則認為是在當前py檔案的地址執行相關操作
# os: operation system 作業系統
import os
print(os.name)
# nt--->windows
# posix --->Linux, MacOS
print(os.environ)
print(os.environ.get('PATH'))
# . 表示當前目錄
# .. 表示上級目錄
print(os.curdir) # . 當前目錄
# 當前路徑
# 相對路徑:從當前目錄(或者專案目錄)開始的路徑
# 絕對路徑:從磁碟根目錄開始的完整路徑
print(os.getcwd()) # C:\Users\75171\Desktop\Python2004\day11\code
# 後面的必須掌握
# listdir():獲取指定路徑下的所有檔案或者目錄的名字,以列表形式展示
print(os.listdir(r'path'))
# mkdir():新建目錄
# os.mkdir('hello')
# os.makedirs('a/b/c') # 可以遞迴建立目錄
# 刪除目錄
# os.rmdir('hello')
# os.rmdir('a') # OSError: [WinError 145] 目錄不是空的。: 'a'
# 刪除檔案
# os.remove('a.txt')
# 重新命名
# os.rename('a','aaa')
# os.rename(r'aaa/b/a.txt','aaa/b/bbb.txt')
# 檔案屬性
print(os.stat('aaa/b/bbb.txt'))
# os.path
# os.path.join():將多個路徑拼接
print(os.path.join(r'path1','name')) # 一般兩個,也可以三個
# os.path.split():拆分
print(os.path.split(r'C:\Users\75171\Desktop\Python2004\day11\code\aaa'))
# 'C:\Users\75171\Desktop\Python2004\day11\code' 'aaa'
# os.path.splitext():將檔案的名稱和副檔名拆分
print(os.path.splitext('ccc.py')) # ('ccc', '.py')
# os.path.getsize():獲取檔案大小
print(os.path.getsize('path')) # 1639
# os.path.abspath(): 獲取指定檔案的絕對路徑
print(os.path.abspath('bbb.txt')) # C:\Users\75171\Desktop\Python2004\day11\code\bbb.txt
# __file__:當前檔名
print(os.path.abspath(__file__)) # C:\Users\75171\Desktop\Python2004\day11\code\os.py
file_path = r'C:\Users\75171\Desktop\Python2004\day11\code\os.py'
dir_path = r'C:\Users\75171\Desktop\Python2004\day11\code'
# os.path.exist() :判斷檔案或目錄是否存在
print(os.path.exists(file_path))
print(os.path.exists(dir_path))
# os.path.isfile():是否為檔案
print(os.path.isfile(file_path)) # True
print(os.path.isfile(dir_path)) # False
# os.path.isdir():是否為檔案
print(os.path.isdir(file_path)) # False
print(os.path.isdir(dir_path)) # True
# os.path.dirname():父目錄/上一級目錄
print(os.path.dirname(dir_path)) # C:\Users\75171\Desktop\Python2004\day11
# os.path.basename():檔名
print(os.path.basename(file_path)) # os.py
3.自定義模組【掌握】
3.1自定義import模組
#1.格式:import 包1.包2.模組的名稱
#注意1:透過點語法區分包的層級關係
#引入模組
#注意2:如果要同時匯入多個模組,有兩種方式
#方式一
"""
import os
import datetime
import math
"""
#方式二
import os,math,datetime
#注意3:當匯入自定義模組的時候,需要注意包的存在
#注意5:當透過import將模組匯入的時候,將模組對應的檔案整個載入了一遍
import ccc.module
import moduleTextDemo01
print("***************")
#注意4:當模組有包的層級關係時,需要呼叫其中函式的時候,需要指明函式的路徑
ccc.module.test() #os.path.isdir()
moduleTextDemo01.fun1()
moduleTextDemo01.fun2()
moduleTextDemo01.fun3()
print(moduleTextDemo01.num)
3.2自定義from-import模組
#form 模組名 import 函式名1/類名,函式名2.。。。
#import moduleTextDemo01
from moduleTextDemo01 import fun1,fun2,fun3
#注意:採用了form。。。import的方式匯入指定的函式之後,可以直接呼叫函式
fun1() 鄭州去胎記醫院
fun2()
fun3()
#好處:進行區域性的匯入,避免記憶體空間的浪費
#注意:當前檔案中如果存在和模組中同名的函式的時候,當前檔案中的函式仍然會將模組中的函式給覆蓋掉
def fun1():
print("hello")
fun1()
3.3自定義from-import*模組
#from 。。。。 import * *代表全部
"""
下面三種匯入方式完全等價:將moduleTextDemo01模組中的所有的內容全部匯入
from moduleTextDemo01 import *
import moduleTextDemo01
from moduleTextDemo01 import fun1,fun2,fun3
"""
from moduleTextDemo01 import *
fun1()
總結:在python中,每個py檔案其實都是一個模組,如果跨模組呼叫函式,則採用匯入的方式
將不同的功能進行劃分,呼叫函式的時候相對比較方便的
4.__name__屬性和dir函式
__name__的作用:如果不想讓模組中的某些程式碼執行,可以透過屬性僅僅呼叫程式中的一部分功能
【寫在if判斷中的程式碼只有當前模組被執行的時候才會被執行,檢測到是其他的檔案在使用當前的模組,則if語句中的程式碼不會被執行】
def fun1():
print("aaa")
def fun2():
print("bbb")
def fun3():
print("ccc")
#作用:寫在下面判斷中的程式碼,只有當前模組執行的時候才會被執行【起到遮蔽的作用】,其他檔案想import此檔案,以下函式不會被執行
if __name__ == "__main__":
fun1()
fun2()
fun3()
dir:獲取指定模組裡面的所有的內容
dir(模組名稱) 返回的是一個列表
print(dir(math))
print(dir(moduleTextDemo01))
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69945560/viewspace-2709501/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Python的常見模組:OS和 time模組介紹Python
- Python模組(module)Python
- Python 精靈模組簡介_python sprites module introducePython
- Python包和模組管理Python
- Python 關於JSON模組介紹PythonJSON
- 簡單介紹python process模組Python
- 全網最適合入門的物件導向程式設計教程:21 類和物件的 Python 實現-多檔案的組織:模組 module 和包 package物件程式設計PythonPackage
- Python之logging模組相關介紹Python
- python之pymsql模組相關介紹PythonSQL
- python包和模組的內容整理Python
- Python3 日曆(Calendar)模組介紹Python
- Python - 模組包Python
- python基礎之-sys模組、os模組基本介紹(未完成)Python
- 【StoneDB 模組介紹】伺服器模組伺服器
- 模組和包
- Python包與模組Python
- Python - 模組與包Python
- python模組與包Python
- Python基礎入門(8)- Python模組和包Python
- python3中的re模組簡單介紹及使用Python
- 3.03 模組外掛介紹
- Android模組化框架介紹Android框架
- ModStartCMS模組開發介紹
- Http Module 的詳細介紹HTTP
- Python 位元組碼介紹Python
- ImportError: No module named flask 導包失敗,Python3 重新安裝 Flask 模組ImportErrorFlaskPython
- Go語言基於go module方式管理包(package)GoPackage
- ES Module,commonjs和Typescript模組系統JSTypeScript
- python 3呼叫paramiko模組報錯AttributeError: modulePythonError
- Python中爬蟲模組有哪些?優缺點介紹!Python爬蟲
- Python-VidGear模組翻譯系列-01-Introduction介紹Python
- Python中的類、模組和包究竟是什麼?Python
- jar包和war包的介紹與區別JAR
- Istio所有模組、Service、Pod的功能介紹
- [雪峰磁針石部落格]python標準模組介紹-string:文字常量和模板Python
- jar包、war包和ear包的介紹與區別JAR
- 9.模組和包
- pipenv管理模組和包