Python 中的裸词/新关键字

2024-02-08

我想看看是否可以定义新的关键字,或者,正如它们所称的那样销毁所有软件的“WAT”谈话 https://www.destroyallsoftware.com/talks/wat当讨论 Ruby 时,用 Python 来讨论。

我想出了一个在其他地方找不到的答案,所以我决定在 StackOverflow 上以问答方式分享它。


到目前为止,我只在 REPL 中尝试过这个,在任何块之外。也许也可以让它在其他地方发挥作用。

我把它放在我的 python 启动文件中:

import sys, traceback

def bareWordsHandler(type_, value, traceback_):
    if isinstance(value, SyntaxError):
        import traceback

        # You can probably modify this next line so that it'll work within blocks, as well as outside them:
        bareWords = traceback.format_exception(type_, value, traceback_)[1].split()

        # At this point we have the raw string that was entered.
        # Use whatever logic you want on it to decide what to do.
        if bareWords[0] == 'Awesome':
            print(' '.join(bareWords[1:]).upper() + '!')
            return
    bareWordsHandler.originalExceptHookFunction(type_, value, traceback_)

bareWordsHandler.originalExceptHookFunction = sys.excepthook
sys.excepthook = bareWordsHandler

快速 REPL 会话演示后记:

>>> Awesome bare words
BARE WORDS!

负责任地使用。

编辑:这是一个更有用的例子。我添加了一个run关键词。

if bareWords[0] == 'from' and bareWords[2] == 'run':
        atPrompt.autoRun = ['from ' + bareWords[1] + ' import ' + bareWords[3].split('(')[0],
                            ' '.join(bareWords[3:])]
        return

atPrompt.autoRun是一个变量列表,当显示我的提示时,将自动检查并反馈这些变量。因此,例如,我可以这样做:

>>> from loadBalanceTester run loadBalancerTest(runJar = False)

这被解释为:

from loadBalancerTest import loadBalancerTest
loadBalancerTest(runJar = False)

