python模塊初始與time、datetime及random

模塊初始與time、datetime及random

模塊初始

模塊的概念(本質為一個py文件)

python模塊可以將代碼量較大的程序分割成多個有組織的、彼此獨立但又能互相交互的代碼片段,這些自我包含的有組織

的代碼段就是模塊,模塊在物理形式上表現為以.py結尾的代碼文件

一個文件被看作一個獨立的模塊,一個模塊也可以被看作是一個文件

模塊的文件名就是模塊的名字加上擴展名.py

每個模塊都有自己的名稱空間

python允許“導入”其他模塊以實現代碼重用,從而也實現了將獨立的代碼文件組織成更大的程序系統

python中,模塊也是對象

在一個模塊的頂層定義的所有變量都在被導入時成為了被導入模塊的屬性

模塊的分類

分為三部分:內置模塊、第三方模塊,自定義模塊

模塊的好處

分模塊的好處:

  • 避免寫重復代碼
  • 可以多次利用
  • 拿來即用

模塊的導入(imort)

import time,os  # 單行導入
import time   #多行導入(推介寫法)
import os

模塊導入發生的事情

  • 當前的名稱空間中開辟一個新的空間(test)
  • 將模塊中所有的代碼執行
  • 通過模塊名.進行查找函數(工具)

模塊的別名

import time as t    #將time命名為t
t.strftime()      # t.可直接調用函數方法# 做一兼容性
choose = input(msg)
if choose == "1":import meet as t
elif choose == "2":import test as tfrom datetime import datetime as t
from import 也支持重新命名

for import

導入模塊中的某些方法:

from datetime import datetime
# 導入模塊中的某種方法

form import和import的區別:

唯一的區別就是:使用from...import...則是將spam中的名字直接導入到當前的名稱空間中,所以在當前名稱空間中,直接使用名字就可以了

from...import...的方式有好處也有壞處

  • 好處:使用起來方便了
  • 壞處:容易與當前執行文件中的名字沖突

form import執行文件與模塊同名的變量,會有覆蓋效果

from import as *

from import as *導入模塊中未限制的所有方法

可以使用__all__進行限制

__all__=['name','read1'] #這樣在另外一個文件中用from spam import *就這能導入列表中規定的兩個名字

模塊的導入順序

內存中已經加載的模塊 > 自定義模塊 > 內置模塊 > 第三方模塊

  1. 在第一次導入某個模塊時,會先檢查該模塊是否已經被加載到內存中(當前執行文件的名稱空間對應的內存),如果有則直接引用(ps:python解釋器在啟動時會自動加載一些模塊到內存中,可以使用sys.modules查看)
  2. 如果沒有,解釋器則會查找同名的內置模塊
  3. 如果還沒有找到就從sys.path給出的目錄列表中依次尋找文件。
# 導入路徑:# 使用相對路徑:
from day15.t1 import meet   # day15.t1 meet相對路徑
print(meet.name)# 使用絕對路徑:
# 錯誤示例:# from r"D:\" import meet# from ../# 正確的絕對路徑:
from sys import path
path.insert(0,"D:\\")   # 將導入模塊的絕對路徑插入系統路徑中
import meet   
print(meet.name)

模塊的兩種用法:

  • 作為腳本(在終端中運行python文件)
  • 作為模塊(導入或使用)

time模塊

time模塊方法及用法

import time
print(time.time())  # 當前時間,浮點數
time.sleep(2)  # 休眠2秒,本質為阻塞
time.strftime("%Y-%m-%d %H:%M:%S",結構化時間)   # 將結構化時間轉化成字符串時間
time.gmtime(時間戳)  # 將時間戳轉化成格林尼治結構化時間
time.mktime(結構化時間)  # 將結構化時間轉化時間戳
time.strptime(字符串時間,"%Y-%m-%d %H:%M:%S")  # 將字符串時間轉換成結構化時間
time.localtime()  # 將時間戳轉化成當地的結構化時間

1729998-20190726190513686-1764880029.jpg

