专栏首页python3python进阶笔记【2】 --- 一

python进阶笔记【2】 --- 一

写在前面

我是在学习cs231n的assignment3的课程,发现里面的代码大量频繁出现了这个库,那我就很奇怪了,为什么有个future这个奇怪名字的库会出现呢?到底这个库又有什么用?下面就让我为你揭开。

正文

总所周知,python3.x和python2.x根本就是两个东西,每次因为这个兼容性的问题都会把自己搞疯。

下面很多内容参考廖雪峰博客

从Python 2.7到Python 3.x就有不兼容的一些改动,比如2.x里的字符串用'xxx'表示str,Unicode字符串用u'xxx'表示unicode,而在3.x中,所有字符串都被视为unicode,因此,写u'xxx'和'xxx'是完全一致的,而在2.x中以'xxx'表示的str就必须写成b'xxx',以此表示“二进制字符串”。

于是呢。

Python提供了__future__模块,把下一个新版本的特性导入到当前版本,于是我们就可以在当前版本中测试一些新版本的特性。举例说明如下:

为了适应Python 3.x的新的字符串的表示方法,在2.7版本的代码中,可以通过unicode_literals来使用Python 3.x的新的语法:

# still running on Python 2.7

from __future__ import unicode_literals

print '\'xxx\' is unicode?', isinstance('xxx', unicode)
print 'u\'xxx\' is unicode?', isinstance(u'xxx', unicode)
print '\'xxx\' is str?', isinstance('xxx', str)
print 'b\'xxx\' is str?', isinstance(b'xxx', str)


输出结果:

'xxx' is unicode? True
u'xxx' is unicode? True
'xxx' is str? False
b'xxx' is str? True

类似的情况还有除法运算。在Python 2.x中,对于除法有两种情况,如果是整数相除,结果仍是整数,余数会被扔掉,这种除法叫“floor deviation”:

>>> 10 / 3
3

要做精确除法,必须把其中一个数变成浮点数:

>>> 10.0 / 3
3.3333333333333335

而在Python 3.x中,所有的除法都是精确除法,floor deviation 用//表示:

$ python3
Python 3.3.2 (default, Jan 22 2014, 09:54:40) 
[GCC 4.2.1 Compatible Apple LLVM 5.0 (clang-500.2.79)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> 10 / 3
3.3333333333333335
>>> 10 // 3
3

如果你想在Python 2.7的代码中直接使用Python 3.x的除法,可以通过__future__模块的division实现:

from __future__ import division

print '10 / 3 =', 10 / 3
print '10.0 / 3 =', 10.0 / 3
print '10 // 3 =', 10 // 3

结果如下:

10 / 3 = 3.33333333333
10.0 / 3 = 3.33333333333
10 // 3 = 3

所以总结来说,__future__就好像这个名字一样,未来,就是为了让你在python2.x的情况下使用python3.x的东西,具体还有很多的详细使用方式就需要好好看看api了。

api传送门 feature不多,才7个。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Python不是Java (zt)

    作者:Phillip J. Eby. 翻译:ShiningRay @ NirvanaStudio 原文地址:[[[url]http://dirtsimple...

    py3study
  • 千锋扣丁学堂Python培训之十个安全

    今天千锋扣丁学堂Python培训老师给大家分享一篇关于初学者学习Python中的10个安全漏洞以及如何修复漏洞的方法。比如在写代码的过程中,我们的总会遇见各式各...

    py3study
  • Python的几种实现

    Python自身作为一门编程语言,它有多种实现。这里的实现指的是符合Python语言规范的Python解释程序以及标准库等。这些实现虽然实现的是同一种语言,但是...

    py3study
  • 速成应用:一篇文章带你全面了解小程序?

    微信小程序的定义:小程序是一个可以帮助用户高效解决问题的工具,用完即走;其优质的用户体验会推动用户走了再回来。同时微信给小程序开放了多个入口帮助用户能够找到自己...

    速成应用小程序
  • 小程序来了,APP将成为历史?

    自2017年1月9日,微信推出小程序以来,小程序就话题不断。至今小程序已经迎来蓬勃的发展。这, 只是一个开始,因为小程序的使命不仅限于此。微信创始人张小龙说,任...

    企鹅号小编
  • 微信小程序第一手实践分享

    目录: 1. 如何理解小程序 2. 小程序如何串联微信 3.个人实践心得 今天是微信小程序正式上线的第一天,从小程序公布、内测到今天,市面上对于小程序众说纷纭,...

    yuanyi928
  • 滴滴投资人被司机打?即使给滴滴投资百万美金,也换不回坐车安全

    作为国内最大的网约车平台,滴滴目前的估值已经接近了600亿美金。不过,就算如此高的估值,滴滴在乘客坐车安全这个问题上,仍然做的不够好。且不说前一段时间,21岁空...

    光荣与梦想1987
  • 【小白篇】小程序是什么

    随着微信小程序的上线,越来越多企业、商家、甚至个人推出自己的微信小程序,受宠程度可见一斑。而对于尚未付诸行动的企业商家来说,小程序或许还有些陌生,那么今天我们就...

    用户1745481
  • 【小白篇】小程序是什么

    随着微信小程序的上线,越来越多企业、商家、甚至个人推出自己的微信小程序,受宠程度可见一斑。而对于尚未付诸行动的企业商家来说,小程序或许还有些陌生,那么今天我们就...

    用户1745481
  • 小白必读 | 小程序是什么?

    随着微信小程序的上线,越来越多企业、商家、甚至个人推出自己的微信小程序,受宠程度可见一斑。而对于尚未付诸行动的企业商家来说,小程序或许还有些陌生,那么今天我们就...

    用户1745481

扫码关注云+社区

领取腾讯云代金券