它有点像宏 - 我想做这种事情是很常见的,所以我决定添加一个关键字,让我可以用更少的击键来完成它。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python 中的裸词/新关键字 的相关文章

  • 如何在 PyCharm 中设置运行配置的默认工作目录

    当我想运行众多 python 脚本之一时 我点击运行 这会创建一个新的运行配置 该配置的工作目录是 python 脚本文件所在的文件夹 相反 它应该从项目范围的固定文件夹运行 我想以某种方式进行设置 但我真的不明白为什么 这有点奇怪 因为我
  • 使用 NaN 计算 numpy 数组中的移动平均值

    我正在尝试计算包含 NaN 的大型 numpy 数组中的移动平均值 目前我正在使用 import numpy as np def moving average a n 5 ret np cumsum a dtype float ret n
  • 使用 python 中的 java 库

    我有一个 python 应用程序和 java 应用程序 python 应用程序为 java 应用程序生成输入并在命令行上调用它 我确信一定有一个更优雅的解决方案 就像使用 JNI 从 Java 调用 C 代码一样 有什么指点吗 仅供参考 我
  • @monthly cron 作业不可靠

    我们的客户希望我们每月创建一份报告 过去 我们使用 monthly cron 作业来完成此任务 但这并不可靠 服务器可能会在这一分钟内宕机 Cron 不会重新运行这些作业 如果服务器已启动 此时数据库可能无法访问 如果服务器已启动且数据库已
  • 添加反斜杠而不转义[重复]

    这个问题在这里已经有答案了 我需要逃离 字符串中的 字符 问题是每当我string string replace 结果是 添加额外的反斜杠来转义原始反斜杠 如何删除这个多余的反斜杠 结果 仅显示 实际上字符串是 gt gt gt str g
  • Ttk Treeview:跟踪键盘选择

    这是一个带有 ttk 树视图的 Tk 小部件 当用户单击该行时 会执行某些功能 此处仅打印项目文本 我需要的是以下内容 最初的重点是文本输入 当用户按下 Tab 键时 焦点应该转到第一行 并且应该执行绑定到 Click 事件的函数 当用户使
  • 将这个使用 lambda 解包的元组从 Python 2 移植到 Python 3 的最 Pythonic 方法

    我有以下 Python 2 代码 它在 lambda 中解压元组 该 lambda 包含在 for 循环内 for lab lab pred length in zip labels labels pred sequence lengths
  • 散景服务器获取鼠标位置

    我正在开发一个带有散景 0 12 2 的交互式应用程序 它根据特定的交互更新绘图 现在 我使用滑块来更改图中字形的位置 但实际上我想访问鼠标在特定图中的位置 数据集是一个多维矩阵 张量 密集数据 每个图在特定位置显示一个维度 如果我更改一个
  • Seaborn 条形图条之间没有空格

    我使用下面的代码创建了一个 Seaborn 条形图 它来自https www machinelearningplus com plots top 50 matplotlib visualizations the master plots p
  • 如何判断Python对象是否是字符串?

    如何检查 Python 对象是否是字符串 常规字符串或 Unicode Python 2 Use isinstance obj basestring 对于要测试的对象obj Docs https docs python org 2 7 li
  • 来自异常导入 PendingDeprecationWarning ModuleNotFoundError:没有名为“异常”的模块

    我正在尝试使用Python 创建一个word 文档 我在终端中 pip install python docx 我的代码如下所示 from docx import Document document Document document sa
  • 使用 Python gdata 和 oAuth 2 对日历进行身份验证

    我正在将一个 Python 应用程序从 oAuth 1 迁移到 oAuth 2 该应用程序读取用户的 Google 日历提要 使用 oAuth 1 如果用户可以使用他的 GMail 进行身份验证 我的应用程序将打开浏览器 帐户并授权访问 我
  • 使用每日频率格式化 x 轴

    我正在尝试获取每日数据图 我有 3 个月的数据 每天都很难指出 如何格式化 x 轴 以便我可以获得每个日期 可以使用以下命令更改主要刻度的频率set major locator mdates DayLocator interval 5 如下
  • 默认可变参数的惯用方式

    在 python 中 如果直接将可变类型设置为默认参数 则会出现众所周知的边缘情况 def foo x return x y foo y append 1 print foo 通常的解决方法是将参数默认为None然后将其放入体内 然而 有
  • 无法运行bjam编译boost python教程

    我正在尝试跟随本教程 http www boost org doc libs 1 55 0 libs python doc tutorial doc html python hello html关于为 Windows 的 python 包装
  • 在Python中使用Counter()来构建直方图?

    我在另一个问题上看到我可以使用Counter 计算一组字符串中出现的次数 所以如果我有 A B A C A A I get Counter A 3 B 1 C 1 但现在 我如何使用该信息来构建直方图 对于您的数据 最好使用条形图而不是直方
  • 无法运行特定的 .pyc 文件

    使用编译在unix工作的python文件后 import py compile py compile compile server py 我在同一目录中获得 pyc 文件 但是当我尝试在 putty 中使用 server pyc 运行该文件
  • 我的 R 平方分数为负,但使用 k 倍交叉验证的准确度分数约为 92%

    对于下面的代码 我的 r 平方分数为负 但使用 k 折交叉验证的准确度分数为 92 这怎么可能 我使用随机森林回归算法来预测一些数据 数据集的链接在下面的链接中给出 https www kaggle com ludobenistant hr
  • 有没有办法只从 python 列表中输出数字?

    简单的问题 list 1 asdada 1 123131 131 blaa adaraerada 0 000001 34 12451235265 stackoverflow is awesome 我想创建一个list 2这样它只包含数字 l
  • 如何在Python中从stdin中逐行读取

    每个人都知道如何在 C 中计算 STDIN 中的字符 但是 当我尝试在 python3 中执行此操作时 我发现这是一个难题 计数器 py import sys chrCounter 0 for line in sys stdin readl

