自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

百无一用生

一个老头学编程

  • 博客(84)
  • 收藏
  • 关注

原创 我的第一个玩具程序,留个记号。

我的第一个玩具程序,留做记号,代表了从学习 Python 到现在的高度,希望有一天能自己回过头来嘲讽现在的自己。# coding: utf-8__author__ = "Deng"import random, time, threading, osclass SearchDiffer(object): def __init__(self,grade): # 初始化方法...

2018-12-07 21:58:13 589

原创 第一篇置顶

哥们不是程序猿学习编程,只是兴趣,也不是唯一兴趣。算是新兴的兴趣吧。作为一个七零后,已过不惑之年,能有这个兴趣,我自己也觉得我是个奇葩。学习笔记纯自己手打,但是基本上是书上代码自己照着再撸一遍,算是做个记号。既然是学习笔记,为了尊重原作者的劳动,每篇笔记都发表为转载。...

2018-11-24 00:16:15 133

转载 python cookbook 学习笔记 第七章 函数(5) 定义有默认参数的函数

定义有默认参数的函数问题:想定义一个函数或者方法,他的参数是一个或多个可选的并且有一个默认值。解决方案:定义一个有可选参数的函数非常简单,直接在函数定义中给参数指定一个默然值,并放到参数列表最后就可以了。比如:#def spam(a, b= 42):# print(a, b)#spam(1) # 1 42#spam(1, 2) # 1 2如果默认参数是一个可修改的...

2018-12-27 18:55:33 196

转载 python cookbook 学习笔记 第七章 函数(4) 返回多个值的函数

返回多个值的函数问题:构造一个返回多个值的函数解决方案:为了能够返回多个值,函数直接 return 一个元组就行了。比如:def myfun(): return 1, 2, 3a, b, c, = myfun()print(a) # 1print(b) # 2print(c) # 3(书上这里没有做过多的说明,是定义了a, b, c三个变量...

2018-12-27 18:51:01 328

转载 python cookbook 学习笔记 第七章 函数(3) 给函数参数增加元信息