python中時間日期格式化符號: 
%y 兩位數的年份表示(00-99) 
%Y 四位數的年份表示(000-9999) 
%m 月份(01-12) 
%d 月內中的一天(0-31) 
%H 24小時制小時數(0-23) 
%I 12小時制小時數(01-12) 
%M 分鐘數(00=59) 
%S 秒(00-59) 
%a 本地簡化星期名稱 
%A 本地完整星期名稱 
%b 本地簡化的月份名稱 
%B 本地完整的月份名稱 
%c 本地相應的日期表示和時間表示 
%j 年內的一天(001-366) 
%p 本地A.M.或P.M.的等價符 
%U 一年中的星期數(00-53)星期天為星期的開始 
%w 星期(0-6),星期天為星期的開始 
%W 一年中的星期數(00-53)星期一為星期的開始 
%x 本地相應的日期表示 
%X 本地相應的時間表示 
%Z 當前時區的名稱 
%% %號本身

time模塊計算兩個時間的時間差:

計算時間差:import time
true_time=time.mktime(time.strptime('2017-09-11 08:30:00','%Y-%m-%d %H:%M:%S'))
time_now=time.mktime(time.strptime('2017-09-12 11:00:00','%Y-%m-%d %H:%M:%S'))
dif_time=time_now-true_time
struct_time=time.gmtime(dif_time)
print('過去了%d年%d月%d天%d小時%d分鐘%d秒'%(struct_time.tm_year-1970,struct_time.tm_mon-1,struct_time.tm_mday-1,struct_time.tm_hour,struct_time.tm_min,struct_time.tm_sec))

其他方法:

#結構化時間 --> %a %b %d %H:%M:%S %Y串
#time.asctime(結構化時間) 如果不傳參數,直接返回當前時間的格式化串
>>>time.asctime(time.localtime(1500000000))
'Fri Jul 14 10:40:00 2017'
>>>time.asctime()
'Fri Jul 26 18:34:59 2019'#時間戳 --> %a %b %d %H:%M:%S %Y串
#time.ctime(時間戳)  如果不傳參數,直接返回當前時間的格式化串
>>>time.ctime()
'Fri Jul 26 18:34:59 2019'
>>>time.ctime(1500000000)
'Fri Jul 14 10:40:00 2017'

datetime模塊

獲取當前日期和時間:

from datetime import datetime
print(datetime.now())   # 獲取對象數據類型為對象
# 結果:
'2019-07-26 18:39:46.300129'

獲取指定的時間和日期:

from datetime import datetime
dt = datetime(2018,5,20,13,14)
print(dt)
# 結果:
'2018-05-20 13:14:00'

datetime與時間戳的轉換:

from datetime import datetimedt = datetime.now()
new_timestamp = dt.timestamp()   # 轉化成時間戳
print(new_timestamp)
#結果:1543931750.415896import time
from datetime import datetimenew_timestamp = time.time()
print(datetime.fromtimestamp(new_timestamp))   # 轉化成datetime時間
# 結果:
'2019-07-26 18:46:13.833992'

str與datetime的轉換:

很多時候,用戶輸入的日期和時間是字符串,要處理日期和時間,首先必須把str轉換為datetime。轉換方法是通過datetime.strptime()實現,需要一個日期和時間的格式化字符串:

from datetime import datetimet = datetime.strptime('2018-4-1 00:00','%Y-%m-%d %H:%M')
print(t)
'''
結果: 2018-04-01 00:00:00
'''# 如果已經有了datetime對象,要把它格式化為字符串顯示給用戶,就需要轉換為str,轉換方法是通過`strftime()`實現的,同樣# 需要一個日期和時間的格式化字符串:```
from datetime import datetime
now = datetime.now()
print(now.strftime('%a, %b %d %H:%M'))
# 結果:
'Mon, May 05 16:28'

datetime加減:

對日期和時間進行加減實際上就是把datetime往后或往前計算,得到新的datetime。加減可以直接用+-運算符,不過需要導入timedelta這個類:

