1. 程式人生 > >21. Python 模塊

21. Python 模塊

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