分类标签归档:python

函数装饰器和闭包


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

上述代码的效果与下述写法一样: def target(): print('running target()') target = decorate(target)

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

Read more

为你的Django项目保驾护航


保证你的站点安全至关重要,如果你的站点被入侵,后果可能不仅仅是你的服务器被黑,更严重的可能是你的用户隐私数据被盗,造成严重的后果。 Django框架现在已经非常成熟,大多数常见的安全问题框架本身都有提供解决方案,下面大致介绍下一些常见的防御措施。
Https 现在的网站https基本都是标配了吧,如果你的网站还没有支持https,那么就要考虑是不是需要尽快为你的网站加上https,这里推荐使用免费的Let's Encrypt。本站使用的就是他们颁发的证书。可以参考该文章: 申请Let's Encrypt通配符证书 有大致的介绍。 如果你的站点已经支持了https访问的话,建议在se...

Read more

python学习笔记系列


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

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

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

Read more

python的一等函数


在Python中,函数是一等对象,而一等对象的定义是满足下述条件的程序实体: - 在运行时创建 - 能赋值给变量或数据结构中的元素 - 能作为参数传递给函数 - 能作为函数的返回结果
我们通过下面的例子来证明python中的函数是对象:
>>> def factorial(n): ... '''return n!''' ... return 1 if n < 2 else n * factorial(n-1) ... >>> factorial(41) 3345252...

Read more

Python中的字典和集合


Python标准库中的所有映射类型都是使用dict来实现的,因此他们都有一个共同的限制,即只有可散列的数据类型才可以作为映射的键,那么什么是可散列的数据类型呢?下面介绍下: 在python词汇表中,关于可散列类型的定义有这么一段话:

如果一个对象是可散列的,那么在这个对象的生命周期中,他的可散列值是不变的,而且这个对象需要实现__hash__()方法。另外可散列对象还要有__eq__()方法,这样才可以和别的键做比较,如果两个可散列对象的值是相等的,那么他们的散列值一定是相等的。

原子不可变数据类型(str,bytes和数值类型)都是可散列类型,frozenset也是可散列的,因为根...

Read more

Python中的序列


内置序列类型概述: Python标准库使用C实现了丰富的序列类型,列举如下:

容器序列 list,tuple和collsctions.deque这些序列能存放不同的数据类型。 扁平序列 str,bytes,bytearray,memoryview和array.array,这些序列只能存放一种类型。

容器序列存放的是他们所包含的任意类型的对象引用,而扁平序列存放的是值而不是引用,也就是说,扁平序列其实是一段连续的内存空间,因此扁平序列其实更加紧凑,但是他们里面只能存放例如字符,字节和数值这种基础类型。 序列类型还可以按照是否可以修改赖分类。 - 可变序列 list,bytearray,...

Read more