当前位置: 首页 > 面试题库 >

python中已编译的regex对象的类型

洪黎昕
2023-03-14
问题内容

python中已编译的正则表达式的类型是什么?

我特别要评估

isinstance(re.compile(''), ???)

确实是出于自省的目的。

我有一个解决方案,就是拥有一些全局常量REGEX_TYPE = type(re.compile('')),但是它看起来并不十分优雅。

编辑: 我想这样做的原因是因为我有字符串列表和已编译的正则表达式对象。我想根据列表“匹配”字符串

  • 对于列表中的每个字符串,请尝试检查字符串是否相等。
  • 对于列表中的每个正则表达式,请尝试检查字符串是否与给定的模式匹配。

我想到的代码是:

for allowed in alloweds:
    if isinstance(allowed, basestring) and allowed == input:
        ignored = False
        break
    elif isinstance(allowed, REGEX_TYPE) and allowed.match(input):
        ignored = False
        break

问题答案:

如果没有明确指定某种类型,则使用type内置函数在运行时发现答案没有任何问题:

>>> import re
>>> retype = type(re.compile('hello, world'))
>>> isinstance(re.compile('goodbye'), retype)
True
>>> isinstance(12, retype)
False
>>>

在运行时发现类型可以防止您访问私有属性以及将来对返回类型的更改。在type这里使用并没有什么不好的地方,尽管根本不想知道类型。



 类似资料:
  • 对象类是每个类的基类,即每个类都扩展了对象类。Object类中有一个公共String toString()方法,而String类中也存在同样的方法。现在,String类还扩展了Object类,方法toString返回一个String类型。 我的问题是-:在编译Object类时,它将搜索String.class,而String类将搜索Object.class,从而创建一种相互依赖的类型。这种依赖是如

  • 问题内容: 我知道,这里已经问过许多类似的问题。我不是在问我是否可以保护编译的Java类- 因为显然您会说“不,您不能”。我问的是最著名的保护Java类免于反编译的方法是什么?如果您知道该领域的任何研究或学术论文,请告诉我。另外,如果您使用过某些方法或软件,请分享您的经验吗?任何种类的信息都将非常有用。谢谢。 问题答案: 首先,如果你的目标“只” Windows的市场有一个非常简单的防止“的.cl

  • 问题内容: 编译文件时,它还会将javadocs和注释嵌入到类文件中吗? 例如,如果您有大型javadocs,是否会影响类文件的整体大小?还是编译器会忽略以和开头的所有内容? 问题答案: 否。有几个调试选项会影响类文件的大小,但注释永远不会成为结果文件的一部分。 一些估计: 只是添加行号信息(几个字节) 包括所有变量的全名。这通常是最昂贵的选择。 只需添加源文件的名称(无路径)。 注意:通过反射可

  • 问题内容: 如何在Python中进行条件编译? 使用DEF吗? 问题答案: Python的编译方式与C,C ++甚至Java都不一样,Python文件是“即时”编译的,您可以认为它类似于诸如Basic或Perl的解释语言。1个 您可以仅通过使用if语句来执行与条件编译等效的操作。例如: 您可以对创建类,变量设置以及几乎所有内容执行相同的操作。 模拟IFDEF的最接近方法是使用hasattr函数。例

  • 我使用maven命令来清理、构建整个项目、创建war并部署到服务器。我不能使用Intellij来做这件事,因为我只有社区版。它在与intellij相同的目录中构建项目。 为了加快速度,我编写了一个脚本,可以在本地“target”目录中找到比服务器中更新的已编译文件,并进行复制。虽然一切正常,但问题是Intellij并没有将使用maven编译的类视为应该跳过并重新构建整个项目的类。 目前它的工作原理

  • 问题内容: 有没有一种简单的方法来确定变量是列表,字典还是其他?我回来的对象可能是任何一种类型,我需要能够分辨出两者之间的区别。 问题答案: 有两个内置函数可以帮助你识别对象的类型。你可以使用,如果你需要一个对象的确切类型,并以检查对象的反对的东西类型。通常,你希望使用大多数时间,因为它非常健壮并且还支持类型继承。 要获取对象的实际类型,请使用内置函数。将对象作为唯一参数传递将返回该对象的类型对象