- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试使用 Cython 加速 PEP 484 类型的 python 脚本。我想保持一些语义和可读性。
之前,我有一个
Flags = int
def difference(f1: Flags, f2: Flags):
return bin(f1 ^ f2).count("1")
f1
的信息。和
f2
是标志的集合。所以,我显然尝试过
import cython
Flags = cython.int
def difference(f1: Flags, f2: Flags):
return bin(f1 ^ f2).count("1")
mypy
失败了,提示
flags.py:5: error: Variable "flags.Flags" is not valid as a type
flags.py:5: note: See https://mypy.readthedocs.io/en/latest/common_issues.html#variables-vs-type-aliases
flags.py:6: error: Unsupported left operand type for ^ (Flags?)
import cython
def difference(f1: cython.int, f2: cython.int):
return bin(f1 ^ f2).count("1")
cython
的缺少库 stub )。
最佳答案
您在这里遇到的问题是,由于没有与 cython 相关的类型提示,不幸的是,表达式 cython.int
的确切含义是模棱两可的。应该是--因此模棱两可Flags = cython.int
应该是这个意思。
特别是,cython.int
可能是这种情况。应该是一个值,而不是一个类型。在这种情况下,Flags = cython.int
将只是一个常规变量赋值,而不是类型别名。
虽然 mypy 理论上可以尝试分析程序的其余部分来解决这种歧义,但这样做会有些昂贵。因此,它有点武断地决定 cython.int
必须是一个值(例如常量),这反过来会导致您的 difference
功能无法进行类型检查。
但是,如果您使用 cython.int
type 直接在类型签名中,我们不会得到这样的歧义:在这种情况下,该表达式很可能意味着某种类型,因此 mypy 决定以另一种方式解释该表达式。
那么,你如何解决这个问题?好吧,有几件事你可以尝试,我将按照大致递减的顺序(以及递增的 hackyness 顺序)列出。
py.typed
一样简单。文件到 Cython 包。int
以及您需要的其他一些东西。例如,您可以创建一个如下所示的“stubs/cython.pyi”文件:from typing import Any
# Defining these two functions will tell mypy that this stub file
# is incomplete and to not complain if you try importing things other
# than 'int'.
def __getattr__(name: str) -> Any: ...
def __setattr__(name: str, value: Any) -> None: ...
class _int:
# Define relevant method stubs here
cython
的类型提示。模块。这意味着当您执行 cython.int
,mypy 将看到它是您在上面定义的类,因此将有足够的信息知道 Flags = cython.int
很可能是类型别名。 Flags
仅在执行类型检查时分配。您可以通过 typing.TYPE_CHECKING
进行此操作多变的:from typing import TYPE_CHECKING
import cython
# The TYPE_CHECKING variable is always False at runtime, but is treated
# as being always True for the purposes of type checking
if TYPE_CHECKING:
# Hopefully this is a good enough approximation of cython.int?
Flags = int
else:
Flags = cython.int
def difference(f1: Flags, f2: Flags):
return bin(f1 ^ f2).count("1")
Flags
如果它包含在这样的 if 语句中,则意味着它是一个类型别名。 Flags
cython.int
的类型别名,使其成为子类:import cython
class Flags(cython.int): pass
def foo(a: Flags, b: Flags) -> Flags:
return a ^ b
cython.int
回到可以合理地假设它是一种类型的上下文中,并且 mypy 最终不会报告错误。cython.int
. 关于cython - mypy 不喜欢别名 Cython 类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61237827/
假设您有下表,名为 Likes: A|B --- a|b a|f a|e a|i b|a b|i c|d e|p 在此表中,A 中的值表示“喜欢”B 中的人。因此,a 喜欢 b,a 喜欢 f,a 喜欢
请访问此处观看直播https://ibnul.neocities.org/_temporary/au2pr4/like-dis-icon-active-effect.html 这里我有多个评论部分,每
我想要一个喜欢/不喜欢的超链接来在我的页面上显示不同的内容:当点击“喜欢”时,显示“好”;单击“不喜欢”时,显示“不好”。我的代码是这样的: function Homepage(){ t
我们已经建立了一个 Facebook Page Tab application用Like Gate .我们之前已经做过无数次了,在这方面,这个应用程序没有任何异常。 在我们的 ASP.Net 4.0
我正在尝试在我的页面上实现一个喜欢/不喜欢按钮。我设法让按钮工作(点击时它会变成喜欢,反之亦然),它还会在数据库表上创建或删除类似的东西。现在的问题是喜欢的计数器。它仅在我第一次单击按钮时有效,即如果
我想在我的 Android 应用程序中集成一个赞按钮。我用了代码 likeWebView = (WebView) findViewById( R.id.webView1 ); likeWebView
我有一个漫画网站,我希望用户可以为每部漫画和每件艺术品一次投票。 我的代码似乎有两个问题: 1) 我只希望一个用户每张图片投票一次...所以我想捕获他们的信息并将其存储在数据库中。我有一个 ON DU
我正在开发 web 应用程序,我必须像 facebook 那样实现“喜欢”系统。应用程序将包含客户可以“喜欢”的几类产品。所以我开始创建数据库,但遇到了一个障碍。据我了解,有两种方法可以做到这一点:
我需要一个 mysql 查询方面的帮助。我无法找到特定查询的解决方案。我什至不确定,如果 LIKE 运算符是我正在寻找的。 我想要实现的是,找到所有包含 url 的行,如果该 url 不是 foo.c
如何为 Like 编写动态 LINQ 方法条款。 供引用,有Dynamic LINQ OrderBy on IEnumerable / IQueryable .我正在寻找一个类似的动态 Like条款。
This question already has answers here: Cumulative number of unique values in a column up to current
我需要任何用户能够每 24 小时点赞一次 我为此写了一个函数 const LIKE_HEART = 'like_heart'; const LIKE_FINGER = 'like_finger'; p
让我在这里解释一下整个事情,以便您可以清楚地了解情况: 我在 Facebook 上有一个页面,这些见解(页面上的和来自图形 API 的)为我提供了很多有值(value)的信息,但我需要更深入。我正在考
给定这个脚本: DECLARE @token NVARCHAR(max) SET @token = 'mytexttosearchfor' SELECT * FROM myTable WHERE my
我怎样才能做一个Like-query,要搜索多个值? $searchWords = explode(' ', Input::get('search')); 然后我得到一组用于搜索的单词。 我怎样才能通
我正在尝试在页面上制作一个“赞”按钮,但似乎无法使其正常工作。基本上有三个函数使用ajax将数据发送到更新数据库的php页面。我已经检查了数据库并且所有三个更新都正确。如果用户最初不喜欢并单击,它会正
我有两张 table 在“用户”表中,每个用户都有一些技能。它们位于单个列上并连接在一起。在表“技能”上,每个技能都有一个关联的标签。 碰巧有些用户的技能不再在表“技能”中引用。 我想做的选择应该列出
所以我正在尝试设计一个数据库来跟踪观看次数、喜欢次数和下载次数。现在要跟踪的条目数量预计为 1m 或更多,所以通常我会每天跟踪每个条目,但对于 1m,我担心性能甚至可能是硬盘大小。 客户希望能够显示上
我像在 Firebase 事件数据库中一样实现了该系统。点赞计数器位于 EventModel -> likesInfo -> likesNumber 处。问题在于数据发散,例如,如果两个用户快速(0.
假设两个用户正在使用一个应用程序,并已授予该应用程序适当的权限来检索他们的点赞。是否可以使用 FQL 或图形 api 来查找他们的共同点?类似于如何使用图形 API 在两个用户之间找到共同的 frie
我是一名优秀的程序员,十分优秀!