分类标签归档:python

深入理解Python中的asyncio


asyncio介绍

熟悉c#的同学可能知道,在c#中可以很方便的使用asyncawait来实现异步编程,那么在python中应该怎么做呢,其实python也支持异步编程,一般使用asyncio这个库,下面介绍下什么是asyncio:

asyncio 是用来编写 并发 代码的库,使用async/await语法。 asyncio 被用作多个提供高性能Python异步框架的基础,包括网络和网站服务,数据库连接库,分布式任务队列等等。 asyncio 往往是构建 IO 密集型和高层级 结构化 网络代码的最佳选择。

asyncio中的基本概念

可以看见,使用asyncio库我们也可以在python代

Read more

python中的协程


先介绍下什么是协程:

  协程,又称微线程,纤程,英文名Coroutine。协程的作用,是在执行函数A时,可以随时中断,去执行函数B,然后中断继续执行函数A(可以自由切换)。但这一过程并不是函数调用(没有调用语句),这一整个过程看似像多线程,然而协程只有一个线程执行。

是不是有点没看懂,没事,我们下面会解释。要理解协程是什么,首先需要理解yield,这里简单介绍下,yield可以理解为生成器,yield item这行代码会产出一个值,提供给next(...)的调用方; 此外,还会作出让步,暂停执行生成器,让调用方继续工作,直到需要使用另一个值时再调用next()。调用方会从生成器中拉取值,但是

Read more

函数装饰器和闭包


装饰器基础知识

装饰器是可调用对象,其参数是另一个函数(被装饰的函数)。装饰器可能会处理被装饰的函数,然后把它返回,或者将其替换成另一个函数或可调用对象。 假如有一个名为decorate的装饰器:

@decorate
def target():
    print('running target()')

上述代码的效果与下述写法一样:

def target():
    print('running target()')
target = decorate(target)

两种写法的最终结果一样:上述两个代码片段执行完毕后得到的target不一定是原来那个t

Read more

为你的Django项目保驾护航


保证你的站点安全至关重要,如果你的站点被入侵,后果可能不仅仅是你的服务器被黑,更严重的可能是你的用户隐私数据被盗,造成严重的后果。 Django框架现在已经非常成熟,大多数常见的安全问题框架本身都有提供解决方案,下面大致介绍下一些常见的防御措施。

Https

现在的网站https基本都是标配了吧,如果你的网站还没有支持https,那么就要考虑是不是需要尽快为你的网站加上https,这里推荐使用免费的Let's Encrypt。本站使用的就是他们颁发的证书。可以参考该文章:
申请Let's Encrypt通配符证书有大致的介绍。 如果你的站点已经支持了https访问的话,建议在settings

Read more

python学习笔记系列


摘录《流畅的python》书中前言部分作为本篇文章开头:

受其他语言的影响,你大概能猜出python会支持正则表达式,然后就回去查阅文档。但如果你从来没有见过元组拆包,也没有听过描述符这个概念,那么估计你也不会特地去搜索它们,然后就永远失去了使用这些python独有的特性的机会。

使用python也有好一段时间了,正如上面那段话所说,对于python只是了解其中的基本用法,对于一些高级的语法很不熟悉,正好最近事情都趋于稳定,也可以静下心来从头到尾真正的学习下python这门语言了。从开始看《流畅的python》这本书之后,深感自己以前对python认知的浅薄,写出来的代码很不Pythonic

Read more

python的一等函数


在Python中,函数是一等对象,而一等对象的定义是满足下述条件的程序实体:

  • 在运行时创建
  • 能赋值给变量或数据结构中的元素
  • 能作为参数传递给函数
  • 能作为函数的返回结果

我们通过下面的例子来证明python中的函数是对象:

>>> def factorial(n):
...     '''return n!'''
...     return 1 if n < 2 else n * factorial(n-1)
...
>>> factorial(41)
3345252661316380710817

Read more