📜  __future__ Python中的模块

📅  最后修改于: 2022-05-13 01:55:18.212000             🧑  作者: Mango

__future__ Python中的模块

__future__ 模块是Python中的内置模块,用于继承将在新Python版本中可用的新功能。

此模块包含Python中先前版本中不存在的所有最新功能。我们可以通过导入 __future__ 模块来使用它。它的版本是Python 2.1 版。 __future__ 模块的基本思想是帮助迁移到使用Python 3.X 功能。

注意: future 语句必须在文件顶部,否则Python解释器会引发 SyntaxError



此模块中的以下功能:

FeaturesOptional inMandatory in
nested_scopes2.12.2
generators2.22.3
division2.23.0
absolute_import2.53.0
with_statement2.52.6
print_function2.63.0
unicode_literals2.63.0
generator_stop3.53.7
annotations3.73.11

未来模块的基本功能:

Python future 模块有七个特性。

Python
import __future__
print(__future__.all_feature_names)


Python
# Code in Python 2
from __future__ import print_function
  
print("Hello world")


Python
# In 2.7 python compiler
print("Hello world", end=" ")


Python
# In 2.7 python compiler
from __future__ import print_function
  
print("Hello world", end=";")


Python3
# In 2.7 python compiler
print('Welcome ', ' Geeksforgeeks', sep = ' To ')


Python
# In 2.7 python compiler
from __future__ import print_function
print('Welcome ', ' Geeksforgeeks', sep=' To ')


Python
# In 2.7 python compiler
print 7 / 5
   
print -7 / 5


Python
# In below python 2.x code, division works
# same as Python 3.x because we use  __future__
   
from __future__ import division
     
print 7 / 5
print -7 / 5


Python
# code in Python2
print(type("Geeks"))


Python
# code in Python2
from __future__ import unicode_literals
  
print(type("Geeks"))


Python
# encoding: utf-8
name = 'helló wörld from example'
print name.encode('utf8')


Python
# encoding: utf-8
from __future__ import unicode_literals
name = 'helló wörld from example'
print name.encode('utf8')


输出:

['nested_scopes',  
'generators',
'division',
'absolute_import',
'with_statement',
'print_function',
'unicode_literals']

__future__ 模块与 print_function

示例 1:

Python2 的打印语句不同于 Python3 的打印函数。我们在 Python2 中使用Python打印语句作为:

print "Hello world"

但是我们可以使用未来的模块在 Python2函数中使用 Python3 打印函数。

Python

# Code in Python 2
from __future__ import print_function
  
print("Hello world")

输出:

Hello world

示例 2:

在这里,我们将使用Python 3 中的 end 属性打印Python 2.X 中的消息,并且“end”在换行符中附加字符串。它会引发错误,因为该函数与 2.x 不兼容。



Python

# In 2.7 python compiler
print("Hello world", end=" ")

输出:

File "main.py", line 1
    print("Hello world", end=" ")
                            ^
SyntaxError: invalid syntax

因此,通过 __future__ 打印函数,我们可以在代码中导入这些功能以使用最新的打印函数。

Python

# In 2.7 python compiler
from __future__ import print_function
  
print("Hello world", end=";")

输出:

Hello world;

示例 3:

sep 也属于Python 3.x,但在这里我们将通过使用这个模块来使用这些属性。让我们在不使用未来模块的情况下检查这些属性。

蟒蛇3

# In 2.7 python compiler
print('Welcome ', ' Geeksforgeeks', sep = ' To ')

输出:

File "main.py", line 1
    print('Welcome ', ' Geeksforgeeks', sep=' To ')
                                           ^
SyntaxError: invalid syntax

然后让我们使用 __future__ 打印函数来使用 sep 属性。

Python

# In 2.7 python compiler
from __future__ import print_function
print('Welcome ', ' Geeksforgeeks', sep=' To ')

输出:

Welcome To Geeksforgeeks

__future__ 具有除法函数的模块

这里我们将使用 Python2.x 和 Python3.x 中的除法函数。



让我们看看 Python2.x 中的例子。

Python

# In 2.7 python compiler
print 7 / 5
   
print -7 / 5

输出:

1.4
-1.4

让我们用未来的模块看看这个,它会给你准确的结果。

Python

# In below python 2.x code, division works
# same as Python 3.x because we use  __future__
   
from __future__ import division
     
print 7 / 5
print -7 / 5

输出:

1.4
-1.4

带有 unicode_literals函数的 __future__ 模块

在 Python2.x 中我们不能使用 Unicode,但未来的模块允许我们使用 Unicode。

示例 1:

在 Python2 中,字符串被视为字节字符串,但在更高版本中,所有字符串都被视为 Unicode字符串。

Python

# code in Python2
print(type("Geeks"))

输出:

让我们在 Python2 中使用 future 模块。

Python

# code in Python2
from __future__ import unicode_literals
  
print(type("Geeks"))

输出:

示例 2:

让我们看看没有 future 模块的示例,它会引发错误,因为我们正在构建一个包含 UTF-8 编码字节的字节字符串

Python

# encoding: utf-8
name = 'helló wörld from example'
print name.encode('utf8')

输出:

Traceback (most recent call last):
  File "main.py", line 3, in 
    print name.encode('utf8')
UnicodeDecodeError: 'ascii' codec can't decode byte 0xc3 in position 4: ordinal not in range(128)

它可以在 Python2X 中使用未来的模块完成。

Python

# encoding: utf-8
from __future__ import unicode_literals
name = 'helló wörld from example'
print name.encode('utf8')

输出:

helló wörld from example