SIX是用于python2与python3兼容的库。

它存在的目的是为了拥有无需修改即可在Python 2和Python 3上同时工作的代码。话虽这么说,但是这并不代表在Python 3中引用该库就可以轻松地跑Python 2的代码。

实际上,SIX是重定义了在python2和3中有差异的函数,例如dict的获取全部键值函数:在Python2中是

.iterkeys()

在Python3中是

.keys()

而在SIX中是

six.iterkeys(dict)(当然对应版本的原函数也能够使用)

也就是说,离开了SIX库的话你写的代码不论在Python2还是Python3中都无法运行。因此不是急于追求兼容性的话并不需要使用这个库。

安装:

解压后双击steup.py即可。

使用

import six

之后按照SIX提供的语法书写即可写出pyhton2/3上兼容的代码。

six.PY2/ six.PY3 :检查编译器版本是否为python2/3

以下是SIX提供的兼容语法:

常量定义:

six.class_types

可能的类类型。在Python 2中,这包含旧类和新类。在Python 3中,这只是新类。

six.integer_types

可能的整数类型。在Python 2中,这是long或 int,在Python 3中同int。

six.string_types

文本数据的可能类型。这是Python 2终点basestring()和 Python 3中的str。

six.text_type

用于表示(Unicode)文本数据的类型。这是unicode()在Python 2和Python 3中的str(Pyhon3对文本数据进行了整合,默认为Unicode文本数据)。

six.binary_type

代表二进制数据的类型。这是Python 2中的str和 Python 3中的bytes。

six.MAXSIZE

像list 或dict这样的容器的最大尺寸。这相当于 Python 2.6及更高版本(包括3.x)的sys.maxsize。请注意,这与sys.maxint Python 2 非常相似,但并不相同 。sys.maxint在Python 3中没有直接的等价物, 因为它的整数类型的长度仅受限于内存大小。

内置函数定义

1、six.get_unbound_function(meth)

获取非绑定方法的meth。在Python 3,不存在非绑定方法,所以这个功能只是返回meth不变。用法示例:

from six import get_unbound_function

class X(object):

def method(self):

pass

method_function = get_unbound_function(X.method)six.get_method_function(meth)

2、six.get_method_self(meth)

获取self绑定的方法的meth。

3、six.get_function_closure(func)

等效于Python 2.6+中的func.__closure__和Python 2.5中的func.func_closure

4、six.get_function_code(func)

获取与func关联的代码对象。等效于Python 2.6+中的 func.__code__和Python 2.5中的func.func_code。

5、six.get_function_defaults(func)

获取与func关联的默认元组。等效于Python 2.6+中的 func.__defaults__和Python 2.5中的func.func_defaults。

6、six.get_function_globals(func)

获取全局函数。等效于Python 2.6+中的func.__globals__和Python 2.5中的func.func_globals。

7、six.next(it) six.advance_iterator(it)

获取迭代器it的下一个项目。如果迭代器到达末尾,则会引发StopIteration。等效于Python 中的it.next()2和Python 3中的next(it).Python 2.6及更高版本具有内置next函数,因此只有需要兼容Python 2.5版本及以下时才需要该函数。

8、six.callable(obj )

检查是否可以调用obj。callable标记已经在Python 3.2中有返回,所以只有在支持Python 3.0或3.1时才需要使用six的版本。

9、six.iterkeys(字典,** kwargs )

返回字典键上的迭代器。等效于Python 2中的 dictionary.iterkeys()和Python 3中的dictionary.keys()。 kwargs被传递给底层方法。

10、six.itervalues(字典,** kwargs )

返回字典值的迭代器。等效于Python 2中的dictionary.itervalues()和Python 3中的dictionary.values()。kwargs被传递给底层方法。

11、six.iteritems(字典,** kwargs )

返回字典项目的迭代器。等效于Python 2中的 dictionary.iteritems()和Python 3中的dictionary.items()。 kwargs被传递给底层方法。

12、six.iterlists(字典,** kwargs )

调用Python 2中的dictionary.iterlists() 或Python 3中的dictionary.lists()。原版的Python映射类型没有这种等效; 此方法旨在能够使用像Werkzeug’s这样的多值词典。 kwargs被传递给底层方法。

13、six.viewkeys(字典)

通过字典的键返回视图。等效于 Python 2.7中的dict.viewkeys()和Python 3中的dict.keys()。

14、six.viewvalues(字典)

通过字典的值返回视图。等效于 Python 2.7中的dict.viewvalues()和Python 3中的dict.values()。

15、six.viewitems(字典)

返回字典项目的视图。等效于 Python 2.7中的dict.viewitems()和Python 3中的dict.items()。

16、six.create_bound_method(func,obj )

返回一个方法对象包装func并绑定到obj。在Python 2和Python 3上,这将返回一个types.MethodType对象。这个包装器函数存在的原因是,在Python 2中,MethodType构造函数需要传递obj的类。

17、six.create_unbound_method(func,cls )

返回一个未绑定的方法对象包装函数。在Python 2中,这将返回一个types.MethodType对象。在Python 3中,未绑定的方法不存在,并且此包装将简单地返回func。

18、class six.Iterator