给函数参数增加元信息问题:写好一个函数,想为这个函数的参数增加一些额外的信息,其他使用者可以更清楚的知道这个函数如 何使用。解决方案:使用函数参数注解是一个很好的办法,它能提示应该怎样正确使用这个函数。比如:def add(x:int, y:int) ->int: return x + yprint(help(add))"""Help on func...

2018-12-27 18:48:24 228

转载 python cookbook 学习笔记 第七章 函数(2) 只接受关键字参数的函数

只接受关键字参数的函数问题:希望函数的某些参数强制使用关键字参数传递解决方案:将强制关键字参数放到某个*参数或者某个 * 后面就能达到这种效果。比如:def recv(maxsize, *, block): pass利用这种技术,我们还能再接受任意多个位置参数的函数中指定关键字参数。比如:def mininum(*values, clip= None):...

2018-12-27 18:45:21 179 1

转载 python cookbook 学习笔记 第七章 函数(1)可接受任意数量参数的函数

可接受任意数量参数的函数问题:想构建一个可以接受任意数量参数的函数解决方案:为了能让一个函数接受任意数量的位置参数,可以使用一个*参数。比如:def avg(first, *args): return(first + sum(args))/(1 + len(args))x = avg(1, 2, 3, 4)print(x) # 10/4 = 2.5...

2018-12-27 18:41:04 210

原创 使用循环语句+remove()方法删除列表元素的小坑

alist = [{"ID": "001", "name": "111"}, {"ID": "002", "name": "222"}, {"ID":

2018-12-18 02:03:45 1967

原创 可调用对象的魔术方法,__call__()方法。

__call__()魔术方法:原理很简单,应用很广泛,直接上代码class Coordiate(object): def __init__(self, x= 0, y= 0): self.x = x self.y = y def __call__(self, x, y): # 实现__call__方法后,可以像使用函数或者说像类方法...

2018-12-17 23:57:05 513

原创 创建自己的序列,让其支持容器类型的操作。

创建属于自己的序列如果想要像操作序列那样,操作某些类型相同的对象,但是原生的对象不支持容器类型的操作。这个时候就需创建自己的序列。class User(object): def __init__(self, id_list= None): self.id_list = id_list def __repr__(self): # f"User...

2018-12-17 23:26:26 118

原创 Python 3.6以后版本的格式化输出

Python 3.6版本以后允许在字符串前置f的形式代替 .format语句class Person(object): def __init__(self,name,age): self.name = name self.age = age def __str__(self): return f"{self.name},{se...

2018-12-17 09:39:51 2192

原创 控制属性访问的魔术方法

__ getattr__(self, item)的使用场景访问一个对象属性的时候,如果属性不存在,就会去执行__getattr__()方法,如果属性存在,就不会调用__getattr__()方法import loggingclass Person(object): def __init__(self, name): self.name = name ...

2018-12-16 20:23:20 198 1

原创 增量赋值运算的魔术方法

增量赋值的运算魔术方法__iadd__(self,other)魔术方法:在给对象做+=运算的时候会执行的方法。__isub__(self,other)魔术方法:在给对象做-=运算的时候会执行的方法。__imul__(self,other)魔术方法:在给对象做*=运算的时候会执行的方法。idiv(self,other)魔术方法:在给对象做/=运算的时候会执行的方法。(Python2)...

2018-12-16 17:38:00 298

原创 二元运算符的魔术方法

二元运算符的魔术方法class Coordinate(object): def __init__(self, x, y): self.x = x self.y = y def __add__(self, other): # 加法操作 new_coordinate = Coordinate(self.x+other.x, sel...

2018-12-16 17:08:40 371

原创 Python中一元运算符的魔术方法

一元运算符的魔术方法class Coordinate(object): def __init__(self, x, y): self.x = x self.y = y def __pos__(self): # 在对象前加“+”的操作 return self def __neg__(self): # 在对象前加“-”的操作...

2018-12-16 16:29:28 3219

原创 Python3中用于比较的魔术方法

Python3中用于比较的魔术方法class Person(object): def __init__(self, name, gender, age, weight): self.name = name self.gender = gender self.age = age self.weight = weight...

2018-12-16 15:32:50 337

原创 Python 异常处理

Python- 异常处理:异常处理的语法: try: ... # 可能会出现的异常 except: ... # 如果出现异常时执行的代码 else: ... # 没有异常时执行的代码 finally: ... # 如论是否抛出异常都会执行的代码无论什么异常,都做统一处理: try: a = 1 b = 0 c = a/b...

2018-12-14 23:21:32 122

原创 Python- 文件指针定位之 seek() 方法

文件指针定位之 seek 方法seek(offset, from)offset :文件指针偏移量(很多博客在这里将offset定义为指针偏移量,但是目前我的看法是这里定义为指针的相对位置)from : 0-文件开头 1-当前位置 2-文件末尾(这里的0,1,2只是代表了文件位置,而不是说0,1,2可以参与指针偏移的计算。from 是可选项,默认为0.目前接触到的知识,我自己并没有弄明白f...

2018-12-09 01:22:47 19779 2

原创 filter()、map()、reduce()函数的使用

filter()、map()、reduce()三个函数都可以传入 函数、列表等可迭代类型 的两个实参。语法格式:filter(函数,列表) map(函数,列表) reduce(函数,列表)用法举例:x = [1, 2, 3, 4, 5]y = filter(lambda i: i>3, x)print(type(y))print(list(y))y = ma...

2018-12-08 18:26:01 1830 1

转载 python cookbook 学习笔记 第五章 文件与IO (10) 内存映射的二进制文件

内存映射的二进制文件问题:想内存映射一个二进制文件到一个可变字节数组中,目的可能是为了随机访问它的内容或原地做些修改。解决方案:使用 mmap 模块来内存映射文件。下面是一个工具函数,演示了如何打开一个文件并以一种便捷方式内存映射这个文件。import osimport mmapdef memory_map(filename, access= mmap.ACCESS...

2018-12-08 00:39:43 219

转载 python cookbook 学习笔记 第五章 文件与IO (9) 读取二进制数据到可变缓冲区中

读取二进制数据到可变缓冲区中问题:想直接读取二进制数据到一个可变缓冲区中,而不需要做任何的中间复制操作,或者想原地修改数据并将它写回 到一个文件中去。解决方案:为了读取数据到一个可变数组中,可使用文件对象的 readinto()方法。比如:import os.pathdef read_buffer(filename): buf = bytearray(os.p...

2018-12-08 00:34:50 171

转载 python cookbook 学习笔记 第五章 文件与IO (8) 固定大小记录的文件迭代

固定大小记录的文件迭代问题:想在一个固定长度记录或者数据块的集合上迭代,二不是在一个文件中一行一行的迭代解决方案:通过下面这个小技巧使用 iter 和 functools.partial()函数:from functools import partialRECORD_SIZE = 32with open("somefile.txt", "rb") as f: ...

2018-12-08 00:30:59 100

转载 python cookbook 学习笔记 第五章 文件与IO (7) 读写压缩文件

读写压缩文件问题:想读写一个 gzip 或者 bz2 格式的压缩文件解决方案:gzip 和 bz2 模块可以很容易的处理这些文件。两个模块都为 open() 函数提供了另外的实现来解决这个问题。比 如,为了以文本形式读取压缩文件,可以这样做:import gzipwith gzip.open("somefile.gz", "rt") as f: text = f...

2018-12-08 00:27:51 114

转载 python cookbook 学习笔记 第五章 文件与IO (6) 使用操作类文件对象的程序来操作文本或者二进制字符串

字符串的 I/O 操作问题:使用操作类文件对象的程序来操作文本或二进制字符串解决方案:`- 使用 io.StringIO()和io.BytesIO()类来创建文件对象操作字符串数据:import ios = io.StringIO()s.write("Hello World\n") # 12print(s) # <_io.StringIO object at ...

2018-12-08 00:24:21 91

转载 python cookbook 学习笔记 第五章 文件与IO (5) 文件不存在才能写入

文件不存在才能写入问题:想向一个文件中写入数据,但前提是这个文件不存在,也就是说不允许覆盖已经存在的文件。解决方案:可以在 open()函数中使用 x 模式来代替w模式的方法解决这个问题:with open("somefile.txt", "xt") as f: f.write("Hello world!\n")# FileExistsError: [Errn...

2018-12-08 00:20:10 103

转载 python cookbook 学习笔记 第五章 文件与IO (4) 读写字节数据

读写字节数据问题:想读取二进制文件,比如图片,声音文件等等。解决方案:使用模式为rb 或者 wb 的 open()函数来读取或者写入二进制数据:with open("1.jpg","rb") as f,\ open("test1.jpg","wb") as w: data = f.read() w.write(data)在读取二进制...

2018-12-08 00:16:18 134

转载 python cookbook 学习笔记 第五章 文件与IO (3) 使用其他分割符或者终止符来打印

使用其他分割符或者行终止符打印问题:想使用print()函数输出数据,但是想改变默认的分割符或者行尾符。解决方案:可以在 print() 函数中使用 sep 和 end 关键字参数:print("ACME", 50, 91.5) # ACME 50 91.5print("ACME", 50, 91,5, sep= ",") # ACME,50,91,5print(...

2018-12-08 00:12:14 108

转载 python cookbook 学习笔记 第五章 文件与IO (2) 打印输出至文本文件

打印输出至文本文件问题:想将print()函数的输出重定向到一个文件中去解决方案:在print()函数中指定 file 关键字参数,像下面这样:with open("d:/work/test.txt", "wt") as f: print("hello world!", file= f)with open(r"E:\test\python进阶\Python_c...

2018-12-08 00:07:16 106

原创 水仙花数字的两种实现方法

第一种方法: 用数学的角度去思考for i in range(100,1000): # 获得百、十、千位上的数字 a = int(i/100 % 10 ) b = int(i/10 % 10) c = int(i % 10) if a**3 + b**3 + c**3 == i: print(i, end= " ")...

2018-12-07 23:54:17 1579

转载 python cookbook 学习笔记 第五章 文件与IO (1)读写文本数据

读写文本数据问题:需要读写各种不同编码的文本数据,比如ASCII, UTF-8, UTF-16编码等。解决方案:使用带有rt模式的 open()函数读取文本文件:with open("somefile.txt", "rt") as f: data = f.read()with open("somefile.txt", "rt") as f: for l...

2018-12-07 00:42:14 161

原创 三种方法计算奇偶数的和

方法1:def main(num): result_n, result_q = 0, 0 for i in range(1, num+1): if i%2 == 0: result_n += i elif i%2 == 1: result_q += i print("奇数和:{}".f...

2018-12-05 01:38:54 2411

原创 使用reload()重新加载模块

import 在加载模块以后,自身会防止模块被重复加载。假如:有一个模块 A.py# A 模块def a(): print("我是A")In[1]:import AIn[2]:A.a()Out[2]:我是A这个时候修改A 模块内容:# A模块def a(): print("我是B")修改完成后再次导入A模块In[3]:import A # A模块...

2018-12-03 00:09:47 7727 2

原创 Python小技巧--利用列表、字典表达式代替if 分支语句

from datetime import datetime, timedeltaclass Date_today(object): def __init__(self): self.today = datetime.today() def next_day(self): self.tomorrow = self.today + ti...

2018-12-01 22:02:25 3442

转载 python cookbook 学习笔记 第四章 迭代器和生成器(16) 迭代器代替while 无限循环

迭代器代替 while 无限循环问题:在代码中使用 while 循环来迭代处理数据,因为它需要某个函数或者一般迭代模式中不同的测试条件。能不能用迭代 器来重写这个循环呢?解决方案:一个常见的 IO 操作程序可能会像下面这样:CHUNKSIZE = 8192def reader(s): while True: data = s.recv(CHUN...

2018-11-30 22:32:14 217

转载 python cookbook 学习笔记 第四章 迭代器和生成器(15) 顺序迭代合并后的排序迭代对象

顺序迭代合并后的排序迭代对象问题:有一系列排序序列,想将它们合并后得到一个排序序列并在上面迭代遍历。解决方案:heapq.merge()函数可以解决这个问题:import heapqa = [1, 4, 7, 10]b = [2, 5, 6, 11]for c in heapq.merge(a, b): print(c, end= " ") # 1 2 ...

2018-11-30 22:29:13 118

转载 python cookbook 学习笔记 第四章 迭代器和生成器(14) 展开嵌套的序列

展开嵌套的序列问题:将一个多层嵌套的序列展开成一个单层序列解决方案:可以写一个包含 yield from 语句的递归生成器来轻松解决这个问题。比如:from collections import Iterabledef flatten(items, ignore_types= (str, bytes)): for x in items: if...

2018-11-30 22:26:41 153

转载 python cookbook 学习笔记 第四章 迭代器和生成器(13) 创建数据处理管道

创建数据处理管道问题:想以数据管道(类似Unix管道,但是Unix管道又是什么鬼)的方式迭代处理数据。比如,有大量的数据需要处理,但是不 能将他们一次性放入内存中。解决方案:生成器函数是一个实现管道机制的好办法。假定要处理一个非常大的日志文件:"""foo/access-log-012007.gzaccess-log-022007.gzaccess-log-032...

