python 內置模塊

来源:https://www.cnblogs.com/beargod/archive/2018/12/31/10202308.html
-Advertisement-
Play Games

一.random模塊 隨機 random() 隨機小數 uninform(a,b) 隨機小數 randint(a,b) 隨機整數 choice() 隨機選擇一個 sample() 隨機選擇多個 shuffle() 打亂 二.Counter 計數 三.字典 1.預設值字典 2.有序字典 四.棧和隊列 ...


一.random模塊  隨機       

random()    隨機小數            

uninform(a,b) 隨機小數

randint(a,b)  隨機整數

choice() 隨機選擇一個

sample() 隨機選擇多個

 shuffle() 打亂

 1 import random
 2 from random import randint
 3 
 4 print(randint(10, 20))
 5 # print(random.randint(10, 20))/
 6 print(random.random())
 7 print(random.uniform(10, 20))  # 10-20的隨機小數
 8 
 9 lst = ['寶寶', '寶浪', '寶強', '包拯']
10 random.shuffle(lst)  # 隨機打亂順序
11 print(lst)
12 
13 
14  # 從列表中隨機選擇一個
15 print(random.choice(["林志玲", "劉一菲", "王昭君", "艾米", "寶寶"]))
16 print(random.sample(["林志玲", "劉一菲", "王昭君", "艾米", "寶寶"],3))  # 可以給隨機選取幾個

二.Counter 計數

1 from collections import Counter
2 
3 print(Counter('寶寶今年特別喜歡王寶強'))  # 計數
4 
5 lst = ['jay', 'jay', 'jay', '寶寶', '寶寶', '胡辣湯', '上官婉兒']
6 c = Counter(lst)
7 print(c.get('寶寶'))

三.字典

1.預設值字典

1 from collections import defaultdict
2 
3 dd = defaultdict(lambda: '胡辣湯')  # callable 可調用的, 字典是空的
4 
5 print(dd['張無忌'])  # 從字典向外拿數據. 字典是空的. key:callable()
6 print(dd['寶寶'])  # 這裡的[] 和get() 不是一回事兒
7 print(dd)

2.有序字典

1 from collections import OrderedDict
2 
3 dic = OrderedDict()  # 有序字典
4 dic['a'] = '哈哈'
5 dic['b'] = '呵呵'
6 print(dic)
7 print(dic.get('a'))
8 print(dic.values())
9 print(dic['a'])

四.棧和隊列

1.棧

特點:先進後出

 1 class StackFullException(Exception):
 2     pass
 3 
 4 class StackEmptyException(Exception):
 5     pass
 6 class Stack:
 7 
 8     def __init__(self,size):
 9         self.size = size 給定存放數據的長度
10         self.lst = []  # 存放數據的列表
11         self.top = 0  # 棧頂指針
12 
13     # 入棧
14     def push(self, el):
15         if self.top >= self.size:
16             raise StackFullException('your stack is full!!')
17         self.lst.insert(self.top, el)  # 放元素
18         self.top += 1  # 棧頂指針向上移動一下
19 
20 
21     # 出棧
22 
23     def pop(self):
24         if self.top == 0:
25             raise StackEmptyException('your stack is empty!!!')
26         self.top -= 1
27         el = self.lst[self.top]
28         return el
29 
30 s = Stack(6)
31 s.push('寶寶')
32 s.push('我還')
33 s.push('記得')
34 
35 print(s.pop())
36 print(s.pop())
37 print(s.pop())

2.單項隊列

特點:先進先出

 1 import queue
 2 q = queue.Queue()
 3 q.put('李嘉誠1')
 4 q.put('李嘉誠2')
 5 q.put('李嘉誠3')
 6 q.put('李嘉誠4')
 7 q.put('李嘉誠5')
 8 
 9 print(q.get())
10 print(q.get())
11 print(q.get())
12 print(q.get())
13 print(q.get())

3.雙向隊列

