21. Python 模塊
什麽是模塊?
在日常的開發工作中,我們要寫很多的python代碼,如果都寫在一個文件中,會導致代碼特別難維護,為了拓展代碼的可維護性,我們把函寫在不同的文件裏,這樣每個文件包含的文件就比較少,邏輯更加清楚。在python中,我們創建的文件基本都是以.py結尾,那一個.py的文件就稱之為模塊。
為了方便管理方便管理模塊,python中又引了包(Package)這個概念。每個包下面都有一個__init__.py文件,這個文件是必須存在的,否則,Python就把這個目錄當成普通目錄,而不是一個包。__init__.py可以是空文件,也可以有Python代碼,因為__init__.py本身就是一個模塊,舉個例子:test目錄下面有__init__.py, aaa.py,bbb.py三個文件,如下所示:
[root@localhost ~]# tree test
test
├── aaa.py
├── bbb.py
└── __init__.py
0 directories, 3 files
1. import
Pycharm常用的導入模塊的快捷鍵:alt + enter
有時候一個文件或者一個包中已經出現了一個函數,我們在另一個python代碼中需要引入該文件或者該文件的某個函數,那怎麽解決呢?
python給我們提供一個關鍵字import,下面我們來了解一下它的用法:
1,如果是本地導入文件,直接使用:import filename (即:import filename.py)
2,如果導入的是一個包,該包下面必須是有__init__.py文件才可以導入,否則報錯,只有有了__init__.py文件,python解析器才會把這個目錄當成是的包
常用的導入模塊常用的格式:
form xxx import xxx
import xxx
在導入的時候,.py的後綴直接省略,如果是多級的包,或者想導入包裏面的函數等,可以使用from進行導入
舉個例子:
from aaa import bbb
import os
import ccc.qqq
from ddd.eee import fff
解釋:
第一個例子:導入 aaa 包下面的 bbb 模塊或者導入 aaa 文件下面的 bbb 類或者函數
第二個例子:直接導入系統模塊os模塊
第三個例子:直接導入自定義模塊文件(這樣寫比較麻煩,一般都用第一種和第四種)
第四個例子:第一個例子的深化,導入ddd模塊包裏eee模塊文件內的 fff 方法(方法==> "函數" 或者 "類" 或者 "ddd.eee的 別名")
栗子如下:
import ling.test as aaa ##aaa 就是ling.test的別名
print(‘aaaaaaaaaaaaaaaaaaaaaa‘)
aaa.hello() ## 別名用法。
print(‘aaaaaaaaaaaaaaaaaaaaaa‘)
總結:
導入模塊,就是一層一層的調用
僅使用 import導入時, import後面導入的什麽,在調用的時候就必須寫什麽,除非你添加用 from 進行導入。
導入 模塊文件 的時候不寫後綴名字
2. datetime 時間模塊 獲取時間
時間模塊工作中經常用到的,打印日誌等等都會用到時間模塊。
先來看看幾個子類之間的關系
object
timedelta
tzinfo
time
date
datetime
① time 模塊
基本不用於取時間,要取時間推薦使用 datetime 模塊
time 獨有的用法:
for i in xrange(1,10):
print (i)
time.sleep(3) ##休眠3秒
② datetime 模塊
from datetime import datetime
now_time = datetime.now()
print (now_time)
a = now_time.strftime(‘%Y-%m-%d %H:%M:%S‘)
print(a)
解釋:
1,先導入datetime類
2,通過datetime的now方法就獲得當前所需要的時間
3,datetime還是有好多方法的,可以獲取year, month,等,請通過dir()方法查看
4,此時我們獲得的now_time還是一個datetime類,所以我們需用用strftime方法轉換成字符串,strftime的參數就是最終需要字符串的形式。
5,Strftime需要便是時間的參數有很多,下面我們介紹一下最長用的一些參數:
格式參數如下:
%Y 帶世紀部分的十制年份
%m 十進制表示的月份
%d 十進制表示的每月的第幾天
%H 24小時制的小時
%M 十時制表示的分鐘數
%S 十進制的秒數
%c 標準時間,如:04/25/17 14:35:14 類似於這種形式
以上,這幾個參數就是最常用到的我們用的時間
另外,在開發過程中,經常要取昨天的時間,或者明天的時間,應該怎麽辦呢?
例子:
from datetime import datetime, timedelta
now_time = datetime.now()
a = now_time.strftime(‘%c‘)
print(now_time)
print(a)
b = now_time + timedelta(days=-1)
print(b)
解釋:
timedelta 可以接收 days 和 seconds 兩個參數,正數代表幾天之後的,負數代表幾天之前的
所以,b 代表的是一天之前的時間。
3.時間格式互相轉換
時間的三種存在方式:時間對象,時間字符串,時間戳。
(1)字符串 轉 datetime:
from datetime import datetime
string = ‘2017-04-25 11:59:58‘
time1 = datetime.strptime(string, ‘%Y-%m-%d %H:%M:%S‘)
print(time1)
結果:
2017-04-25 11:59:58
(2)datetime 轉 字符串:
from datetime import datetime
string = ‘2017-04-25 11:59:58‘
time1 = datetime.strptime(string, ‘%Y-%m-%d %H:%M:%S‘)
print(time1)
print(type(time1))
time1_str = datetime.strftime(time1, ‘%Y-%m-%d %H:%M:%S‘)
print(time1_str)
print(type(time1_str))
結果:
2017-04-25 11:59:58
<type ‘datetime.datetime‘>
2017-04-25 11:59:58
<type ‘str‘>
(3)時間戳 轉 時間對象:
from datetime import datetime
import time
time1 = time.time()
print(time1)
time1_str = datetime.fromtimestamp(time1)
print(time1_str)
print(type(time1_str))
結果:
1493107955.66
2017-04-25 16:12:35.660000
<type ‘datetime.datetime‘>
解釋:
1,datetime模塊是包裝了time模塊的,所以只需要了解datetime模塊就可以。
2,time.time()是獲取當前時間的時間戳,時間戳是指格林威治時間1970年01月01日00時00分00秒(北京時間1970年01月01日08時00分00秒)起至現在的總秒數。
3,datetime下面下面有個函數 fromtimestamp (時間戳)會把時間戳自動轉換成 datetime 類型(時間對象類型)
本文出自 “筆記空間” 博客,請務必保留此出處http://286577399.blog.51cto.com/10467610/1980461
21. Python 模塊