python理解
文章平均质量分 51
gold615
这个作者很懒,什么都没留下…
展开
-
如何在 python 中实现内建函数的重载
python 重载内建函数原创 2022-09-26 00:44:27 · 357 阅读 · 0 评论 -
python pickle 复原导致的变量关系丢失问题
运行 python 时,可以将当前的某些变量通过 pickle 序列化到二进制文件中;然后在需要时,再将这些变量还原,如以下代码:import picklef = open("abc.pickle", 'wb+')x = [1,2,3]ls = [[(23, 29), (22, 79)], 'hello信息', '35',x]num = 3.1415926pickle.dump(ls, f)pickle.dump(num, f)pickle.dump(x, f)print(id(x),id原创 2022-05-22 23:33:49 · 326 阅读 · 0 评论 -
windows python多进程的递归创建问题
在unix和linux上,multiprocessing.Process默认是使用fork创建一个子进程出来,然后在分裂的地方,子进程会调用指定的target中的函数,函数执行完毕则子进程也就结束了;而父进程则继续往下运行直到结束;所以以下代码在linux上没有任何问题:import multiprocessingimport time,osprint("????")def hehe(): while True: time.sleep(1)th1 = multiproce原创 2021-06-07 14:30:08 · 490 阅读 · 1 评论 -
python __add__ __iadd__
这是两个不同的类方法。假设对象是a,它执行下面两个动作:>>>a += 10>>>a = a + 10当一个对象执行+=时,会先查找对象的__iadd__方法,有这个方法的话,就调用该方法,没有则调用__add__;但是如果执=+,则直接调用对象的__add__方法。这两个方法都会返会内容,但返回的情况并不一样,对于前者来说,加是原地修改,返回对象是自己;对于后者来说,返回的是一个新对象。对于字符串 数字等这类不可变对象来说,没有__iadd__;而像数组之原创 2021-03-01 13:54:36 · 484 阅读 · 0 评论 -
生成pip可安装的自定义库
pip安装第三方库时,支持多种格式;基本要求是必须有setup.py文件。假设工程的目录结构如下:├── README.txt├── pagtest│ ├── __init__.py│ ├── abc│ │ ├── gzx│ │ │ └── zjj.html│ │ └── main1.go│ ├── def│ │ └── __init__.py│ ├── main.go│ ├── print1.py│ └── print原创 2020-12-07 23:57:52 · 424 阅读 · 0 评论 -
pip自定义安装位置
最近遇到一个需求,安装py包时,不放置在默认的site-packages下,而是放置在指定位置,类似于go get时会放置在指定的gopath下边一样,pip提供了这样的参数,使用target:pip install --target=path package基本命令如上,其中path是要安装的位置,而package则是要安装的包名;安装的包可能有自己的依赖,这些依赖也会被安装在这个目录下;项目中因为有requirements文件,所以我们的命令是:pip install -r requireme原创 2020-12-02 19:26:45 · 1071 阅读 · 0 评论 -
python __getattribute__ 的一个小利用
最近在写一个功能,要在paramiko包的基础上封装一层,提供更多的上传下载功能。代码包本身在发布前会打成pyd文件给用户使用,封装的时候没有使用直接的继承关系,而是在一个新的独立类中封装了一个connection对象作为类实例属性值,类似于下边这样:class SFTP: def __init__(self,conn): self.conn = conn然后实际使用的时候发现有个问题,就是用户其实可以通过dir的方式查到SFTP实例对象的属性值,本来加密的初衷就是不想让用户知道类的内部细节,原创 2020-10-08 00:26:24 · 182 阅读 · 0 评论