我正在尝试创建一个泛型类来表示一个值具有下限和上限,并强制执行这些边界。
from typing import Any, Optional, TypeVar
T = TypeVar("T")
class Bounded(object):
def __init__(self, minValue: T, maxValue: T) -> None:
assert minValue <= maxValue
self.__minValue = minValue
self.__maxValue = maxValue
Run Code Online (Sandbox Code Playgroud)
但是,mypy 抱怨说:
error: Unsupported left operand type for <= ("T")
Run Code Online (Sandbox Code Playgroud)
显然,输入模块不允许我表达这一点(尽管看起来Comparable将来可能会发生添加)。
我认为检查该对象具有__eq__和__lt__方法就足够了(至少对于我的用例)。目前有什么方法可以在 Python 中表达这个要求,以便 Mypy 理解它吗?
好,
我有两个字符串,"Hello\nWorld!"和Hello\\nWorld!.我必须比较那些\n和\\n平等的方式.
多数民众赞成并不难.我只是string1.replace("\n", "\\n").
但是,如果我必须正确执行包括unicode转义在内的所有转义字符,那么手动替换不是一种选择.
UPDATE
Exaple案例:
我从文件中读取Hello\nWorld!(如在编辑器中打开文件时所见).Python会看到Hello\\nWorld!
我想比较最后一个与第一个相同的方式.
我有一个双端队列,我们称之为deq。我需要从两端进行迭代,并且在这些迭代过程中都不会对其进行任何修改。
自然,我不想创建另一个双端队列。我考虑过了reversed,但是我不知道它是否真的创建了任何副本。例如,如果我写的是:
reversed_deq = reversed(deq)
Run Code Online (Sandbox Code Playgroud)
它会引用完全相同的内存位置,而是简单地反向迭代它,而不使用更多的内存/时间吗?
这似乎是进入双端队列的逻辑方法,但是我想确保自己没有遗漏任何东西。
我找不到用于双端队列的代码(通常它们具有这些东西的“ python等效项,但我找不到”),由于某种原因-无论运行什么,timeit总是给我15到16之间的值ns(对于我尝试计时的所有事情,不仅限于此)
好,
如果我有一个字符串,比方说x = 'Hello World!',我该如何从中解析python字符串?我知道我可以使用正则表达式"[^"]*",但我如何解析所有有效的python字符串?解决方案不一定是正则表达式,但如果可行,那就太好了.
例如:
x = 'Hello World!' => Hello World!x = '\'Stack Overflow\'' => \'Stack Overflow\'x = 'x=\"x=\'Python\n\'\"' => x=\"x=\'Python\n\'\"对不起,如果我无法解释清楚,但这不像非母语人士那么容易.
如果我有struct,例如:
#[derive(Clone, Copy)]
#[repr(C, packed)]
pub struct SomeData {
a: u16,
b: u64,
c: u32,
d: u16,
}
Run Code Online (Sandbox Code Playgroud)
如何将其复制到内存中的特定位置,例如0x1000有效地复制到内存中的某个位置?会这样的吗?
let dst_addr: u64 = 0x1000;
let src = SomeData {a: 1, b: 2, c: 3, d: 4};
unsafe {
let tmp: &[u8; 10] = transmute(src);
copy(dst_addr as *mut _, tmp);
}
Run Code Online (Sandbox Code Playgroud)
请注意,repr(C, packed)这里实际需要这部分.
该软件在裸x86_64,ring 0上运行,没有操作系统或其他限制.另外,我在没有标准库的情况下进行编程,因此只有core库才能实现这一点.
这当然是不安全的,但这不是问题.
编辑:只是澄清:我正在复制到未初始化的内存.
python ×4
string ×2
backslash ×1
duck-typing ×1
escaping ×1
low-level ×1
memmove ×1
mypy ×1
parsing ×1
python-2.7 ×1
python-3.x ×1
raw-pointer ×1
regex ×1
replace ×1
rust ×1
typechecking ×1
unsafe ×1