那么“从__future__导入barry_as_FLUFL”到底是做什么的呢?


72

我知道这是一个内在的笑话,它会留下来(就像“ from __future__ import braces”一样),但是它到底是做什么的呢?

Answers:


74

PEP 0401:BDFL退休有关

Barry指著名的Python开发人员Barry Warsaw。该from __future__ import barry_as_FLUFL基本取代了!=与运营商<>


4
谢谢。我编辑了您的答案,因为它有明显的漏水:)
tzot 2010年

16
更重要的是,它使<>语法在Python 3
美国洛特

2
该链接说,print声明也回来了。
manojlds

嗯 当我尝试针对Python 3.3运行此导入时,它崩溃并显示为SIGSEGV (Address boundary error)。也许尚未维护此功能。:P
杰里米(Jeremy)

3
顺便说一句-与花括号不同,.all_feature_names如果您决定运行一个启用了所有未来功能的程序(例如doctest)(浏览列表并发现它们都是您想要的),它肯定会咬您。
Michael Scott Cuthbert 2015年

19

如上所述,barry是著名的Core Python Dev Barry Warsaw。但是,FLUFL尚未得到解释

它代表了当时其他Python核心开发人员中的一个玩笑,即“ Friendly Language Uncle For Life”。之所以启用<>语法,是因为他是想要使用<>运算符的主要人员


3
只是在这里吹牛,但我和Barry参加了Core Python Hackathon,我们分享了一些有趣的有趣故事:)这类似于Guido van Rossum的《仁​​慈的生活独裁者》(BDFL)。他是一个非常好的人:)
MicroTransactionsMatterTooTo

11

愚人节的笑话PEP 0401真的很有趣,因此它是当前的实现。无论是python3 -i从终端还是从标准输入中,它都可以很好地进行交互,但是令人惊讶的是,无论是没有标准脚本还是没有标准脚本,它都不行-i。它eval(...)通过compile(..)以下方式起作用:

exec(compile('1<>0', 'foo', 'single', __future__.CO_FUTURE_BARRY_AS_BDFL))

确实比!=造成手指疼痛的可怕更有趣


很好的答案,因为它解释说这在正常脚本中不起作用。但是我不确定最后一句话怎么了?格式和标点符号看起来像是在开玩笑,部分是粗心大意,部分是故意破坏。我不能说。
约翰Y

哦,还要澄清一下:即使您使用-i,在到达REPL之前执行的脚本也必须遵循正常的Python 3语法,否则会出现语法错误。而且,如果您在脚本中遇到语法错误,则REPL的行为就像从未执行过导入一样。(您只需要在REPL上再次执行此操作即可,但是这样一来,首先把它放到脚本中就没有意义了。)但是,如果脚本引发(大多数?)其他种类的异常,也可以;在这种情况下,当您转储到REPL时,导入仍然有效。
约翰Y
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.