from datetime import datetime, timedelta
now = datetime.now()
now
datetime.datetime(2015, 5, 18, 16, 57, 3, 540997)
now + timedelta(hours=10)
datetime.datetime(2015, 5, 19, 2, 57, 3, 540997)
now - timedelta(days=1)
datetime.datetime(2015, 5, 17, 16, 57, 3, 540997)
now + timedelta(days=2, hours=12)
datetime.datetime(2015, 5, 21, 4, 57, 3, 540997)

可見,使用timedelta你可以很容易地算出前幾天和后幾天的時刻。

指定datetime時間:

current_time = datetime.datetime.now()
print(current_time.replace(year=1977))  # 直接調整到1977年
print(current_time.replace(month=1))  # 直接調整到1月份
print(current_time.replace(year=1989,month=4,day=25))  # 1989-04-25 18:49:05.898601

random模塊

print(random.random())          # 0 ~ 1
print(random.uniform(1,10))     # 1 ~ 10
print(random.randint(1,50))     # 1 ~ 50(閉區間)
print(random.randrange(1,5,2))    # randrange(起始,終止,步長)
print(random.choice([1,2,3,4,5,])) # 選擇一個元素
print(random.choices([1,2,3,4,5,],k=2))   # 選擇兩個元素,會有重復
print(random.sample((1,2,3,4,5),k=2))  # 選擇兩個元素,不會有重復(除非只有兩個)lst = [1,2,3,4,5,6,7,8,9,0]
random.shuffle(lst)  # 順序打亂
print(lst)

轉載于:https://www.cnblogs.com/lifangzheng/p/11252260.html

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

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

相關文章

PHP-面向對象編程教程

1.2 面向對象介紹 1.2.1 介紹 面向對象是一個編程思想。編程思想有面向過程和面向對象 面向過程:編程思路集中的是過程上 面向對象:編程思路集中在參與的對象 以去飯館吃飯為例: ? 面向過程:點菜——做菜——上菜——吃飯—…

vue-property-decorator使用指南

