
Python
记录Python的学习过程, 一些技巧, 遇到的坑, 审过的代码库或项目心得体会
fa1c4
软件安全研究生, 不定期灌水博主(
展开
-
Command “python setup.py egg_info“ failed with error code 1 in /tmp/pip-build-T7syzm/pefile/
pip 环境错误解决原创 2022-09-08 10:29:49 · 239 阅读 · 0 评论 -
<class ‘numpy.int64‘> to int
做数据处理时遇到的bug, 简单记录一下如果dataframe取index作为int类型使用, 会因为这个类型冲突导致bug代码实例import numpy as np# for example, numpy.float32 -> python floatval = np.float32(0)pyval = val.item()print(type(pyval)) # <class 'float'># and similar...type(np.flo原创 2021-12-23 21:35:26 · 6364 阅读 · 0 评论 -
gmpy2安装
记录一下密码学常用库的安装gmpy2直接pip install gmpy2报错是很常见的情况可以采用手动安装官方网站下载.whl文件https://pypi.org/project/gmpy2/#files这里我的python是3.8, 选择cp38 win版本下载到.whl文件打开cmd先装wheelpip install wheel再装pip install gmpy2-2.1.0-cp38-cp38-win_amd64.whldone!...原创 2021-12-13 15:37:27 · 1964 阅读 · 0 评论 -
raise ValueError(“check_hostname requires server_hostname“) ValueError: check_hostname requires 报错解决
问题pip install xxx的时候报错... raise ValueError("check_hostname requires server_hostname")ValueError: check_hostname requires server_hostname解决网络问题关掉代理如果安装源比较慢, 更换国内镜像, 选择其中一个进行更换源# 清华源pip config set global.index-url https://pypi.tuna.tsinghua.ed原创 2021-12-05 10:20:57 · 3360 阅读 · 0 评论 -
Linux No module named ‘CommandNotFound‘ 解决方法
问题linux安装多版本python时的一个遗留问题, 如果修改了默认系统的/usr/bin/python的软连接到新安装的版本, 可以会报错如下Traceback (most recent call last): File "/usr/lib/cnf-update-db", line 8, in <module> from CommandNotFound.db.creator import DbCreatorModuleNotFoundError: No module nam原创 2021-09-05 12:28:31 · 17233 阅读 · 4 评论 -
python面向对象学习笔记11 - 多态与抽象
多态主要指类的具有多种延伸形态, 和调用时的多种形态在python中体现为动态类型, 动态语言中关注的是对象的属性和方法, 而不是类型本质上动态语言不需要多态这个特性, 因为语言本身就是多态的使用多态实现灵活使用不同子类class cal: def func(self, a, b): print("pass") passclass add(cal): def func(self, a, b): print(a + b) return a + bclass minus(c原创 2021-07-02 15:22:44 · 156 阅读 · 0 评论 -
python面向对象学习笔记10 - 封装与继承
封装对外隐藏内部实现细节, 外界调用只需要关注接口目的方便调用提高数据安全性利于代码维护继承面向对象重要的一部分, 内容比较多名称术语父类, 超类, 基类子类, 派生类继承关系, 是资源重用, 包括属性和方法注意type和object的关系(1) 元类type继承自object(2) 而object是type的子类class A: passprint(A.__class__)print(object.__class__)print(type.__bases__)原创 2021-07-02 14:25:36 · 130 阅读 · 0 评论 -
python面向对象学习笔记9 - 内存机制
生命周期一个对象被创建时, 系统会在内存分配空间进行存储, 不再使用会进行释放, 存在于内存空间的时间段为对象的生命周期监听对象生命过程class person: def __new__(cls, *args, **kwargs): print("拦截对象创建") pass def __init__(self): print("初始化") pass def __del__(self): print("释放")p = Person()del pprint(p)原创 2021-06-30 16:18:54 · 213 阅读 · 1 评论 -
python面向对象学习笔记8 - 描述器
描述器通过修饰实现数据/格式检查class Person: def __init__(self): self.__age = 10 def get_age(self): return self.__age def set_age(self, value): if value < 0: value = 0 self.__age = value def del_age(self): del self.__age age = property(get_ag原创 2021-06-30 13:56:19 · 124 阅读 · 0 评论 -
python面向对象学习笔记7 - 内置方法
索引操作通过方法实现对象类似的列表/字典的索引操作class Person: def __init__(self): self.cache = {} def __setitem__(self, key, value): # print("setiem", key, value) self.cache[key] = value def __getitem__(self, key): # print("setitem", key) return self.cache[ke原创 2021-06-30 10:52:31 · 143 阅读 · 0 评论 -
python面向对象学习笔记6 - 私有化
私有化属性非私有属性访问范围包括类的外部, 设置私有化后只有类内部可以访问和使用, 目的是保证数据安全性Python本身没有私有化支持, 可以添加前下划线完成伪私有效果x # 公有属性 _y # 单下划线 受保护属性__z # 双下划线 私有属性# 访问范围 # 类内部 # 子类内部 # 模块内其他位置 # 跨模块访问公有属性访问class Animal: x = 1 def test(self): print(Animal.x) print(self.x原创 2021-06-24 15:46:25 · 181 阅读 · 0 评论 -
python面向对象学习笔记5 - 类对象
元类创建类对象的类. 对象被实例化之后, 通过__class__可以找到创建该对象的类, 同样类的__class__一样可以索引到元类type, 元类的__class__索引到自身.num = 1print(num.__class__.__class__)print(int.__class__)print(int.__class__.__class__)print(type.__class__)类创建type既是元类也是函数, 可以创建类对象def func(): print("fun原创 2021-05-28 10:49:42 · 99 阅读 · 2 评论 -
python面向对象学习笔记4 - 方法
方法定义类中的函数称为方法, 不同于外面单独定义的函数注意区分不同的方法类型:实例方法类方法静态方法class Person: # 实例方法 def objfunc(self): print("实例方法", self) # 类方法 @classmethod def classfunc(cls): print("类方法", cls) # 静态方法 @staticmethod def staticfunc(): print("静态方法")self接收的是实原创 2021-05-27 23:04:30 · 103 阅读 · 0 评论 -
python面向对象学习笔记3 - 属性操作
对象属性添加属性# 定义类class Example: pass# 实例化对象Exm = Example()# 增加属性, 直接引用和赋值Exm.test = 1# 验证添加的属性print(Exm.test)# 打印对象所有属性print(Exm.__dict__)查询属性print(Exm.test)print(Exm.test_not_exist) # 访问即查询修改属性# 已有可变属性, 赋值即修改Exm.test = 2print(Exm.test)原创 2021-05-27 21:52:35 · 93 阅读 · 0 评论 -
python面向对象学习笔记2 - 类
概念对具体对象特征的抽象, 包括名称, 属性和方法. 类的作用是生成具体的对象.两者关系, 对象抽象为类, 类实例化为对象.定义类class 类名类名的规范: 大驼峰, 首字母大写(类包括经典类和新式类class ClassName: pass # create class实例化ClassName()# create object底层运作机制内存保存类, 用一个变量T索引, 即类名__name__, 实例化一个对象O之后, O所以到对象, 这个对象也是内存中的数据, 包含一个原创 2021-05-27 15:49:53 · 82 阅读 · 0 评论 -
python面向对象学习笔记1 - 基本概念
面向过程和面向对象的差异面向过程和面向对象均为解决问题的思路面向过程是关注问题的每一个步骤面向对象是关注问题所需要的的对象简单理解是将解决问题的过程拆分成若干个对象的函数, 每个对象负责一部分工作, 然后通过对象解决整个任务. 类似模块化设计系统, 每个模块就是一个对象, 每个模块负责不同的功能, 多个模块组合就是一个完整系统.面向过程和面向对象的对比面向对象其实是面向过程的封装, 面向过程的编程需要分解任务的能力, 完成步骤设计, 再逐一实现.面向对象编程需要按功能划分对象, 然后找到对原创 2021-05-27 15:05:38 · 90 阅读 · 0 评论 -
python批量修改文件名
主要依据菜鸟教程就当顺便做一个学习笔记需求通常有多个文件名很混乱的时候, 需要重命名方便查看, 比如课程ppt, pdf, 有时名字设置不工整, 不方便管理和按顺序检查, 但人工修改又比较麻烦, 所以脚本走一波.代码import ospath = ".\\Micro8-master\\" # set file path #获取该目录下所有文件,存入列表中fileList = os.listdir(path)# for fl in fileList:# print(f原创 2021-04-22 17:16:36 · 207 阅读 · 2 评论 -
python缩进玄学记录 - IndentationError:unindent does not match any outer indentation level
查看了缩进, 看起来完全没有问题, 但就是报缩进错误, 手抄一份一模一样的代码, 结果没问题…??????????????????def cn2num(cn:str) -> float: ans = 0.0 length = len(cn) start = 0 if cn[0] in CN_UNIT: ans += CN_UNIT[cn[0]] start = 1 for i in range(start, len原创 2021-04-22 17:07:20 · 96 阅读 · 1 评论 -
python大写数字转阿拉伯数字脚本
前言在中文支票上经常会遇到大写数字格式, 如果有一堆账本记录在Excel文档里, 需要转换格式成带小数点的阿拉伯数字.需求比如转化如下的数字成小数代码import xlrdfrom word2number import w2nfile = 'bills.xlsx' # change filenameCN_NUM = { '〇' : 0, '一' : 1, '二' : 2, '三' : 3, '四' : 4, '五' : 5, '六' : 6, '七' : 7, '八' : 8,原创 2021-04-22 16:16:08 · 735 阅读 · 0 评论 -
linux多python版本安装和切换
因为python更新迭代很快, 但是第三方库不能及时跟上版本更新, 所以有时为了跑不同软件, 需要安装多个python版本, 所以需要版本管理, 方便切换.安装sudo add-apt-repository ppa:deadsnakes/ppasudo apt updatesudo apt install python2.7sudo apt install python3.5sudo apt install python3.6sudo apt install python3.7sudo ap原创 2021-04-01 23:42:43 · 6904 阅读 · 0 评论 -
python list常用操作汇总
生成全0数组n = 100temp = [0 for _ in range(n)]判断是否为空temp = []if temp: print('empty')if not temp: print('not empty')模拟栈temp = []temp.append(num) # 压入栈temp.pop() # 弹出栈temp[-1] # 取最后一个元素模拟队列temp = []temp.append(num) # 加入队列temp.pop(0) # 出队列temp[0原创 2021-03-28 18:01:44 · 208 阅读 · 0 评论 -
python批量创建文件夹
有时需要创建一些同类型的文件夹保存阶段性的文件, 可以py脚本实现批量创建文件夹首先创建文件夹有两个api创建单层文件夹import ospath = "./dir_example"if not os.path.exists(path): os.mkdir(path)递归创建文件夹import ospath = "./dir_low/dir_high"if not os.path.exists(path): os.makedirs(path)生成1-n的文件夹imp原创 2021-02-03 22:02:04 · 447 阅读 · 0 评论 -
python利用优先队列取最大K个元素
利用priorityqueue取最大的K个元素在进行稍微大一点的数据排序时, 有时并不需要全部数据, 只需要前面的最大k个数, 如果用sorted([…])[::-1][:k]实现效率会低很多, 为了优化执行速度, 可以采用优先队列priorityqueue实现求最大的K个元素. 同时空间也可以得到明显优化import queueimport randomK = 12q = queue.PriorityQueue()tlist = []for ith in range(100):原创 2021-01-12 17:45:37 · 1038 阅读 · 0 评论 -
Python读取文本文件到数组
支持的格式有txt, dat, csv, mat等读入的数据存为float类型, 可以自定义数据之间的间隔符, 可以自定义列数colsimport numpy as npimport linecache# import osfilename = "data.dat"cols = 12 # number of columndivided_ch = ' ' # divided_character between numbersdef dat_to_matrix(filename):原创 2021-01-12 08:48:12 · 6795 阅读 · 0 评论