Python - 基础
文章平均质量分 60
Python - 基础
比特本特
[Python后端工程师]、[PG-DBA]
语言:Python,Go(学习中)
框架:Odoo、Django、Gin(学习中)
数据库:PostgreSQL、Redis
容器化:Docker
服务器:CentOS、Ubuntu
其它:HTML、CSS、JS、GIT
正在学习:ELK(Elasticsearch、Logstash、Kibana)、K8S、JQuery、Bootstrap5
具备证书:PCA、PCP、PCM(备考)
持续学习前后端各类技术,为成为真·全栈开发工程师而努力中
展开
-
Python | Iter/genartor | 一文了解迭代器、生成器的含义\区别\优缺点
Python | Iter/genartor | 一文了解迭代器、生成器的含义\区别\优缺点生成器是一种特殊类型的迭代器,使用函数来生成值,而不是一次性构建并存储在内存中,所以极大减少内存使用。 生成器函数使用`yield`语句产生值,而不是`return`。每次调用生成器的`__next__()`方法时,生成器函数会从上次`yield`语句的位置恢复执行,并继续执行直到遇到下一个`yield`语句或函数结束。 这样可以有效地处理大量数据,因为它们允许逐个生成值,而不需要一次性生成整个序列原创 2024-01-05 13:10:34 · 874 阅读 · 0 评论 -
Python | Package | Python的三种包安装方式(pip/whl/tar.gz)
Python | Package | Python的三种包安装方式(pip/whl/tar.gz)原创 2023-08-15 11:44:50 · 662 阅读 · 0 评论 -
Python | cx_Oracle | DPI-1047报错处理(Win\Mac\Linux)
Python | cx_Oracle | DPI-1047报错处理(Win\Mac\Linux)原创 2023-06-21 17:13:19 · 2203 阅读 · 0 评论 -
Python | 日志 | 一文理解 logging & loguru
loguru和logging都是Python中的日志库,用于记录和输出应用程序的运行日志。logging是python标准库中自带的模块,可以在Python标准库中直接使用。loguru则不是,需要使用pip或conda等包管理工具安装。综上所述,基于项目大小和模式选择略有不同,不过一般还是比较推荐使用loguru。毕竟在多进程下丢失日志真的让人无法接受,况且loguru使用还那么的方便。【关注】⭐️⭐️⭐️⭐️⭐️Kenny。原创 2023-03-27 21:45:00 · 3419 阅读 · 7 评论 -
Python | 线程锁 | 5分钟掌握【同步锁】(Threading.Lock)
`threading.Lock` 同步锁,可以用于保证多个线程对共享数据的独占访问。当多个线程或进程互相竞争同一组资源时,如果每个线程都持有一些资源,并且都在等待另一个线程释放它所需要的资源时,就会发生死锁。死锁的产生原因通常是由于多个线程对共享资源的竞争,同时又没有良好的资源分配策略或锁的获取顺序导致的。如果想要要避免死锁,就需要确保不同线程获取锁的顺序是一致的。原创 2023-02-20 21:02:16 · 5218 阅读 · 2 评论 -
Python | GIL锁 | 5分钟掌握【全局解释器锁】(GIL)
GIL(Global Interpreter Lock)全局解释器锁;GIL (Global Interpreter Lock) 是 Python 部分解释器的一个重要特性。GIL 是一个全局锁,它限制了【一个进程】一次只能有【一个线程】在运行 Python 解释器中的字节码。即使你的程序有多个线程,在任意时刻,只有一个线程可以执行 Python 代码。原创 2023-02-10 00:16:57 · 1890 阅读 · 0 评论 -
Python | Decimal | 小数计算误差(浮点数计算精度丢失)
Python | Decimal | 小数计算误差(浮点数计算精度丢失)编程语言中,浮点数(小数)四则运算总会出现一些与预期不符的情况,究其原因是因为计算机以二进制方式存储数据,对于小数的运算有天然的缺陷,计算机只能以极大限度的进行近似取值,于是精度问题就出现了。Python中,小数加减法出现的精度问题非常常见,一般使用decimal模块进行处理,因为是基于字符串进行处理的,所以在使用时一定注意前期转换为字符串,后期转换会对应的浮点类型。.........原创 2022-08-25 21:40:30 · 4279 阅读 · 0 评论 -
Python | eval、exec | TypeError: eval() takes no keyword arguments
eval TypeError: eval() takes no keyword argumentsexec TypeError: eval() takes no keyword arguments通常用作:eval('add(1,2)', globals(), locals())正确的写法是:eval('add(1,2)',{},{})或简写 eval('add(1,2)')或简写 exec('add(1,2)')原创 2022-08-18 13:29:29 · 1881 阅读 · 0 评论 -
Python | eval、exec | NameError: name ‘XXX‘ is not defined`
eval NameError: name 'XXX' is not definedexec NameError: name 'XXX' is not defined如果有新的变量定义,会将新变量更新到局部变量作用域locals()中,后续代码中使用新变量,系统将在globals()中寻找并返回值。中进行手动获取,如:z2 = locals()[‘z2’]。不更新,所以不会有新变量,就会报错新变量名称未定义,即。执行的代码块中存在使用全局变量或全局方法,则可能会报错。执行后,新变量会更新到。.......原创 2022-08-18 13:14:04 · 2213 阅读 · 0 评论 -
Python | eval、exec | 执行动态代码字符串
python eval, python exec. python执行动态代码表达式或动态代码块;①eval用于执行一行逻辑表达式字符串 ②exec用于执行代码块字符串;用法介绍:原创 2022-08-18 01:54:40 · 1996 阅读 · 0 评论 -
Python | Multithreading | 【3分钟】上手多线程
1. 一个简单的多线程from threading import Threadimport timedef func(i): print('Start Sub Thread: %d' % (i))if __name__ == '__main__': print('Start Main Thread') thread_list = [] for i in range(3): m = Thread(target=func, args=(i,))原创 2022-02-17 14:58:33 · 532 阅读 · 0 评论 -
Python | 密码验证 | pyotp+qrcode实现MFA生成与验证(基于Python2.7.13)
# -*- coding:utf-8 -*-import datetimeimport pyotpfrom qrcode import QRCodefrom qrcode import constants# 为了方便我用一个固定值测试# secret_key = pyotp.random_base32()secret_key = "IVMUUGHFE6XJ7YKX"def generate_opt(username, issuer_name): """ 生成WFA认证原创 2021-11-04 00:45:18 · 1542 阅读 · 0 评论 -
Python | PIP | Mac 换源
检查是否已存在pip.conf文件,若无需手动创建cd ~/.pip/pip.conf# cd: no such file or directory: ~/.pip/pip.conf# 若出现以上信息则说明无配置文件,需手动创建mkdir ~/.piptouch ~/.pip/pip.conf换源编辑pip.conf文件内容[global]index-url = https://pypi.tuna.tsinghua.edu.cn/simple其中 https://pypi.t..原创 2021-09-22 15:35:34 · 660 阅读 · 0 评论 -
Pycharm | 技巧 | 关闭开发工具后 Python.exe 还是在后台运行
pycharm首次运行程序关闭后会弹出一个对话框:选择Disconnect的话将会出现标题的情况,关闭了pycharm,但是刚刚运行的工程还在执行,端口等相关的资源也被占用。你可以勾选Remember复选框并点击Terminate按钮。如果你已经勾选了Remember复选框并点击了Disconnect按钮,你可以在Pycharm设置界面进行便更。Thanks for your reading.K.T....原创 2021-09-18 10:10:09 · 3708 阅读 · 0 评论 -
Python | 基础 | contextmanager
contextmanager 来自 contextlib 包,通常使用时要进行导入:from contextlib import contextmanagercontextmanager 作为上下文管理器,主要的作用就是在执行某些逻辑之前,做一些预备工作;执行完逻辑代码之后,做一些收尾和善后 工作。首先我们自己实现一个上下文管理器类,用于讲述一下基础原理。 # -*- coding:utf-8 -*- class MyNewClass(object): #执行with语句时,先执行.原创 2021-08-20 10:50:24 · 3169 阅读 · 3 评论 -
Python | glob 函数与中间*参数意义
def glob(pathname, *, recursive=False)1. 首先,关于方法中的*号参数,我们看三个例子:方法格式为:def fun(*args,**kwargs)# NO.1def func01(name, age, sex, color='yellow'): pass# NO.2def func02(name, *other, color='yellow'): pass# NO.3def func03(name, *, age, sex, colo原创 2021-05-18 00:50:31 · 608 阅读 · 0 评论 -
Python | Import 三种导入方式
@[TOC] 123import module 或 from module import class,function,propertyimportlib.import_module(name,package)__import__(name, globals=None, locals=None, fromlist=[],level=0)原创 2021-05-13 21:20:57 · 3693 阅读 · 0 评论 -
Odoo | Unittest | 单元测试
Odoo10版本1. 首先配置文件 odoo.conf 中必须开启测试功能: test_enable = True 2. 在你的模块中编写测试用例# 目录结构Γ-Your moduel|----...|----models|----tests|------__init__.py|------test_common_function.py|----...3. init.py文件中导入 test_common_functionfrom . import test_commo.原创 2021-04-27 20:33:00 · 666 阅读 · 0 评论 -
Odoo | 问题 | 缺失Less组件无法启动Odoo-解决办法(Odoo10)
运行odoo报错Could not execute command ‘lessc’首先下载并安装Node.js. https://nodejs.org/en/然后在终端安装less Mac: sudo npm install -g less sudo npm install -g less-plugin-clean-css Linux/Windows: npm install -g less npm install -g less-plugin-clean-css原创 2020-12-18 09:38:07 · 897 阅读 · 0 评论 -
Python-安装部分包报错解决办法汇总
1. ‘sasl.h’ file not foundMac上安装python-ldap==2.4.27时报错 ‘sasl.h’ file not found解决办法:pip install python-ldap==2.4.27 --global-option=build_ext --global-option="-I$(xcrun --show-sdk-path)/usr/include/sasl"原创 2020-12-18 01:38:03 · 502 阅读 · 0 评论 -
Python | freeze | 如何将Python已安装的库(pip list)导入与导出
1. 导出查看当前安装的包 pip list导出当前安装的包记录 pip freeze > ./requirements.txt2. 导入用anaconda创建一个虚拟环境 conda create -n py37 python=3.7激活当前py37环境MAC/Linux: source activate py37WIndows: activate py37导入安装之前的包列表 pip install -r ./requirements.txt原创 2020-12-18 01:28:23 · 9805 阅读 · 1 评论 -
Odoo-学习接触的Python库学习(持续)
Standard Librarygetpass基于unix类系统getpass()类似input(),只不过是针对于密码类的,输入时界面不显示.getuser()获取当前系统的用户名,获取顺序为LOGNAME, USER, LNAME and USERNAME,如果都获取不到可能会从用户数据库中读取用户名.pwd基于unix类系统pwd.getpwuid(uid)传入用户id 获取当前机器用户信息.pwd.getpwnam(uname)传入用户名称 获取当前机器用户信息.pwd.g原创 2020-11-27 09:48:53 · 267 阅读 · 0 评论 -
Python-什么是Mixin
Mixin1. 什么是MixinMixin(mix-in)混入,是一种设计思想或者设计模式,本身并不是代码逻辑或者方法,只是一种理念,很多面向对象的编程语言都有Mixin的设计模式。2. 为什么用MixinMixin,出现在多重继承的场景中,一般用于功能扩展,而不作为实体父级类。举个例子:# -*- coding:utf-8 -*-class A(): def func01(): print('A func01')class BMixin(): def flyable(): p原创 2020-11-24 18:56:17 · 688 阅读 · 1 评论 -
Python-继承模式学习笔记
Python继承模式首先讲一下传统的 深度优先 与 广度优先深度优先 从下到上 从左到右 (下上左右)广度优先 从左到右 从下到上 (左右下上)Python2继承采用深度优先:Python3继承采用广度优先(简单理解,后面给例子剖析并不是简单的广度):上述图树说明了继承关系,并用数字表示继承优先级。以上述图示的模型简单举例:# -*- coding:utf-8 -*-class A(): name = 'a'class B(A): xname = 'b'clas原创 2020-11-24 17:38:01 · 204 阅读 · 0 评论 -
Python | Pycharm | 快速统计项目代码行数
如何在pycharm中快速统计当前项目代码行数?正解:使用pycharm插件下载插件 Statistic将插件拖入pycharm自动重启pycharm点击下方的sheet页签Statistic在pycharm中选中项目包点击 Refresh on selection然后就可以通过详细的数据查看当前项目的各类代码行数了。你学废了吗?......原创 2020-09-28 16:04:11 · 13337 阅读 · 0 评论 -
Python-学习笔记-赋值和浅复制与深复制(copy&deepcopy)
Python-学习笔记-赋值和浅复制与深复制(copy&deepcopy)# -*- coding:utf-8 -*-###################################################################################### python序列分为 容器序列 和 扁平序列### ...原创 2019-12-27 23:50:39 · 228 阅读 · 0 评论 -
Python | Tools | 一遍就能学会使用Python效率监测工具cProfile(Odoo12同样适用)
## 1. 什么是cProfile&Profile?1. `cProfile`是使用`C语言`开发的Python方法分析器函数。2. `Profile`是参考cProfile以纯`Python语言`开发的分析函数,正因如此,`Profile`比`cProfile`在执行中更加`拉胯`。3. 两者分析完函数执行后,都会使用pstats模块结构化输出分析结果。ncalls 两个数字的含义 tottime percall cumtime percall filename 参数说明...原创 2019-12-06 03:12:08 · 817 阅读 · 2 评论 -
Odoo | 安装教程 | Window10安装(基于Odoo12)
工具anaconda3postgresql10odoopycharmnavcatMicrosoft Visual C++ 14.0git 安装Microsoft Visual C++ 14.0 下载安装postgresql10下载安装pycharm 下载安装navcat postgresql版 自行下载安装git 下载安装anaconda3 下载安装...原创 2019-12-06 02:00:40 · 1984 阅读 · 0 评论 -
Odoo | 技巧 | 个性化类-隐藏自定义筛选字段(基于Odoo12)
描述强迫症得我觉得 筛选 - 添加自定义筛选 - ID 很碍眼,这里显示的是所有的存储字段,我想把它去掉:安排在当前模型下继承fields_get方法:@api.modeldef fields_get(self, allfields=None, attributes=None): res = super(HrEmployee, self).fields_get(allfie...原创 2019-12-06 00:49:50 · 1565 阅读 · 0 评论 -
Odoo | 问题 | 解决Git克隆仓库出现的问题:RPC failed; curl 18 transfer closed with outstanding read data remain
我在获取Odoo源码的时候出现的问题:$ git clone https://gitee.com/mirrors/odoo.gitCloning into 'odoo'...remote: Enumerating objects: 2561901, done.remote: Counting objects: 100% (2561901/2561901), done.remote: Co...原创 2019-12-05 23:20:21 · 452 阅读 · 0 评论 -
Odoo | 入门 | (5)-特殊字段(基于Odoo12)
我们的大部分字段都是直接在数据库中存储和检索的。其实字段的值也可以通过调用model中的一个方法实时计算原创 2018-12-17 18:59:29 · 527 阅读 · 1 评论 -
Odoo | 入门 | (4)-继承模式(基于Odoo12)
继承模型继承Odoo提供了两种模型继承机制第一种继承允许在其他包(module)中继承修改当前包(module)的相关内容(inherit):1. 在已存在的model中继承新增字段2. 重写已存在model的字段定义3. 增加model约束4. 增加model方法5. 重写model中已存在的方法第二种继承允许连接到每一个继承的父级model,并且提供直接访问父级model...原创 2019-12-05 16:25:16 · 719 阅读 · 0 评论 -
Odoo | 入门 | (3)-模型关系(基于Odoo12)
模型(model)之间的关系简介模型与模型之间一定会存在某种联系,比如说一张销售订单与销售员和客户有关系,销售单和销售单行(产品)记录也有相互的联系。关系字段关系字段有三种:Many2one(other_model, ondelete='set null') 数据库外键,比如销售订单上会有一个客户字段,这个字段并不是一个普通的 字符串,他实际上是一个res.partn...原创 2019-12-05 14:30:31 · 436 阅读 · 0 评论 -
Odoo | 入门 | (2)-初识视图(基于Odoo12)
基础视图简介定义出的视图作用是将模型中的记录数据展示出来。每一种视图类型代表一个可视化模式。可以通过视图类别显示出通用的视图界面,也可以指定对应的记录id访问特定的记录。对于一般的请求,将使用正确且最低优先级的视图,每种类型最低优先级的视图是该类型的魔人视图。通用视图定义一个view记录是一个ir.ui.view模型的一条数据记录,视图类型影藏在arch的field标签属性中。vi...原创 2019-12-05 11:28:00 · 371 阅读 · 0 评论 -
Python | Anaconda | 安装与初识
Anaconda> 友情提问:到底该装 Python2 呢还是 Python3 ?为什么安装 Python 时总是出错?怎么安装工具包呢?为什么提示说在安装这个工具前必须先安装一堆其他不明所以的工具? ==Anaconda== - 一键式解决Python开发中的各种问题> 1. Anaconda、Conda和Miniconda 的区别Anaco...原创 2018-03-03 10:27:37 · 1240 阅读 · 0 评论 -
Odoo | 入门 | (1)-包与结构(基于Odoo12)
odoo的模块均以包(module)为基础管理,在odoo系统中我们可以选择性的安装需要的包。将包中的内容加载进数据库,进而达到新增逻辑或者修改逻辑的目的。原创 2019-12-04 17:07:57 · 722 阅读 · 0 评论 -
Python | 虚拟环境 | Virtualenv&Anaconda
虚拟环境 - Virtualenv virtualenv一个创建独立Python环境的工具简介 如果有两个应用分别使用的不同版本的环境,这个时候该怎么办?如果将所有的组建都安装在类似于应用主机上,则很可能应为升级了一个不应该升级的应用而停止运行。 或者说当一个应用在运行,你改变了它依赖的包或者升级了依赖库,都会使应用失效。 在这种情况中,virtualenv将帮助你创建...原创 2018-03-03 10:43:03 · 1157 阅读 · 0 评论 -
Odoo | 入门 | (8)-高阶视图(基于Odoo12)
高级视图Tree视图首先Tree视图支持通过属性去客户化标签的行为属性。decoration-{$name}: 允许去改变标签行文本的字段样式属性。decoration-{KaTeX parse error: Expected 'EOF', got '}' at position 5: name}̲="{value}",等号右边的值{KaTeX parse error: Expecte...原创 2018-12-18 09:43:34 · 418 阅读 · 0 评论 -
filter多个参数处理方法+Python的filter过滤器理解
filter()函数分析1.源码:def filter(function_or_none, sequence): # known special case of filter """ filter(function or None, sequence) -> list, tuple, or string Return those items of sequ原创 2017-08-31 11:25:16 · 8471 阅读 · 0 评论 -
Odoo | 技巧 | 打印功能-Excel之Xlwt解析(基于Odoo12)
注:标题001 为文章序列 希望自己以后的博客能更像一本工具书xlwt你问我这家伙全名叫什么?不知道 我猜应该是Excel Write的读音简写。所以xlrd应该就是Excel Read咯,哈哈哈原创 2019-07-09 16:04:54 · 738 阅读 · 2 评论