2022年6月16日

Python: 练习 装饰器 带有参数的装饰器 类装饰器 多个装饰器装饰一个函数

练习 # 装饰器 def decorator_1(func): print(f"装饰1:{func}") def inner(*args, **kwargs): print(f"inner1:{func}") return func(*args, **kwargs) return inner # 带有参数的装饰器 def decorator_2(arg): def decorator_2_(func): print(f"装饰2:{func}") def inner(*args, **kwargs): print(f"inner2:{func}") print(f"decorator_2 参数:{arg}") return func(*args, **kwargs) return inner return decorator_2_ # 类装饰器 class Decorator_cls(o…
2022年6月16日

Python: 闭包 closure

1 闭包三要素 必须有一个内嵌函数 内嵌函数必须引用外部函数中变量 外部函数返回值必须是内嵌函数 2 语法 # 语法 def 外部函数名(参数): 外部变量 def 内部函数名(参数): 使用外部变量 return 内部函数名 # 调用 变量 = 外部函数名(参数) 变量(参数) 3 练习 def closure(name): def func(word): nonlocal name name = name + "说" print(f"{name}:{word}") return func closure_1 = closure("张三") closure_2 = closure("李四") closure_1("嘻嘻!") closure_2("哈哈") 运行结果: 张三说:嘻嘻! 李四说:哈哈…
2022年6月12日

Python: 练习 正则表达式 匹配文件名/扩展名

# 匹配文件名 import re file_name0 = "123.test.abc.zip" file_name1 = ".test.abc.zip" file_name2 = ".zip" file_name3 = "test" re_ = r".*?(?=\.[^\.]*$)|[^\.]+" file_name_0 = re.match(re_, file_name0) file_name_1 = re.match(re_, file_name1) file_name_2 = re.match(re_, file_name2) file_name_3 = re.match(re_, file_name3) print(file_name_0) print(file_name_1) print(file_name_2) print(file_name_3) # 匹配扩展名 impor…
2022年6月10日

Python: 练习 Excel 删除某列数据

from openpyxl import * import os def modify_file(): file_list = os.listdir(cwd) for file in file_list: if os.path.isfile(file): print(f"公司:{file} 文件修改 >>> ", end="") wb = load_workbook(file) ws_name=wb.sheetnames[0] ws = wb[ws_name] ws.delete_cols(1) # 删除第 13 列数据 ws['A1'].comment = None wb.save(file) print(f"OK!") print("全部完成") if __name__ == '__main__': os.chdir("../files") cwd = os.getcwd() dir…
2022年6月10日

Python: 练习 移动文件

from openpyxl import * import os def modify_file(): file_list = os.listdir(cwd) for file in file_list: if os.path.isfile(file): print(f"公司:{file} 文件修改 >>> ", end="") wb = load_workbook(file) ws_name=wb.sheetnames[0] ws = wb[ws_name] ws.delete_cols(1,3) # 删除第 13 列数据 ws['A1'].comment = None wb.save(file) print(f"OK!") print("全部完成") if __name__ == '__main__': os.chdir("../files1") cwd = os.getcwd()…
2022年6月8日

Python: 练习 socket tcp网络通信 收发信息/大文件 简单http server Chunk编码分块传输

import sys import threading import socket import os.path import json import struct import hashlib import re class NetworkCommunicateRole(object): def role_choose(self): while True: role = input("请选择角色 Http服务(h)/服务端(s)/客户端(c):") if role == "h": return "http_server", elif role == "s": return "server", elif role == "c": while True: server_ip_ = input("请输入服务端IP地址和端口(x.x.x.x:xx):") server_ip = self.check_ip(ser…
2022年5月21日

PyQt: 获取电脑屏幕桌面的宽、高尺寸

import sys from PyQt5.Qt import * class Window(QWidget): def __init__(self): super().__init__() self.setup_ui() def setup_ui(self): self.setWindowTitle("Qt桌面应用程序") self.resize(300, 300) desktop_widget = QApplication.desktop() self.label = QLabel(self) self.label.setText(f"屏幕宽:{str(desktop_widget.width())} 屏幕高:{str(desktop_widget.height())}") if __name__ == '__main__': app = QApplication(s…
2022年4月30日

Python: 练习 __str__ __repr__ __call__ __del__

class ClassA(object): def __init__(self): print("init") def __str__(self): return "str ClassA Object" def __repr__(self): return "repr ClassA Object" def __call__(self, *args, **kwargs): print(args, kwargs) def __del__(self): print(f"del {self}") obj = ClassA() print(obj) print("%s" % obj) print("%r" % obj) obj(1, 2, a1="a", b1="b1") 运行结果: init str ClassA Object str ClassA Object repr ClassA Object (1, 2) {'a1'…
2022年4月29日

PyQt: QtDesigner pyrcc5 练习 3

QtDesigner_练习_3 (pyrcc5) import sys from PyQt5.Qt import * from untitled_ui import Ui_Form from dialog_ui import Ui_Dialog # 继承Ui_Form类,以便使用Ui_Form中的方法 class Window(QWidget, Ui_Form): def __init__(self): super().__init__() self.setup_ui() self.dialog_setup() def setup_ui(self): # 将self传入Ui_Form类中setupUi实列方法 self.setupUi(self) self.label_3.hide() def dialog_setup(self): # 生成QDialog实例,以便作为Ui_Di…