python 笔记

WebOb  WSGI request and response objects

WebOb is a Python library that provides wrappers around the WSGI request environment, and an object to help create WSGI responses. The objects map much of the specified behavior of HTTP, including header parsing, content negotiation and correct handling of conditional and range requests.

WebOb 第三方python库,是针对 HTTP 请求和响应的面向对象的接口。

优点:

  • Maps most of HTTP spec to friendly data structures 
  • Time-proven codebase that works around and hides all known WSGI quirks.久经考验的代码库,隐藏了WSGI的弊端。
  • Zero known issues (reported bugs are always fixed ASAP). 零已知率
  • 100% test coverage. 测试覆盖率。
  • No external dependencies. 没有外部依赖。
  • Supports Python 3.

WebOb屏蔽了WSGI的细节。


Python Paste

Paste Deployment is a system finding and configuring WSGI applications and servers.

Paste Deploy is released under the MIT license.


Python base64 模块基本概念


base64是网络上最常见的用于传输8bit字节代码的编码方式之一。

Python base64模块是用来作base64编码解码的。这种编码方式在电子邮件中很常见,它可以把不能作为文本显示的二进制数据编码为可显示的文本信息。编码后文件会增大1/3.

Python base64模块真正能用的上的方法只有8个,分别是encode ,decode , encodestring ,decodestring ,b64encode,b64decode,urlsafe_b64decode,urlsafe_b64encode .

分成四组:encode , decode 一组,专门用来编码和解码文件的,也可以对StringIO里的数据做编解码。

                 encodestring,decodestring一组,专门用来编码和解码字符串。

                 b64encode和b64decode一组,用来编码和解码字符串,并且有一个替换符号字符的功能。    

                 urlsafe_b64encode和urlsafe_b64decode 一组,这个就是用来专门对url进行base64编解码的  。    

attention : base64编码后的字符除了英文字母和数字外还有三个字符:+ / = ,其中=只是为了补全编码后的字符数为4的整数,而+ /在一些情况下是被替换的,b64encode和b64decode正是提供了这样的功能。最常见的就是对url进行base64编码时候,,urlsafe_b64encode和urlsafe_b64decode 一组,实际上是调用前一组函数

Python sys.argv[] 使用方法

    sys.argv[] 是用来获取命令行参数的。sys.argv[0]表示代码本身文件路径。所以argv[]参数从1开始。   例如,在cmd中输入“python text.py --version”,那么sys.argv[0]就代表text.py 。

Python 内建类型:Number类型 ,String类型, list类型。

Python 列表推导式

list comprehension ,是利用其他列表创建新的列表(相当于数学中的集合推导式)。

In [39]: [x*x for x in range(10)]
Out[39]: [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]

  如果只想打印出那些能被3整除的平方数,只需要通过添加一个if部分在推导式中就可以完成:

In [41]: [x*x for x in xrange(10) if x % 3 == 0]
Out[41]: [0, 9, 36, 81]

  也可以增加更多的for语句的部分:

In [42]: [(x,y) for x in range(3) for y in range(3)]
Out[42]: [(0, 0), (0, 1), (0, 2), (1, 0), (1, 1), (1, 2), (2, 0), (2, 1), (2, 2)]

In [43]: [[x,y] for x in range(2) for y in range(2)]
Out[43]: [[0, 0], [0, 1], [1, 0], [1, 1]]

python  实例属性VS类属性

类和实例都是名字空间。类是类属性的名字空间,实例则是实例属性的。

注意:给一个与类属性同名的实例属性赋值,会有效的“隐藏”类属性,但是一旦删除,则类属性又重见天日。

Python 静态方法和类方法(staticmethod & classmethod)


python在类中,有三种调用method的方法:普通method,staticmethod和classmethod

class TestStaticMethod:
	def foo():
		print("hello, static !")
		
		foo = staticmethod(foo) #静态方法
		

class TestClassMethod:
	def foo(cls):  #cls ,类作为参数,而不是self
		print("calling class method foo")
		print("foo is part of class :", cls.__name__)
		
	foo = classmethod(foo)  # 类方法
重点是classmethod:
它是和一个class相关的方法,可以通过类或类实例调用,并将该class对象(不是class的实例对象)隐式地

当作第一个参数传入。python中class也是个真实地存在于内存中的对象,而不是静态语言中只存在于编译期间的类型

使用函数修饰符达到上面的效果:@staticmethod  @classmethod 

class TestStaticMethod:
       @staticmethod  #修饰符
	def foo():
		print("hello, static !")

		

class TestClassMethod:
       @classmethod
	def foo(cls):
		print("calling class method foo")
		print("foo is part of class :", cls.__name__)
	

你可能感兴趣的:(python 笔记)