轻松创建导入钩子来测试想法。

ideas的Python项目详细描述


想法

Ideas:使Python的语法更容易扩展。

ideas logo

文件

Everything you need will eventually be found here。在

安装

python -m pip install ideas

依赖关系

Python3.6+和token-utils。 令牌实用程序以前包含在ideas中,但后来被制成 它自己的(单模块)包。在

备选方案

阅读安德鲁·巴纳特的帖子Hacking Python without hacking Python 是一种快速了解使用导入钩子的各种方法的方法 更改Python的语法。在

使用

假设您想在Python中使用function作为关键字,意思是 与lambda相同,使您能够编写

^{pr2}$

可以使用导入钩子来完成此操作。 使用ideas创建此类导入钩子的最简单(但有缺陷)方法 具体如下:

fromideasimportimport_hookdeftransform(source,**kwargs):returnsource.replace("function","lambda")import_hook.create_hook(transform_source=transform)

那么,你就得用它了。因为已经有一个导入钩子的例子 这样的话,我们就用它来代替。你要做的就是 指示Python添加导入钩子并将使用它 从那时起。像下面这样的。在

# Lets's call this 'loader.py'fromideas.examplesimportfunction_keywordfunction_keyword.add_hook()importmy_program

然后跑

python loader.py

所以,my_program.py,以及任何其他可以 加载时,它将识别出function是{}的有效替代品。在

documentation中可以找到更多的例子,包括创建这样一个导入钩子的更好的方法以及关于 支持代码转换的控制台(REPL)。在

工具

此项目使用black进行格式化, pytest用于运行测试, 和flake8用于使用自定义 与黑色兼容的设置。在

联系人

你可以提出问题,也可以发电子邮件给我Andre.Roberge@gmail.com。在

许可证

麻省理工学院

不常问的问题、评论和回答

当我写(偶尔更新)这个自述文件时,没有人知道 关于这个项目。所以,不可能有一些经常被问到的问题 问题。在他们不在场的情况下,我们写下了以下想象中的对话。在

Why?

因为这很有趣。如果这还不足以为你辩护,看看 motivation 其中包含了一个更长,可能更严肃的答案。在

Is it safe to use in production code?

没有

But your example works perfectly well in my code; can I use it in my project?

如果你的项目被其他人使用,我认为你不应该这样做 但是你自己。在

I found a bug.

太好了,请提交一个问题,以便我可以尝试解决它。但是请注意 一些例子只是概念的证明,并不意味着是健壮的。在

Can I contribute code for a new example?

是的,请务必。但我建议你首先创造一个 你希望完成的任务的概述。在

I found a cool use of import hooks in another project, different from all of your examples. Could you include it?

请给我详细信息,我会看看我是否可以轻松包括 一个类似的例子,如果我认为这样做是值得的。在

I think that the explanation you have written for X could be improved upon.

请先提交一个问题,然后再创建一个请求来告诉我更多信息。在

I have an idea for a new example, but do not know how to write the code for it.

首先,确保您仔细阅读了所有现有的示例来确认这一点 任何人都不可能轻易地适应做你想做的事。 如果是这样的话,提交一个问题。。。 但是如果我不为它编写代码,请不要生气 最后结束了这个问题:我已经有太多自己的想法了 对于这个项目,太多的其他项目,而不是 有足够的时间做我想做的事。在

也就是说,我确实喜欢修补进口钩子。。。在

In file X.py, you do not respect convention Y from PEP-8. This is unacceptable in a Python project.

真的吗?本项目旨在探索潜在的变化 对于Python的语法,有些语法是完全疯狂的,你会抱怨 关于PEP-8违规。。。在

好吧,也许你可以告诉我,也许可以改变我写的东西。在

People from the Python-ideas mailing lists mentioned that I should look at this project for my idea, but I don't know where to start.

请看一下documentation。 如果你把所有的例子都按展示的顺序看一遍,你 可能会学会如何实现你的想法。在

What about something like from __future__ import braces?

No.参见Examples that will never be included。在

You're no fun. Anyway, why this silly name for a project? The word "ideas" has nothing to do with import hooks in Python.

对于这个项目,我考虑使用importhook(单数)或 importhooks(复数)。但是,已经有一个名为 importhook我认为使用复数形式 可能是太让人困惑了。在

我决定使用ideas,因为我猜测主应用程序将是 让人们尝试建议 python-ideas。 几天后,我想到了上面的图片,这巩固了我的 主观性很强的观点认为这个名字的选择可能不是个坏主意。在

不管怎样,这个玩笑够了。如果你想知道更多关于这个项目的信息, 请咨询documentation。在

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java重写父类中的特定行   java Apache Commons CLI订购帮助选项?   java如何将数据添加到网格视图   java如何在Apache Camel批处理后移动文件?   java如何为日期范围的between子句编写hql查询?   雅加达ee开始Java编程,我应该从哪里开始?   排序Java8+流:检查我的objectinstances的两个字段的列表顺序是否正确   java如何将json转换为Map<String,Object>确保整数为整数   java不能在Spring数据JPA批处理过程中创建TransactionException   java损坏的PDF文件从FTP下载到使用Apache Common Net的设备   java无法使用Spring批处理和Wso2为XML架构命名空间找到Spring NamespaceHandler   java Android ImageView未显示在SherlockFragment中   Maven在构建时出错=无法识别Java路径   java如何使用批处理文件调用关闭处理程序?   java admob广告横幅重叠我的游戏屏幕安卓