
python语法
蓝鲸123
做更好的自己
展开
-
python class 装饰器
import sysimport osimport functoolsimport inspectfrom collections import defaultdictimport jsondef evaluate(filename): with open(filename, "r") as evaluate_file: return evaluate_file.read()class Params(object): DEFAULT = object() def _原创 2021-05-06 13:28:35 · 533 阅读 · 0 评论 -
python with 语法糖通过contexlib实现
#coding=UTF-8import loggingfrom tensorflow.python.framework import deviceimport functoolsimport siximport abcclass Test(object): def __init__(self): print("hello") def __enter__(self): print("enter") def __exit__(self, exc_type, exc_原创 2021-04-15 21:48:46 · 225 阅读 · 0 评论 -
Centos 升级 python版本
下载python 2.7.12[root@openstack ~]# wget https://www.python.org/ftp/python/2.7.12/Python-2.7.12.tgz解压python 2.7.12[root@openstack ~]# tar -jxvf Python-2.7.12.tgz进入目录:[root@openstack ~]# cd Python-2.7.12安装python[root@openstack ~]# ./configure[root@op转载 2020-07-21 01:09:41 · 516 阅读 · 0 评论 -
从tensorflow的LazyLoader谈python的importlib
从LayzerLoader 讲起python 的module 可以通过三种方式进行importing,分别是import, importlib.import_module(), __import__。import 语句结合了两个操作:首先搜索指定的模块,然后将搜索结果绑定到当前的作用域。import() 直接调用,将会执行模块的搜索以及在找到时进行模块的创建。例如: module2 = __import__ ("data.api") print(module2.__dict__) """原创 2020-07-02 15:57:28 · 2560 阅读 · 0 评论 -
python 多线程编程
轮询执行线程函数,设置超时器# 轮训查询一个变量,判断是否停止, 如果线程卡在IO上面,将永远无法执行完毕# 所以设置超时时间进行# 超时装饰器from threading import Threadimport sysimport timedef set_timeout(num, call_back): def warp(function): def warp2(*args, **kw): class MyThread(Thread):原创 2020-05-27 09:32:22 · 343 阅读 · 0 评论 -
python 扩展c extention
首先我们会使用PyMODINIT_FUNC 和PyMethodDef 进行创建c的扩展。关于PyMethodDef可以的参数含义可以在官网查看第一步// 简单的say hello 函数static PyObject* say_hello(PyObject* self, PyObject* args) { const char* name; if (!PyArg_ParseTuple(args, "s", &name)) return NULL; pr原创 2020-05-25 20:40:29 · 490 阅读 · 1 评论 -
将字典保存成json 格式文件
将字典保存成json 格式文件:data = dict(d=[1,2],label2id=[3,4],id2label=[5,6])import jsonwith open(outfile,'w') as f: json.dump(data,f)原创 2018-07-03 23:48:31 · 16263 阅读 · 0 评论 -
Python RE模块中search()和match()的区别
match()函数只检测RE是不是在string的开始位置匹配,search()会扫描整个string查找匹配;也就是说match()只有在0位置匹配成功的话才有返回,如果不是开始位置匹配成功的话,match()就返回none。例如: print(re.match(‘super’, ‘superstition’).span()) 会返回(0, 5)而print(re.ma...转载 2018-07-10 19:53:32 · 584 阅读 · 0 评论 -
python中defaultdict的用法
当使用普通的字典时,用法一般是dict={},添加元素的只需要dict[element] =value即,调用的时候也是如此,dict[element] = xxx,但前提是element字典里,如果不在字典里就会报错。这时defaultdict就能排上用场了,defaultdict的作用是在于,当字典里的key不存在但被查找时,返回的不是keyError而是一个默认值。例子:from...原创 2018-07-11 10:57:56 · 1319 阅读 · 0 评论 -
re.sub 使用方法
re.sub功能是对于一个输入的字符串,利用正则表达式,来实现字符串替换处理的功能返回处理后的字符串re.sub共有五个参数三个必选参数 pattern,repl,string两个可选参数count,flagspattern,表示正则中的模式字符串 反斜杠加数字(\n)表示对应匹配的组也就是用之前匹配到的字符串补充到这个位置,例如将“hello python,ni hao c...原创 2018-07-11 11:11:46 · 3955 阅读 · 1 评论 -
python OrderedDict使用
很多人认为python中的字典是无序的,因为它是按照hash来存储的,但是python中有个模块collections(英文,收集、集合),里面自带了一个子类 OrderedDict,实现了对字典对象中元素的排序。 使用dict时,Key是无序的。在对dict做迭代时,我们无法确定Key的顺序。 如果要保持Key的顺序,可以用OrderedDict: 请看下面的实例:import ...原创 2018-07-05 20:17:03 · 2781 阅读 · 0 评论 -
Fire() 实现运行单个函数
import firedef main(**kwargs): print("begin input...") for k,v in kwargs.items(): print(k,v)print("hello input")fire.Fire()# if __name__ == "__main__":# fire.Fire()输出:...原创 2018-07-13 09:39:36 · 1027 阅读 · 0 评论 -
python类函数__iter__
__iter__:类的迭代器可以使用for循环迭代类例子:##使用genism的word2vecimport os#import gensimclass Mysentences(object): def __init__(self,dirname): self.dirname=dirname def __iter__(self): ...原创 2018-07-07 14:41:45 · 2634 阅读 · 0 评论 -
python property关键字
class Metric(object): def __init__(self, name): self.name = name self.sum = t(0.) self.n = t(0.) def update(self, val): self.sum += val self.n += 1 ...原创 2018-10-17 09:42:10 · 458 阅读 · 0 评论 -
Python 内置函数 dir()
在 Python 中,有大量的内置模块,模块中的定义(例如:变量、函数、类)众多,不可能全部都记住,这时 dir() 函数就非常有用了。dir() 是一个内置函数,用于列出对象的所有属性及方法。在 Python 中,一切皆对象,模块也不例外,所以模块也可以使用 dir()。除了常用定义外,其它的不需要全部记住它,交给 dir() 就好了。基本场景:如果 dir() 没有参数,则返回当前作用域...转载 2018-10-26 11:18:41 · 464 阅读 · 0 评论 -
argparse用法
从下面的代码中main.py说明:import argparseparser = argparse.ArgumentParser(description='PyTorch CIFAR10 Training')parser.add_argument('--lr', default=0.1, type=float, help='learning rate')parser.add_argum...原创 2018-06-23 13:05:28 · 1223 阅读 · 0 评论 -
Python3中遇到UnicodeEncodeError: 'ascii' codec can't encode characters in ordinal not in range(128)
在 linux服务器上运行代码报错: Python3中遇到UnicodeEncodeError: ‘ascii’ codec can’t encode characters in ordinal not in range(128) 但是在windows上面运行代码正常。 原因是因为:linux系统语言导致的。 查看了一下系统环境编码>>> import sys&...原创 2018-06-13 21:22:22 · 37131 阅读 · 9 评论 -
python 的map与zip 函数
一、map函数首先Python中的map函数是很简单的。意为将第二个参数(一般是数组)中的每一个项,处理为第一个参数的类型。比如如下的代码,将a这个list的每一项都从int类型转化为str类型。#-*-coding:utf-8-*- a=[1,2,3]; print map(str,a); 运行结果如下: [‘1’,’2’,’3’] 而如下的数组,则对a这个二维数组中的...原创 2018-05-19 15:20:14 · 636 阅读 · 0 评论 -
python numpy中nonzero()的用法
当使用布尔数组直接作为下标对象或者元组下标对象中有布尔数组时,都相当于用nonzero()将布尔数组转换成一组整数数组,然后使用整数数组进行下标运算。nonzeros(a)返回数组a中值不为零的元素的下标,它的返回值是一个长度为a.ndim(数组a的轴数)的元组,元组的每个元素都是一个整数数组,其值为非零元素的下标在对应轴上的值。例如对于一维布尔数组b1,nonzero(b1)所得到的是一个长...原创 2018-05-19 15:47:41 · 384 阅读 · 0 评论 -
Python3—UnicodeEncodeError 'ascii' codec can't encode characters in position 0-1
问题描述 使用python3的时候,报错信息 UnicodeEncodeError: ‘ascii’ codec can’t encode characters in position 0-1: ordinal not in range(128)网上解释网上给出的解释:错误的使用decode和encode方法会出现这种异常。例如使用decode方法将Unicode字符串转化的时候:...转载 2018-05-25 13:40:49 · 6029 阅读 · 0 评论 -
ubuntu 安装pip3 遇到Ignoring ensurepip failure: pip 8.1.1 requires SSL/TLS错误
3.5版本之后的会自动安装pip,所以我们直接从官网下载3.5.2,下载地址:https://www.python.org/ftp/python/下载以后,可以用命令解压,也可以右键进行解压,tar zxvf Python-3.5.2.tgz 切换目录cd Python-3.5.2准备安装./configure sudo make sudo make install这...原创 2018-05-25 13:52:26 · 2635 阅读 · 1 评论 -
Linux 升级 Python 至 3.x
简述CentOS 7 中默认安装了 Python,版本比较低(2.7.5),为了使用新版 3.x,需要对旧版本进行升级。由于很多基本的命令、软件包都依赖旧版本,比如:yum。所以,在更新 Python 时,建议不要删除旧版本(新旧版本可以共存)查看 Python 版本号当 Linux 上安装 Python 后(默认安装),只需要输入简单的命令,就可以查看 Python 的版本号...转载 2018-05-25 23:06:47 · 953 阅读 · 0 评论 -
centos6 python 安装 sqlite 解决 No module named ‘_sqlite3′
出现 No module named ‘_sqlite3′ >>> import sqlite3Traceback (most recent call last): File "<stdin>", line 1, in <module> File "/opt/Python-3.5.0/python350/lib/python3.5/sqli...转载 2018-05-25 23:13:25 · 971 阅读 · 0 评论 -
python 创建一维的0向量
第一种方法: A=[0]*8第二种方法: import numpy as np A=np.zeros(8)原创 2018-05-16 16:49:51 · 24778 阅读 · 0 评论 -
set集合的合并
操作符|用于求两个集合的并集,这也是一个按位或(OR)操作符(参见附录C)。在数学符号表示上,按位或操作与集合求并操作使用相同记号。a=set([1,2,4])b=set([4,5,6])print a|b输出: set([1, 2, 4, 5, 6])...原创 2018-05-16 16:53:43 · 5590 阅读 · 0 评论 -
数据库中的空值与NULL的区别以及python中的NaN和None
数据库里面的”空值”有两种:空字符(“”)、空值(NULL)。 两种存储方式在数据库中都很常见,实际中根据业务或者个人习惯可以用这两种方式来存储“空值”。那这两种到底有什么区别,下面通过例子直接来展示:-- 创建表testcreate table `test` (`id` int not null ,`name` varchar(255) null ,`date` tim...转载 2018-05-24 13:43:48 · 9004 阅读 · 0 评论 -
python pandas消除空值和空格以及 Nan数据替换
在人工采集数据时,经常有可能把空值和空格混在一起,一般也注意不到在本来为空的单元格里加入了空格。这就给做数据处理的人带来了麻烦,因为空值和空格都是代表的无数据,而pandas中Series的方法notnull()会把有空格的数据也纳入进来,这样就不能完整地得到我们想要的数据了,这里给出一个简单的方法处理该问题。方法1:既然我们认为空值和空格都代表无数据,那么可以先得到这两种情况...原创 2018-05-24 13:47:57 · 71981 阅读 · 0 评论 -
pandas中apply函数的用法
apply函数可以对DataFrame对象进行操作,既可以作用于一行或者一列的元素,也可以作用于单个元素。例:列元素data=np.arange(0,16).reshape(4,4)data=pd.DataFrame(data,columns=['0','1','2','3'])def f(x): return x-1print(data)print(data.ix[:...转载 2018-05-24 15:51:30 · 2388 阅读 · 0 评论 -
python---pandas.merge使用
merge 函数参数merge: 合并数据集, 通过left, right确定连接字段,默认是两个数据集相同的字段 参数 说明 left 参与合并的左侧DataFrame right 参与合并的右侧DataFrame how 连接方式:‘inner’(默认);还有,‘outer’、‘left’、‘right’ on 用于连接的列名,必须同时存在于左右两个DataFrame对...原创 2018-05-24 16:08:42 · 715 阅读 · 0 评论 -
Pandas 行列操作
行选择 不管何时,你调用了一个方法返回或者打印一个DataFrame时,最左边的一列必然是索引值,可以通过index属性来直接访问DataFrame的索引值。import pandas as pddf1=pd.DataFrame({'name':['kate','herz','catherine','sally'], 'age':[25,28,39,...原创 2018-05-24 16:24:37 · 937 阅读 · 0 评论 -
通过Pandas读取大文件
当数据文件过大时,由于计算机内存有限,需要对大文件进行分块读取:import pandas as pdf = open('E:/学习相关/Python/数据样例/用户侧数据/test数据.csv')reader = pd.read_csv(f, sep=',', iterator=True)loop = TruechunkSize = 100000chunks = []whi...原创 2018-05-24 16:28:13 · 1993 阅读 · 0 评论 -
numpy的getA()/getA1()/getH()/getI()函数
1.mat.getA() 将自身矩阵变量转化为ndarray类型的变量。 等价于np.asarray(self) 原因: mat 不可以直接通过index访问元素,例如下面的mat[3][6]就会报错。a = np.mat([[1,2],[3,4]])aOut[251]: matrix([[1, 2], [3, 4]])a.getA()Out[252]...转载 2018-05-17 13:04:58 · 847 阅读 · 0 评论