栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

Python笔记(简单笔记)

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Python笔记(简单笔记)

文章目录

一、基础学习

1.1 输入功能1.2 占位符1.3 随机数选择1.4 for循环使用及乘法表1.5 文件的操作1.6 解析xml文件1.7 操作Excel

1.7.1 单元格样式(边框)1.7.2 crud操作1.7.3 打印操作 1.8 发送邮件 二、函数使用

2.1 基本函数2.2 匿名函数2.3 生成器2,4 模块导包2.5 文件注释2.6 json格式转换2.7 正则表达式 三、对象的了解

3.1 简单对象了解3.2 三大方法3.3 成员 属性3.4 成对方法3.5 迭代器

一、基础学习 1.1 输入功能
# name = input("请输入用户名:")
# if name == "hehe":
#     print("sb")
# else:
#     print("ss")

1.2 占位符
# name = "喵喵"
# age = 19
# text = f"嫂子的名字叫{name},年龄是{age}"
# print(text)

1.3 随机数选择
# import random
# data_list = ["iphone12","二手女友","10日游","避孕套","大保健"]
# while data_list:
#     name = input("请输入自己的名字:")
#     value = random.choice(data_list)
#     print("恭喜{},抽中{}".format(name,value))
#     data_list.remove(value)
1.4 for循环使用及乘法表
# for i in range(1, 10):
#     for j in range(1, i + 1):
#         text = "{}*{}".format(i, j)
#         print(text, end=" ")
#     print("")
1.5 文件的操作
from xml.etree import ElementTree as ET
# 创建标签
root = ET.Element("home")
# 创建节点
son1 = ET.Element('son', {'name': '儿1'})
son2 = ET.Element('son', {'name': '儿2'})
# 添孙子
grandson1 = ET.Element('grandson', {'name': '儿11'})
grandson2 = ET.Element('grandson', {'name': '儿12'})
son1.append(grandson1)
son2.append(grandson2)
# 把儿子添加到根节点中
root.append(son1)
root.append(son2)
tree = ET.ElementTree(root)
# short_empty_elements表示标签是否为短标签
tree.write('file/oo.xml', encoding='utf-8', short_empty_elements=tree)
1.6 解析xml文件
content = """
    
    
"""
from xml.etree import ElementTree as ET
info = {}
root = ET.XML(content)
for node in root:
    info[node.tag] = node.text
print(info)
1.7 操作Excel
# 首先下载第三方文件 pip install openpyxl
from openpyxl import load_workbook
wb = load_workbook("files/p1.xlsx")
# 循环所有sheet
# for sheet in wb:
#     cell = sheet.cell(1, 1)
#     print(cell.value)

# 获取第N行所有的单元格
# for cell in sheet[1]:
#     print(cell.value)

# 删除列表
# del wb["用户列表"]
# wb.save('files/p2.xlsx')

# 获取某个单元格,修改值
# cell = sheet.cell(1, 1)
# cell.value = "开始"
# wb.save("p2.xlsx")

# 获取某个单元格,修改值
# sheet['B3'] = "Alex"
# wb.save("p2.xlsx")

# 获取某个单元格,修改值
# cell_list = sheet["B2": "C3"]
# for row in cell_list:
#     for cell in row:
#         cell.value = "新的值"
# wb.save("p2.xlsx")
1.7.1 单元格样式(边框)
from openpyxl import load_workbook
from openpyxl.styles import Alignment, Border, Side, Font, PatternFill, GradientFill

wb = load_workbook("files/p1.xlsx")
sheet = wb.worksheets[0]
# 几行几列
cell = sheet.cell(9, 2)
# 居中设置
cell.alignment = Alignment(horizontal='center', vertical='center', text_rotation=0, wrap_text=True)
cell.border = Border(
    top=Side(style="thin", color="FFB6C1"),
    bottom=Side(style="dashed", color="FFB6C1"),
    left=Side(style="dashed", color="FFB6C1"),
    right=Side(style="dashed", color="9932CC"),
    diagonal=Side(style="thin", color="483D88"),
    diagonalUp=True,  # 左下~右上
    diagonalDown=True    # 左上~右下
)
wb.save("p2.xlsx")

1.7.2 crud操作
# 写入公式
# sheet = wb.worksheets[3]
# sheet["D1"] = "合计"
# sheet["D2"] = "=B2*C2"
# wb.save("p2.xlsx")
# # 或者
# sheet = wb.worksheets[3]
# sheet["D3"] = "=SUN(B3,C3)"
# wb.save("p2.xlsx")

# 删除索引
# idx 删除索引的位置
# amount 要删除的个数
sheet.delete_rows(idx=1, amount=2)
sheet.delete_cols(idx=1, amount=3)
wb.save("p2.xlsx")
1.7.3 打印操作
from openpyxl import load_workbook
from openpyxl.styles import Alignment, Border, Side, Font, PatternFill, GradientFill

wb = load_workbook("files/p1.xlsx")
sheet = wb.worksheets[0]