一个用于制作小型迭代器的类。其目的是将其划分子类并提供一种__next__方法。在Python 2中,Iterator 有一个方法:next。它只代表__next__。或许可以仅仅为 __next__取别名next。但是这会对重定义了 __next__的子类造成严重影响。Iterator在Python 3中是空的。(实际上,它只是被命名为object。)

python six库_six库 解决python2的项目如何能够完全迁移到python3相关推荐

  1. python读excel乱码_解决Python2.7读写文件中的中文乱码问题

    Python2.7对于中文编码的问题处理的并不好,这几天在爬数据的时候经常会遇到中文的编码问题.但是本人对编码原理不了解,也没时间深究其中的原理.在此仅从应用的角度做一下总结, 1.设置默认编码 在P ...

  2. python open ascii codec cant_解决Python2.7的UnicodeEncodeError: ‘ascii’ codec can’t encode异常错误...

    今天准备将某SQLite数据库的内容导出到文本文档(*.txt)中,设计的Python程序如下: # -*- coding: UTF-8 -*- import sqlite3 def gsel(cur ...

  3. python打包包含所有依赖_解决Python开发过程中依赖库打包问题的方法

    在Python开发的过程中,经常会遇到各种各样的小问题,比如在一台计算机上调试好的程序,迁移到另外一台机子上后往往会应为工程项目依赖库的缺失而造成错误. 除了一遍又一遍对着被抛出错误去重新instal ...

  4. 解决Python开发过程中依赖库打包问题的方法

    在Python开发的过程中,经常会遇到各种各样的小问题,比如在一台计算机上调试好的程序,迁移到另外一台机子上后往往会应为工程项目依赖库的缺失而造成错误. 除了一遍又一遍对着被抛出错误去重新instal ...

  5. 解决Python使用pip安装库文件出现“Error:Cannot unpack file…”的情况

    1.安装库文件: 以安装beautifulsoup4为例,在命令行中直接输入命令:pip install beautifulsoup4,如果下载速度很慢,或者下载失败,建议使用国内源下载. 国内源下载 ...

  6. python调用c++动态库 linux_linux中使用boost.python调用c++动态库的方法

    前言 最近开始使用 robot framework 测试c++的动态库,robot framework 是跑在 windows 上面,c++动态库是跑在远程linux主机上面.测试办法是让 robot ...

  7. python版本及ML库

    一:关于Python版本的选择问题 关于Python的选择问题:要看学术界能不能把科学库迁移到Python3. 1:多个版本共用: 最近发现SciPy的最高版本是3.2,只能是退而求其次,不使用最新版 ...

  8. Python中第三方的库(library)、模块(module),包(package)的安装方法以及ImportError: No module named...

    Python中,想要安装第三方安装包,即third library,package等,对于熟悉的人来说,很简单. 但是对于新手,至少对于之前的我,很难,往往只是安装一个很小的包,都被搞得一头雾水. 现 ...

  9. 可爱的python测试开发库及项目(python测试开发工具库汇总)

    转载: https://www.jianshu.com/p/ea6f7fb69501 可爱的python测试开发库及项目(python测试开发工具库汇总) github地址 相关书籍下载 Python ...

最新文章

  1. Springboot集成websocket实例
  2. 【MPI编程】MPI_Bcast广播讲解和使用
  3. 线程调度 java_Java多线程--线程的调度
  4. 锋利的jQuery--关于$(document).ready()函数及jQuery代码风格
  5. 20162303 2016-2017-2 《程序设计与数据结构》第五周学习总结
  6. 自制Unity小游戏TankHero-2D(3)开始玩起来
  7. 和硕裁员4.5万真相调查:工人入不敷出无奈走人
  8. Tree Recovery(二叉树递归遍历+求后序遍历模板)
  9. 创新, FMA amp; SMA 世界第一台VCD机的故事
  10. 电动汽车又“火了” 面对频繁自燃事故 蔚来不得不这样做...
  11. transport方式连接Elasticsearch6.2.3
  12. Oracle正版用户授权
  13. popen函数的实现
  14. VS2010 旗舰版和专业版 下载
  15. Java多用户商城系统B2B2C源码-(九)服务链路追踪(Spring Cloud Sleuth)
  16. 欲为苍鹰,勿与鸟鸣, 欲为强者,莫与弱争!
  17. Visual Studio2022快速生成函数说明文档
  18. 70个数据分析工具,必须收藏!
  19. BMS专题之动力电池组
  20. 小空间大精彩!Apple Watch重磅实战案例之QQ空间

热门文章

  1. MFC_自定义事件响应
  2. Android中WebView加载本地Html,与JavaScript与Android方法相互传值...
  3. 拼接字符SQL语句拼接 最后一个字符多出 处理方式
  4. Oracle数据文件的备份与恢复
  5. Spring Boot 中使用 Hikari,给我整不会了
  6. Geomesa-Hbase单机部署及ingest、export shp文件数据
  7. kube-controller-manager 配置参数解读
  8. golang基本数据类型默认值
  9. sublime text常用快捷键及多行光标批量操作教程
  10. oracle data guard闪回,官方文档上的这段关于 DATAGUARD 闪回的解释,如何理解?