特點:和單項一樣

 1 from collections import deque
 2 
 3 d =deque()  #  創建雙向隊列
 4 d.append('寶寶')  # 在右側添加
 5 d.append('no')
 6 d.append('way')
 7 d.append('哈哈')
 8 d.appendleft('娃哈哈')  # 在左邊添加
 9 d.appendleft('爽歪歪')
10 d.appendleft('優酸乳')
11 
12 print(d.pop())  # 從右邊拿數據
13 print(d.pop())  # 從右邊拿數據
14 print(d.pop())  # 從右邊拿數據
15 print(d.pop())  # 從右邊拿數據
16 print(d.popleft())  # 從左邊拿數據
17 print(d.popleft())  # 從左邊拿數據
18 print(d.popleft())  # 從左邊拿數據

五.time模塊

1 # 時間戳: 從1970-01-01 00:00:00 開始計算. 未來存儲的時候用時間戳
2 print(time.time())

 

1 # 格式化時間
2 print(time.strftime('%Y-%m-%d %H:%M:%S'))  # 用來顯示的

 

1 # 結構化時間(python的時間)
2 t = time.localtime()
3 print(t.tm_year)
4 print(t.tm_mon)
5 print(t.tm_mday)

 

1 # 資料庫里存儲一個數字. 把它還原成我們的格式化時間
2 a = 847772281.0
3 # 先把這個時間戳轉換成python中的結構化時間
4 t = time.localtime(a)  # 結構化時間括弧里填的是秒 time.localtime(秒) # 本地化的東八區的時間
5 # t = time.gmtime(a)  # 格林尼治時間
6 
7 s = time.strftime('%Y-%m-%d %H:%M:%S', t)  # time.strftime(格式化格式, 傳入結構化轉化完的時間 t)
8 print(s)

 

# 讓用戶輸入一個時間. 然後把時間轉化成時間戳
strt = input('請輸入一個時間:')
# 把字元串轉化成結構化時間
t = time.strptime(strt, '%Y-%m-%d %H:%M:%S')
# 轉化成時間戳
print(time.mktime(t))  # 847772281.0  # 本地化的東八區的時間


六.functools

1.wraps

from functools import wraps  # 可以改變一個函數的名字, 註釋....


def wrapper(fn):
    @wraps(fn)  # 把inner的名字改變成原來的func
    def inner(*args, **kwargs):
        print('')
        ret = fn(*args,**kwargs)
        print('')
        return ret
    return inner

@wrapper  # func = wrapper(func)
def func():
    print('哈哈哈')

print(func.__name__)  # func

2.reduce

1 def func(a, b):
2     return a + b # 0 + 1
3 
4 # 會把我們每一個數據交給func去執行, 把預設值作為第一個參數傳遞給函數
5 
6 ret = reduce(func, [1, 4, 7, 8, 6, 9],0)
7 print(ret)
8 print(reduce(lambda x, y: x+y, [i for i in range(101)]))

3.partial

1 from functools import partial
2 
3 def chi(zhushi, fushi):
4     print(zhushi, fushi)
5 
6 chi2 = partial(chi, fushi = "辣雞爪")
7 chi2('大米飯')
8 chi2('小米飯')
9 chi2('黑米飯')

七.命名元組 namedtuple

1 p = namedtuple('Point', ["x", "y"])
2 
3 p1 = p(10, 20)
4 print(p1)
5 print(p1.x)
6 print(p1.y)

八.OS模塊 系統操作
1.os

# 必須要記住. 很常用
os.makedirs('baby/安哥拉/特斯拉')  # 可以一次性創建多級目錄

os.mkdir('baby/安哥拉/特斯拉/bb') # 上層文件夾必須存在

os.removedirs('baby/安哥拉/特斯拉/bb')  # 目錄不是空, 不能刪除  #可以幫我們刪除當前這個目錄級中的所有空文件夾

# 可以記住 一般不刪數據
os.rmdir('baby/安哥拉/特斯拉')  # 指定文件夾刪除

