合抱之木,生于毫末;九層之臺,起于累土;千里之行,始于足下。💪🏻
一、模塊 ??
(一)模塊的導入與使用 🍭
模塊的導入:🐝
- 模塊 就好比是 工具包,要想使用這個工具包中的工具,就需要 導入
import
這個模塊;- 每一個以擴展名
py
結尾的python
源代碼文件都是一個 模塊;- 在模塊中定義的 全局變量、函數 都是模塊能夠提供給外界直接使用的工具。
import my_first_module
result = my_first_module.sum_2_num(10, 20)
print("計算結果是 %d" % result)
print(my_first_module.name)
舉例: 🌰
my_module.py
author = 'mia'def add(a,b):return a+b'''
參數args:接收一個列表
return:args列表中每個元素的平方和
'''
def total(*args):result = 0for i in args:result = result + i**2return result# print(add(3,4))
# print(total(1,2,3,4))
demo1.py
# 全部導入
import my_moduleres1 = my_module.add(100,200)
print(res1)
res2 = my_module.total(1,2,3,4,5)
print(res2)
res3 = my_module.author
print(res3)
輸出結果: 👇🏻
300
55
mia
demo2.py
# 部分導入
from my_module import add, total, author
# from my_module import * # 全部導入res1 = add(100,200)
print(res1)
res2 = total(1,2,3,4,5)
print(res2)
res3 = author
print(res3)
輸出結果: 👇🏻
300
55
mia
(二)包的使用 🍭
包:🌲
- 包是
Python
模塊的一種組織形式,將多個模塊組合在一起,形成一個大的Python
工具庫。包通常是一個擁有__init__.py
文件的目錄,它定義了包的屬性和方法。
import pack1.module1
from pack1 import module1
(三)常見的標準庫 🍭
舉例 —— random
🎈
例子1
: 🌰
import random
# 生成隨機小數
a = random.random()
print(a)
# 生成隨機整數
b = random.randint(1,100) # 隨機生成范圍1~100的整數
print(b)# 獲取列表中的隨機元素
list1 = ['mia','jack','angel','candy','frank']
# 方法1
print(list1[random.randint(0,len(list1)-1)])
# 方法2
print(random.choice(list1))
# print(random.choice('hello')) # 隨機生成:'h'/'e'/'l'/'l'/'o'# 生成一個隨機大寫字母組成的列表
a = []
n = 5
for i in range(20):s = ''for j in range(n):t = random.randint(65, 90) # 隨機生成范圍65~90的整數 (65,90)可換成(ord('A'),ord('Z'))s += chr(t) # chr(t):將t轉換成對應ASCII值的字母a.append(s)
print(a)
例子2
: 🌰
import random# 隨機生成20位 長度為5的大寫字母組成的字符串
a = []
n = 5
for i in range(20):s = ''for j in range(n):t = random.randint(65, 90) # 隨機生成范圍65~90的整數 (65,90)可換成(ord('A'),ord('Z'))s += chr(t) # chr(t):將t轉換成對應ASCII值的字母a.append(s)
print(a)# 隨機大小寫字母
def random_char(upper=True):if upper:t = random.randint(ord('A'),ord('Z'))return chr(t)else:t = random.randint(ord('a'),ord('z'))return chr(t)# 隨機字符串
def random_string(length):s = ''for i in range(length):s += random_char(random.choice([True,False]))return s# 驗證碼
def yan_zheng_ma(length):return random_string(length)def main():# 隨機生成20位 長度在3到6之間的大小寫字母組成的字符串a = []for i in range(20):a.append(random_string(random.randint(3,6)))print(a)# 生成8位驗證碼print(yan_zheng_ma(8))main()
例子3
: 🌰
import random# 石頭剪刀布游戲
def game1():player_score,computer_score = 0,0for i in range(3):player = input('請輸入石頭剪刀布:')computer = random.choice(['石頭','剪刀','布'])print('電腦出的是:',computer)if player == computer:player_score += 1computer_score += 1elif (player == '石頭' and computer == '剪刀') or (player == '剪刀' and computer == '布') or (player == '布' and computer == '石頭'):player_score += 1else:computer_score += 1print('玩家得分%d 電腦得分%d' % (player_score,computer_score))if player_score == computer_score:print('平局')elif player_score > computer_score:print('玩家勝利')else:print('電腦勝利')
game1()
import random# 猜數字游戲
def guess_number():number = random.randint(1, 100)while True:player = int(input('請輸入你猜的數字:'))if player == number:print('猜中了')breakelif player > number:print('猜大了')else:print('猜小了')guess_number()
舉例 —— re
🎈
re
:🦋
- 正則表達式處理
- 可以用于文本搜索、替換、分割等
例子1
: 🌰
import re# \d:檢測字符串是否為純數字的字符串(其后的加號表示:檢測多個字符)
result = re.match(r'\d+','1234567')
print(result)# \w:檢測字符串是否為 字母、數字、下劃線 組成的字符串(其后的加號表示:檢測多個字符)
result = re.match(r'\w+','a8_')
print(result)# \s:空白字符 \S:非空字符(其后的加號表示:檢測多個字符)
result = re.match(r'\s+',' ')
print(result)# .:任意字符
result = re.match(r'^code\d-\d-.+$','code9-2-random')
print(result)# []區間,可選列表
result = re.match(r'^[abcd]+$','aabbbcd')
print(result)# |:或者
result = re.match(r'^a|b|c$','b')
print(result)
輸出結果: 👇🏻
<re.Match object; span=(0, 7), match='1234567'>
<re.Match object; span=(0, 3), match='a8_'>
<re.Match object; span=(0, 2), match=' '>
<re.Match object; span=(0, 14), match='code9-2-random'>
<re.Match object; span=(0, 7), match='aabbbcd'>
<re.Match object; span=(0, 1), match='b'>
舉例 —— time
🎈
獲取時間。
例子1
: 🌰
import time
t = time.time() # 時間戳:1970年起
print(t)
t = time.localtime() # 結構化時間
print(t)
s = time.strftime("%Y-%m-%d %H:%M:%S", t)
print(s)
輸出結果: 👇🏻
1748401659.383019
time.struct_time(tm_year=2025, tm_mon=5, tm_mday=28, tm_hour=11, tm_min=7, tm_sec=39, tm_wday=2, tm_yday=148, tm_isdst=0)
2025-05-28 11:07:39
舉例 —— turtle
🎈
例子1
: 🌰
# 導入turtle繪圖庫
import turtle# 創建一個turtle畫筆對象,命名為pen
pen = turtle.Turtle()# 設置畫筆移動速度為最快(0)
pen.speed(0)# 循環100次,i從0到99
for i in range(100):# 畫筆向前移動,距離為100+i(每次循環增加1)pen.forward(100 + i) # 畫一條直線,距離為100+i# 畫筆向右旋轉61度pen.right(61) # 右轉61度# 在畫布上寫入文字"快樂至上",使用Arial字體,大小40,正常樣式
pen.write('快樂至上', font=("Arial", 40, "normal"))# 等待用戶輸入,防止窗口立即關閉
input()
輸出結果: 👇🏻
例子2
: 🌰
# 導入 turtle 繪圖庫和 time 時間庫
import turtle, time# 創建一個 turtle 畫筆對象,命名為 pen
pen = turtle.Turtle()# 畫筆向后移動 100 像素(向左移動)
pen.backward(100)# 設置畫筆移動速度為最快(0)
pen.speed(0)# 無限循環,持續更新時間顯示
while True:# 暫停 1 秒(控制刷新頻率)time.sleep(1)# 獲取當前時間,并格式化為 "年-月-日 時:分:秒" 的字符串times = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())# 清空畫布上之前的內容pen.clear()# 在畫布上寫入當前時間,使用 Arial 字體,大小 40,正常樣式pen.write(times, font=('Arial', 40, 'normal'))
輸出結果: 👇🏻
舉例 —— socket
🎈
例子1
: 🌰
server.py
:👇🏻
# 服務器import socket
# 創建socket對象
sk = socket.socket()
# 綁定ip和端口號
sk.bind(('0.0.0.0',8995))
# 設置監聽
sk.listen(5)
# 等待客戶端連接
conn,addr = sk.accept()print(conn)
print(addr)while True:accept_data = conn.recv(1024)print('收到客戶端發送的消息:',accept_data.decode('utf-8'))send_data = '收到!'conn.send(send_data.encode('utf-8'))
client.py
:👇🏻
# 客戶端import socket
# 創建socket對象
sk = socket.socket()
# 連接服務器
sk.connect(('127.0.0.1',8995))while True:send_data = input('請輸入你要發送的內容:')# 發送數據到服務器sk.send(send_data.encode('utf-8'))# 等待服務器的響應accept_data = sk.recv(1024)# 打印服務器的響應print('接收到服務器的響應:',accept_data.decode('utf-8'))
輸出結果: 👇🏻
(四)第三方庫 🍭