2018-11-30 22:23:07 148

转载 python cookbook 学习笔记 第四章 迭代器和生成器(12) 不同集合上元素的迭代

不同集合上元素的迭代问题:想在多个对象上执行相同的操作,但是这些对象在不同的容器中,在不失代码可读性的前提下,避免写重复的代码。解决方案:itertools.chain() 方法可以简化这个任务。它接受一个(书上原文是一个,但是一个没什么意思。。)做为 输入,并返回一个迭代器,有效的屏蔽掉在多个容器中迭代细节。例子:from itertools import chain...

2018-11-30 22:18:25 99

转载 python cookbook 学习笔记 第四章 迭代器和生成器(11) 同时迭代多个序列

同时迭代多个序列问题:想同时迭代多个序列,每次分别从一个序列中取一个元素解决方案:为了同时迭代多个序列,可以使用zip()函数,比如:xpta = [1, 5, 4, 2, 10, 7]ypta = [101, 78, 37, 15, 62, 99]for x, y in zip(xpta, ypta): print(x, y)zip(a, b) 会生...

2018-11-30 22:15:10 124

转载 python cookbook 学习笔记 第四章 迭代器和生成器(10) 序列上索引值迭代

序列上索引值迭代问题:想在迭代一个序列的同时跟踪正在被处理的元素索引解决方案:内置的enumerate()函数可以很好的解决这个问题:my_list = ["a", "b","c"]for idx, val in enumerate(my_list, 1): print(idx, val)"""1 a2 b3 c"""为了按传统行号输出

2018-11-30 22:12:29 100

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除