在Vue中使用TypeScript時,非常好用的一個庫,使用裝飾器來簡化書寫。 一、安裝 npm i -S vue-property-decorator PropPropSyncProvideModelWatchInjectProvideEmitComponent (provided by vue-class-component)Mixins (the helper function named mix…

Java生鮮電商平臺-統一異常處理及架構實戰

Java生鮮電商平臺-統一異常處理及架構實戰 補充說明:本文講得比較細,所以篇幅較長。 請認真讀完,希望讀完后能對統一異常處理有一個清晰的認識。 背景 軟件開發過程中,不可避免的是需要處理各種異常,就我自己來說&…

VScode新建自定義模板快捷方式

VS新建vue文件的自定義模板 在使用vscode開發的時候,新建vue文件是不可或缺的,但是VSCode并沒有vue文件的初始化模板,這個需要自定義模板。 我們可以使用vscode的snippets在新建.vue 文件后輕松獲得一套模板。 具體步驟 打開VSCode -> …

ESLint Unary operator ‘++‘ used.

ESLint Unary operator used. 安裝了ESLint&#xff0c;用這個工具之后發現居然不會寫代碼了。好尷尬~ 感覺自己以前寫的JS都是假的... 沒有操作 increment(state) {state.count ; },for(let i 0; i < temp.length; i} {//... } 然后報了如下錯誤 Unary operator u…

sencha touch筆記(6)——路由控制(1)

做項目的時候在界面的跳轉上遇到了挺大的問題&#xff0c;本來跳轉不想通過路由來控制的&#xff0c;沒辦法&#xff0c;只能再去看一下路由的跳轉方式了。 應用程序的界面發生改變后&#xff0c;可以通過路由讓應用程序的界面返回到改變之前的狀態&#xff0c;例如瀏覽器中頁面…

Angular rxjs operators 筆記

toArray /*toArray把結果都塞到數組里去 */ const source = interval(1000); const example = source.pipe(take(10),toArray() );example.subscribe(val => console.log(val)); // output: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] toArray /*pairwise把相鄰的兩個流組成數組 */…

Angular rxjs Subject筆記

BehaviorSubject /*ehaviorSubject接受一個默認參數,相當于new Subject后自動next(aa)之后到行為和Subject一致 */ const behave = new BehaviorSubject(aa); behave.subscribe(res => {console.log(res)

面試39 MySQL讀寫分離

&#xff08;1&#xff09;如何實現mysql的讀寫分離&#xff1f; 其實很簡單&#xff0c;就是基于主從復制架構&#xff0c;簡單來說&#xff0c;就搞一個主庫&#xff0c;掛多個從庫&#xff0c;然后我們就單單只是寫主庫&#xff0c;然后主庫會自動把數據給同步到從庫上去。 …

Angular自學筆記(一)ngModule 元數據

工作硬上開發angular項目,好難啊,上網搜資料教程真的賊少,吐槽真的沒什么人用angular,自己學習到處搜集整理的筆記,分享出來,方便查看理解總結。應該適用于angular11系列(更新真快,反正我也不知道之前低版本不同 手動狗頭) 什么是angular module(ngModule)? angula…

cookbook_數據結構和算法

1.1將數據分解為單獨的變量list_a [1,2,3,4,5,6,7,8,9] a,b,c,d,e,f,g,h,i list_a print(a,b,c,d,e,f,g,h,i) #使用相等數量的參數來接收_,b,c,d,e,f,g,h,_ list_a print(b,c,d,e,f,g,h) #不要的數據使用一個沒有用的變量接收 View Code1.2從任意長度的可迭代對象中分解元素…

Angular自學筆記(二)顯示數據 綁定屬性

顯示數據 1.顯示數據 ng的模版中,默認用雙大括號{{}}綁定組件中的變量顯示出來 import {Component } from @angular/core; @Component({selector: app-root,template: `<h1>{{title}}</h1><h2>My favorite hero is: {{myHero}}</h2>`

機器學習概覽

什么是機器學習&#xff1f; 廣義概念&#xff1a; 機器學習是讓計算機具有學習的能力&#xff0c;無需明確的編程 —— 亞瑟薩繆爾&#xff0c;1959 工程概念&#xff1a; 計算機程序利用經驗 E 學習任務 T&#xff0c;性能是 P&#xff0c;如果針對任務 T 的性能 P 隨著經驗 …

Angular自學筆記(?)TemplateRef和ViewContainerRef

ElementRef 由于ng是跨平臺的為了減少視圖層和渲染層的耦合也為了讓ng更適應多平臺,ng幫我們封裝了ElementRef,我們可以通過ElementRef拿到native元素(在瀏覽器中也就是我們常說的DOM元素) 下面我們看一段代碼 import {Component, ElementRef, AfterViewInit } from @angu…

python之re模塊

re模塊 re&#xff08;正則&#xff09;簡介 ? 正則就是用一些具有特殊含義的符號組合到一起&#xff08;稱為正則表達式&#xff09;來描述字符或者字符串的方法。或者說&#xff1a;正則就是用來描述一類事物的規則。 re元字符 元字符匹配內容\w匹配字母&#xff08;包含中文…

Angular自學筆記(?)ViewChild和ViewChildren

ViewChild 最好在ngAfterViewInit之后,獲取模版上的內容 獲取普通dom import {AfterViewInit, Component, ElementRef, OnInit, ViewChild} from @angular/core;@Component({selector: app-view-child

IPropertySet接口

Members AllProperties MethodsDescriptionCountThe number of properties contained in the property set.包含屬性個數GetAllPropertiesThe name and value of all the properties in the property set.GetPropertiesThe values of the specified properties.GetPropertyThe …

Angular自學筆記(?)ContentChild和ContentChildren

ContentChild 用法類似ViewChild, 獲取投影中到組件或指令還有元素dom等 獲取投影中但組件 import {AfterViewInit, Component, ElementRef, OnInit, ViewChild} from @angular/core;@Component({selector: app-content-child-panel,templateUrl

Angular自學筆記(?)屬性型指令

基本概念 用于改變DOM元素的外觀或行為的指令 組件是一種特殊的指令 import {Component} from @angular/core; @Component({selector: app-root,template: `<!--<app-for></app-for>--><div app-for>dasfsada</div>`,

SNS編年史

準備起草。轉載于:https://www.cnblogs.com/cmleung/archive/2009/11/26/1611546.html