随机推荐

  • RegExp 和 String 组合导致 Chrome 崩溃

    我有以下正则表达式来验证电子邮件地址 A Za z0 9 a zA Z0 9 A Za z0 9 a zA Z0 9 A Za z 2 在基本电子邮件上运行它效果很好 A Za z0 9 a zA Z0 9 A Za z0 9 a zA Z
  • 使用 *args 和 **kwargs [重复]

    这个问题在这里已经有答案了 所以我对这个概念有困难 args and kwargs 到目前为止我了解到 args 参数列表 作为位置参数 kwargs 字典 其键成为单独的关键字参数 值成为这些参数的值 我不明白这对什么编程任务有帮助 Ma
  • 如何同时使用 telegram bot python

    我不知道如何使用 python 在电报中使用机器人进行多进程 我创建了一个线程 但如果该线程未完成 机器人将无法回复消息 horaPurga now replace hour 23 minute 36 second 59 microseco
  • RESTEasy - javax.ws.rs.NotFoundException:找不到完整路径的资源

    我尝试在 GWT 项目中使用 RESTEasy 实现 REST 服务 但是当我进入相应的 URI 时 应用程序返回 Grave failed to execute javax ws rs NotFoundException Could no
  • 不活动后会话自动注销

    快速会话中是否有内置功能 可以在给定的不活动时间后启用自动注销 我如下使用它 并希望它在会话半小时不活动时注销 app use session key sessid secret This is secret resave true sav
  • C#“使用”块

    我有类似下面的代码 这里有人提到 WebClient Stream 和 StreamReader 对象都可以从使用块中受益 两个简单的问题 1 这个小片段在使用块时会是什么样子 我自己做研究没有问题 所以资源链接很好 但只看一个例子会更快更
  • 与具有私有成员函数的类相比,未命名命名空间中的自由函数有什么好处?

    与拥有不带任何参数的私有类成员函数并直接访问成员变量相比 拥有自由函数 在匿名命名空间中并且只能在单个源文件中访问 并将所有变量作为参数发送有什么优势 header class A int myVariable void DoSomethi
  • C# 中的赋值运算符

    据我了解 与 C 不同 在 C 中不可能重写赋值运算符 如果我们想要将类 C 的实例 i1 分配给另一个实例 i2 C 类 则有必要创建一个复制方法 但困境来了 我有一个通用的 T 类 public class Node
  • 如何选择 div 内的图像来更改其来源?

    我有以下 div 并且我知道该 DIV 的选择器 Id div class event img src Content Images Icons calendar16 png Event Name div 但我不知道 图像是什么 我需要一些
  • 是否有可能在 Swift 中创建一个仅限于一个类的数组扩展?

    我可以制作一个仅适用于字符串等的数组扩展吗 从 Swift 2 开始 现在可以通过以下方式实现协议扩展 为符合类型提供方法和属性实现 可选地受到附加约束的限制 一个简单的例子 为所有符合的类型定义一个方法 到SequenceType 例如A
  • Hive 中的 ParseException

    我正在尝试使用UDF在蜂巢中 但是当我尝试使用创建临时函数时userdate as unixtimeToDate 我得到这个异常 hive gt create temporary function userdate1 as unixtime
  • Mod_rewrite:在特定页面上强制使用 SSL。在非安全页面上添加 www

    我知道这是一个常见的话题 但我已尽最大努力借助在网上搜索到的解决方案来解决它 我们有一个链接到子域 secure mysite com 的证书 我们希望实现以下目标 我们需要在以下路径及其子页面上强制使用 SSL http mysite c
  • .NET 字符串操作区分大小写吗?

    NET 字符串函数是这样的吗IndexOf blah 区分大小写 据我所知 它们不是 但出于某种原因 我在我的应用程序中看到了错误 其中查询字符串中的文本采用驼峰式大小写 如 UserID 并且我正在测试IndexOf userid 是的
  • JavaScript 中的 Char 数组到 Int32

    我有一个 char 数组 data 和一个 Int32 dictIdFrame 我希望 dictIdFrame 采用 data i i 3 的 ASCII 0 255 值 我的意思是四个字节变成一个 int32 其中 data i 是不太重
  • android.util.Log 中的错误或功能? - Log.isLoggable(DEBUG) = false 但 Log.d() 未禁用

    更新 重新制定问题和标题 我一直认为昂贵的 android 日志记录方法可以通过询问日志记录是否像这样活跃来优化 import android util Log if Log isLoggable MyContext Log DEBUG L
  • 用于将条件数据复制到特定单元格的 VBA 宏

    我是 VBA 编程新手 我正在寻找从匹配条件的不同工作表中获取数据 然后从一个特定单元格复制并粘贴到另一个特定单元格 7 次 我的代码不起作用 我正在寻求改进它 当我运行代码时 我在 IF 语句开头被标记为运行时错误 1004 方法 对象范
  • Twitter 的 Bootstrap Datepicker 缺少 Glyphicons

    我正在尝试使用引导程序中的日期选择器 http eternicode github io bootstrap datepicker http eternicode github io bootstrap datepicker 并且一切正常
  • JNI 和构造函数

    我有一个已编译的库 需要在项目中使用 简而言之 它是一个用于与特定硬件交互的库 我拥有的是 a 和 dll 库文件 分别适用于 Linux 和 Windows 以及一堆 C h 头文件 其中包含其中描述的所有公共函数和类 问题是该项目需要使
  • 嵌入式Tomcat:如何配置请求线程数

    In 嵌入式Tomcat 我该如何配置请求线程数 我似乎无法让它发挥作用 我尝试了所有这些但没有成功 tomcat getConnector setProperty maxThreads 20 tomcat getConnector set
  • Python 中的裸词/新关键字

    我想看看是否可以定义新的关键字 或者 正如它们所称的那样销毁所有软件的 WAT 谈话 https www destroyallsoftware com talks wat当讨论 Ruby 时 用 Python 来讨论 我想出了一个在其他地方