os.system('dir')
print(os.popen('dir').read())  # 執行shell腳本或者cmd命令

print(os.getcwd())  # 當前程式運行的文件夾 D:\python_workspace_s18\day 23 內置模塊02

os.chdir('baby') 

 

 1 # os.path 和路徑相關的內容
 2 print(os.path.abspath('baby'))  # 把相對路徑改成絕對路徑
 3 print(os.path.split(r'D:\python_workspace\內置模塊\baby\1.txt'))  # 切割文件和文件路徑
 4 
 5 print(os.path.dirname(r'D:\python_workspace\內置模塊\baby\1.txt'))  
 6  # 文件路徑
 7 print(os.path.basename(r'D:\python_workspace\內置模塊\baby\1.txt'))  
 8 # 文件
 9 
10 print(os.path.existsr'D:\python_workspace\內置模塊\baby\1.txt'))  
11 # 判斷文件是否存在
12 print(os.path.abspath('1.txt'))

2.sys模塊

1 import sys
2 
3 print(sys.path)  # 找到模塊的. 必須要記住. 模塊的搜索路徑
4 sys.path.append(r'D:\python_workspace\內置常用模塊')
5 print(sys.path)


九.自定義模塊和包

import    

from xxx import xxxx    

一個表達式 -> 一條語句  -> 語句塊  -> 函數 -> 類  -> 模塊  -> 包  -> 項目        

包就是我們的文件夾, 包內可以寫很多個模塊.

查找路徑是:sys.path, 隨動. 跟著你的啟動文件所在的位置變化        

不論使用絕對導入. 還是相對導入. 啟動文件一定在最外面

 1.模塊

寫的一個py文件就可以稱作一個模塊

2.包

文件夾里裝很多模塊的就是包

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 基於 C++ 14 原生語法,不到 100 行代碼:讓編譯器幫你寫 JSON 序列化/反序列化代碼,告別體力勞動。
  • 前言 本次分析基於 CPython 解釋器,python3.x版本 在python2時代,整型有 int 類型和 long 長整型,長整型不存在溢出問題,即可以存放任意大小的整數。在python3後,統一使用了長整型。這也是吸引科研人員的一部分了,適合大數據運算,不會溢出,也不會有其他語言那樣還分短 ...
  • 一、視圖函數 一個視圖函數,簡稱視圖,是一個簡單的python函數,接收web請求並返回web響應。響應可以是一張網頁的HTML內容,一個重定向,一個404錯誤等。在函數中必須寫一個request的參數,然後必須要有返回值,中間的邏輯隨便,整個函數寫在哪裡也無所謂,只要python目錄下就行,但我們 ...
  • 一、憧憬和期待 這一年從畢業到工作經歷了很多,沒畢業之前的各種憧憬和期待,到工作的迷茫和無奈。 從對PHP的認知的到現在的技術開發,上學時感覺良好的我到工作中的手忙腳亂。仿佛現實給了我重重的一擊,每天起來鏡子中的我是迷茫找不到未來的人生方向的屌絲小青年。沒工作前憧憬著朝九晚五每天寫寫代碼拿著很高的月 ...
  • 1 輸出大寫字母、小寫字母、大小寫字母、數字、大小寫字母和數字 1.1輸出小寫:找到小寫a(97)到z(122)的的ASCII碼,然後轉義為字母lower = ""for i in range(97,123): lower += chr(i)print('%s' % lower) 1.2輸出大寫:找 ...
  • jsp隱式對象都包括什麼?包括request、response、out、session、application、config、pageContext。 ...
  • org.hibernate.exception.SQLGrammarException:could not insert ...
  • VSCode配置JAVA開發環境 1:給機器安裝JDK、MAVEN 下載JDK 下載路徑:https://www.oracle.com/technetwork/java/javase/downloads/jdk11 downloads 5066655.html 配置JAVA的環境變數 我的JDK在硬 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...