函數的優勢之一,就是可使用函數將代碼塊與主程序分離,經過給函數指定一個描述性的名稱,並將函數存儲在被稱爲模塊的獨立文件中,再將模塊導入主程序中,經過import語句容許在當前運行的程序文件中使用模塊中的代碼,一個.py文件就稱爲一個模塊,包含了Python對象定義和Python語句。
以下就是一個簡單的模塊cal.pypython
def cal(x,y): return x+y
導入模塊的方法有不少種linux
import module #導入整個模塊 from module.xx.xx import xx #導入模塊中的特定函數 from module.xx.xx import xx as rename #使用as給函數指定別名 from module.xx.xx import * #導入模塊中的全部函數(不推薦)
對於上面一個模塊,若是想要在另外一文件中調用它,即:
shell
這種就經過import導入,可是調用的時候須要使用模塊名.函數名的方式調用,即bash
import cal print(cal.cal(3,5))
那麼函數再導入模塊的時候是以哪一個路徑爲基準呢?dom
import sys print(sys.path)
經過sys.path輸出的路徑,就是尋找該模塊的基準路徑。
模塊分爲三種
- 自定義模塊
- 第三方模塊
- 內置模塊
- 自定義模塊函數
import time print(time.time()) #時間戳,是指從1970年1月1日0點0分到當前時間過了多少秒,經常使用來計算 運行結果:1513730364.4014938 print(time.localtime()) #結構化時間,經過這種方式,能夠截取具體的年月日時分秒等信息 運行結果:time.struct_time(tm_year=2017, tm_mon=12, tm_mday=20, tm_hour=8, tm_min=40, tm_sec=58, tm_wday=2, tm_yday=354, tm_isdst=0) t=time.localtime() print(t.tm_year) #運行結果:2017 能夠經過.關鍵字的方式,截取想要的信息 print(time.strftime("%Y-%m-%d,%X")) #格式化的字符串,必須寫入想輸出的時間格式 運行結果:2017-12-20,08:48:01 將元組形式的時間轉化爲字符串形式,返回時間形式爲:Thu Dec 28 09:21:06 2017 print(time.asctime()) 返回結果格式同asctime print(time.ctime()) 返回UTC時間結構化時間 print(time.gmtime())
三種表達方式的互相轉化測試
格式化的字符串轉換成結構化時間: print(time.strptime("2017-12-20","%Y-%m-%d")) 將結構化時間轉換成時間戳 print(time.mktime(time.localtime())) 將結構化時間轉換成格式化的字符串 print(time.strftime("%Y-%m-%d %X",time.localtime()))
import random #隨機生成一個0-1的浮點數 print(random.random()) #隨機生成一個整數 #生成一個指定範圍內的隨機浮點數 print(random.uniform(10,20)) #隨機生成一個整數 print(random.randint(1,9)) #從指定範圍內,按指定基數遞增的集合中 獲取一個隨機數 print(random.randrange(10,100,2)) #隨機取10-100之間的偶數 #從序列中隨機獲取一個元素 print(random.choice(["tuple","list","dic"])) #將一個列表中的元素打亂 p=["tuple","list","dic"] random.shuffle(p) print(p)
隨機數小案例 ,生成一個五位的隨機數spa
import random def random_code(): res="" for i in range(5): num=random.randint(0,9) alf=chr(random.randint(60,100)) result=str(random.choice([num,alf])) res+=result return res print(random_code())
提供對操做系統進行調用的接口,該模塊的介紹我在linux操做系統下完成操作系統
os.getcwd() 獲取當前所在路徑 os.chdir("test") 改變當前的工做路徑,至關於cd os.makedirs('test/test1') 建立多級目錄 os.removedirs('test1') 遞歸刪除,如目錄爲空,則刪除 os.mkdir('test') 建立單級目錄 os.rmdir('dirname') 刪除單級空目錄,目錄不爲空沒法刪除,報錯 os.listdir('dirname') 列出指定目錄下的全部文件和子目錄,包括隱藏文件,並以列表方式打印 os.remove() 刪除一個文件 os.rename("oldname","new") 重命名文件,用「,」分割 os.stat('path/filename') 獲取文件/目錄信息 os.sep 操做系統的路徑分隔符,win下爲"\\",Linux下爲"/" os.linesep 當前平臺使用的行終止符,win下爲"\t\n",Linux下爲"\n" os.pathsep 用於分割文件路徑的字符串 os.name 字符串指示當前使用平臺。win->'nt'; Linux->'posix' os.system("bash command") 運行shell命令,直接顯示 os.environ 獲取系統環境變量 os.path.abspath(path) 返回path規範化的絕對路徑 os.path.split(path) 將path分割成目錄和文件名二元組返回 os.path.dirname(path) 返回path的目錄。其實就是os.path.split(path)的第一個元素 os.path.basename(path) 返回path最後的文件名。如何path以/或\結尾,那麼就會返回空值。即os.path.split(path)的第二個元素 os.path.join(path1[, path2[, ...]]) 將多個路徑組合後返回,第一個絕對路徑以前的參數將被忽略
sys.argv 命令行參數List,第一個元素是程序自己路徑 sys.exit(n) 退出程序,正常退出時exit(0) sys.version 獲取Python解釋程序的版本信息 sys.maxint 最大的Int值 sys.path 返回模塊的搜索路徑,初始化時使用PYTHONPATH環境變量的值 sys.platform 返回操做系統平臺名稱 sys.stdin 輸入 sys.stdout 輸出 sys.stderror 錯誤
進度百分比小案例命令行
import sys import time def calc(num, total): rate = float(num) / float(total) #float 浮點數關鍵字 rate_num = int(rate * 100) r = '\r%d%%' % (rate_num, ) #要加上/r轉義符,表示將輸出的內容返回到第一個指針,即覆蓋前面的內容 sys.stdout.write(r) sys.stdout.flush() if __name__ == '__main__': #這條語句,若是用在被調用文件裏面,用於被調用文件的一個測試 for i in range(0, 101): # 若是放在執行文件裏面,就是不想讓該文件讓齊塔程序調用 time.sleep(0.1) calc(i, 100)
進度條小案例
import sys import time for i in range(100): sys.stdout.write("#") time.sleep(0.1) sys.stdout.flush()
由於工做緣由,最近一週沒有更新博客,我會在這周補回來,下一篇文章我會重點寫re模塊。