合抱之木,生于毫末;九层之台,起于累土;千里之行,始于足下。💪🏻
一、模块 ⭐️
(一)模块的导入与使用 🍭
模块的导入:🐝
- 模块 就好比是 工具包,要想使用这个工具包中的工具,就需要 导入
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'))
输出结果: 👇🏻
(四)第三方库 🍭