# 打印操作
# 打印区域
sheet.print_area = "A1:D200"
# 打印保留头部
sheet.print_title_cols = "A:D"
sheet.print_title_rows = "1:3"

wb.save("files/p2xlsx")

1.8 发送邮件
import smtplib
from email.mime.text import MIMEText
from email.utils import formataddr

# 邮件的内容
msg = MIMEText("约吗", 'html', 'utf-8')
msg['From'] = formataddr(["haha", "yangyan@126.com"])
msg['Subject'] = "180一晚"

# 发送邮件
server = smtplib.SMTP_SSL("smtp.126.com")
server.login("yangyan@126.com", "LADFKNJHFD")
server.sendmail("发送者邮箱", "接收者邮箱", msg.as_string())
server.quit()
二、函数使用 2.1 基本函数
# 形参的使用
def fucn(*args, **kwargs):
    print(args,kwargs)
fucn(11, 12 )
fucn(11, 12, name="haha", age=19)
fucn([11, 12, 33], {"k1": 1, "k2": 13})

# 函数结果
(11, 12) {}
(11, 12) {'name': 'haha', 'age': 19}
([11, 12, 33], {'k1': 1, 'k2': 13}) {}
(11, 12, 33) {'k1': 1, 'k2': 13}
2.2 匿名函数

基于lambda定义的函数格式为:lambda 参数:函数体

lambda x:函数体
lambda x,y:函数体
lambda *args, **kwargs:函数体

######例子
fucn = lambda x: x+10
v1 = fucn(10)
print(v1)

三元运算

num = input("请输入名字:")
data = "臭不要脸" if "苍老师" in num else "正经人"
print(data)
## 结果 = 条件成立 if 条件 else 条件不成立
2.3 生成器
import random
def gen_random_num(max_count):
    counter = 0
    while counter < max_count:
        yield random.randint(1000, 9999)
        counter += 1

data_list = gen_random_num(300000000)
# 在使用时,去data_list中获取即可
# next(data_liat)
2,4 模块导包
# from 文件夹.python文件 import 函数名 

###########################
# 找其他包 import sys
# sys.path.append("D:/xx")
# import x1.....

###########相对路径##############
###########在pycharm中可自动添加##############
import os
import sys
sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
2.5 文件注释
# 创建一个__init__.py文件添加注释
2.6 json格式转换
# 将json格式转换为python格式
import json
data_dic = json.load(re.text)

# 将python转换为json格式
import json
data_dic = json.dumps(data)

###########例子############
import json
from decimal import Decimal
from datetime import datetime

data = [
    {"id": 1, "name": "heh", 'size': Decimal("18.99"), 'ctime': datetime.now()},
    {"id": 2, "name": "www", 'size': Decimal("9.99"), 'ctime': datetime.now()}
]

class MyJSONEncoder(json.JSONEncoder):
    def default(self, o):
        if type(o) == Decimal:
            return str(o) # 字符串
        elif type(o) == datetime:
            return o.strftime("%Y-%M-%d")
        return super().default(o)
res = json.dumps(data, cls=MyJSONEncoder)
print(res)
2.7 正则表达式
import re
text = "拉欧著牛逼, 在线要333232332.@qq.com, 手机号是13829323293"
#  转义字符 d 代表数字
phone_list = re.findall("1[3|5|8|9]d{9}", text)
print(phone_list)

# 找固定的字符
phone_list = re.findall("[abc]", text)

# 固定一个字符q
phone_list = re.findall("q[abc]", text)

# 除了abc之外的字符
phone_list = re.findall("[^abc]", text)

# 常用迭代器finditer
phone_list = re.findall("[abc]", text)
for item in phone_list
	print(item.group)

#  取出定位的内容 (?P<分组名字>正则)

phone_list = re.findall("[abc]", text)
for item in phone_list
	print(item.group("分组名字"))

三、对象的了解 3.1 简单对象了解
class Message:
    def send_email(self, email, content):
        data = "给{}发邮件, 内容是: {}".format(email, content)
        print(data)

msg_object = Message()  # 实例化对象
msg_object.send_email("hehhhe.com", "注册成功")
3.2 三大方法

封装, 继承, 多态

继承:(支持多继承)

class Father:
    def send_email(self):
        print("我是父类")

class Son(Father):
    def inses_email(self):
        print("我是子类")

son_objiect = Son()
son_objiect.send_email()
son_objiect.inses_email()

多态:含有send()方法

静态方法: 在函数上添加 :@staticmethod

绑定方法: 函数中默认有 def send(self):

3.3 成员 属性

再绑定方法上添加 :@property 调用的时候就不用加 “方法()”了

3.4 成对方法

在方法中:

# __enter__ 和__exit__是成对出现的
# 前者是来凝结数据库,后者是关闭数据库
3.5 迭代器

定义:

1. 类中定义了__iter__和__next__两个方法
2. __iter__方法需要返回对象本身
3. __next__方法,返回下一个数据,如果没有数据,则需要抛出一个StopIteration异常
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/726277.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号