带有标签 Python 的文章

我们都知道在函数体内使用yield关键字将会使函数返回一个生成器对象,在英文字典中,yield不仅有“生产”(produce)的意思,还有“屈服,让步”(give way)的意思,因此python最开始也使用了生成器的关键字yield来处理协程(coroutine)。但是不同的是,协程中yield关键字通常出现于表达式的右侧,例如received = yield value;协程不仅可以生成数据(或者不生成数据),也可以接收数据。理解协程中的yield,要把yield看做是用来执行控制流的,而不是生成数据的。

python协程的历史

python协程最早的实现是在python2.5中,自此可以在表达式中使用yield关键字了,同时为生成器实现了.send(value)方法用于向yield表达式传递数据,.throw()方法用于抛出异常,.close()方法用于终结。具体描述在PEP 342中。

...

查看全文

Django使用模型(model)来定义数据,模型包含数据的字段以及行为信息,通常可以认为每个模型对应于一个数据库表。Django的模型系统实现了数据库的常见关系(一对一、一对多、多对多),本文主要介绍这三种关系模型的使用。

一对一关系

Django使用OneToOneField处理一对一关系。我们大学和地点来进行一对一关系的演示。一个地点可以是一所大学。

...

查看全文

人们常将闭包与匿名函数混淆,因为在函数体内定义函数并不十分常见,直到我们要用到匿名函数,而只有在嵌套函数的情况下讨论闭包才有意义。

事实上,闭包与匿名函数并无关系。闭包指的是函数包含一个扩展的作用域,该作用域内的非全局变量不是在该函数体内定义,但该函数可以引用这些变量,即使这些变量离开了创建它的环境。它与函数是否匿名无关。segmentfault上有一个形象的解释: ...

查看全文