轻松创建导入钩子来测试想法。
ideas的Python项目详细描述
想法
Ideas:使Python的语法更容易扩展。
文件
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
相同,使您能够编写
可以使用导入钩子来完成此操作。
使用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。在
- 项目
标签: