Python语法
非初级Python语法的讲解和实验
Greyplayground
使混沌趋于有序,致力于网络世界的熵减
展开
-
[PythonCookBook][并发] 判断线程启动与否的方法
问题 加载进程后判断是否实际运行 解决方案 为了判断线程是否执行到了其过程中的某个点,以据此执行后续操作,我们使用threading库中的Event对象。 简单示例 这个实验里‘countdown is running’总会在‘countdown starting’之后出现 from threading import Thread, Event import time def countdown(n, started_evt): print('countdown starting') st原创 2021-04-01 13:42:49 · 245 阅读 · 0 评论 -
[PythonCookBook][并发] 开启和终止线程
123原创 2021-03-26 11:48:59 · 106 阅读 · 0 评论 -
[PythonCookBook][迭代器和生成器] 如何跳过迭代器的前几个元素
目的 在下列文件的内容中,我们希望将以#号开头的几个元素略过,然后继续打印 被测试对象 #aaa #bbb #ccc #ddd python a python b eee fff ggg python x 解决方案1 使用dropwhile方法,可以将符合条件的条目略过。 其中dropwhile方法需要输入一个判断函数和一个可迭代对象。 from itertools import dropwhile with open('test') as f: for line in dropwhile(la原创 2021-03-18 13:39:02 · 336 阅读 · 1 评论 -
[PythonCookBook][迭代器和生成器] 迭代器的切片
常规思维下对迭代器的切片 实际上迭代器是不能像列表一样进行切片的 def count(n): while True: yield n n += 1 counter = count(0) print(counter[10:20]) #执行结果如下列打印,生成器是不可以被切片的。 ''' Traceback (most recent call last): File "C:/Users/Administrator/PycharmProjects/Training/原创 2021-03-18 13:15:37 · 113 阅读 · 1 评论 -
[Python][迭代器和生成器] 带有额外状态的生成器函数
目的 用一个类来包装一个生成器,并添加新的状态在类中,则该类在拥有生成器特性的同时,又持有一些定制的状态信息。 被实验对象 aaa bbb ccc ddd python a python b eee fff ggg python x 代码示例 该示例中未打印出定制化生成器的内容本身,而是打印出了特定时刻的生成器属性内的信息。lines.history才是这个故事的主角。 from collections import deque #deque是一种双向的列表,可以在左右两端增加和删除元素 class li原创 2021-03-16 13:44:52 · 98 阅读 · 1 评论 -
[Python][迭代器和生成器]反向迭代
反向迭代 常规方法 将可迭代对象列表化,用列表的reversed方法反向输出。 这种方法的弊端就是在建立列表的过程中占用大量的内存空间。 # Print a file backwards f = open('somefile') for line in reversed(list(f)): print(line, end='') 高阶方法:反向迭代器 在类中定义__reversed__()方法,使其具有反向迭代的能力 class Countdown: def __init__(self,原创 2021-03-15 13:34:42 · 195 阅读 · 0 评论 -
[Python][迭代器和生成器] 迭代协议
深度优先的生成器实现 Node Class的创建 class Node: def __init__(self, value): self._value = value self._children = [] def __repr__(self): return 'Node({!r}) '.format(self._value) def add_child(self, node): self._children.app原创 2021-03-11 13:41:49 · 98 阅读 · 0 评论 -
[Python][迭代器和生成器]自定义迭代模式
课题 代码实现示例 创建一个生成器 def float_range(init, end, step): x = init while x < end: yield x x += step 测试过程 for f in float_range(0, 4, 0.5): print(f) flist=list(float_range(0,1,0.125)) print(flist) 偏深度解析 解析示例 def countdown(n):原创 2021-03-10 13:38:10 · 72 阅读 · 0 评论 -
[Python][迭代器和生成器]委托迭代
class Node: def __init__(self,value): self._value = value self._children = [] def __repr__(self): return 'Node({!r}) '.format(self._value) def add_child(self, node): self._children.append(node) def __iter_原创 2021-02-27 13:43:15 · 137 阅读 · 0 评论 -
[PythonCookBook][迭代器和生成器]迭代器元素的手动访问
迭代器和生成器的手动访问 一般在访问迭代器时,通常用到for循环,不过有些情况下你不想或者不能使用for循环,则我们使用next()函数来逐一获取迭代器元素 访问迭代器元素的方法1 for循环结束于StopIteration异常的抓取,这个例子中我们不使用类似for循环中的自动异常抓取,而是将其显示地在代码中执行。当next()函数掏空了迭代器抛出StopIteration异常时,我们手动抓取该异常,并打印出定制化的信息。 文本文件‘test’中的内容(最后一行是空格): a b c d e f g g原创 2021-02-25 13:40:39 · 153 阅读 · 1 评论