小编Lud*_*igH的帖子

在 pyproject.toml 中指定包数据

我用setuptools。在 中setup.cfg,我可以定义

[options.package_data]
myModule =
    '*.csv'
Run Code Online (Sandbox Code Playgroud)

确保为我的用户安装数据。

我可以用它来达到同样的效果pyproject.toml吗?

python pip setuptools

35
推荐指数
2
解决办法
3万
查看次数

具有未知键但只有数字值的对象的打字稿类型?

我有一个在运行时从外部源获取的对象。它具有任意字符串值键,但只有数字值。它可能看起来像:

{foo:1, bar:3} 
Run Code Online (Sandbox Code Playgroud)

但它也可能看起来像

{asdf: 1}
Run Code Online (Sandbox Code Playgroud)

我希望打字稿编译器知道对于所有存在的键,该值是 numeric。我尝试过诸如type numObj = {string: number}和 之类的东西type numObj = {[string]: number},但都不起作用。

什么是合适的类型声明?

types object typescript

24
推荐指数
2
解决办法
3万
查看次数

箭头样式用户定义类型保护?

用户定义类型保护打字稿手册定义了一个示例类型保护为

function isFish(pet: Fish | Bird): pet is Fish {
    return (<Fish>pet).swim !== undefined;
}
Run Code Online (Sandbox Code Playgroud)

箭头函数是否有相应的语法?

types typescript arrow-functions

10
推荐指数
2
解决办法
1957
查看次数

在运行时从 python 文字类型中获取文字?

如何Literal[]从 from 中获取文字值typing

from typing import Literal, Union

Add = Literal['add']
Multiply = Literal['mul']
Action = Union[Add,Multiply]

def do(a: Action):
    if a == Add:
        print("Adding!")
    elif a == Multiply:
        print("Multiplying!")
    else:
        raise ValueError

do('add')
Run Code Online (Sandbox Code Playgroud)

上面的代码类型检查,因为'add'是 type Literal['add'],但在运行时,它会引发 ValueError 因为字符串'add'typing.Literal['add'].

我如何在运行时重用我在类型级别定义的文字?

python types typing literals python-3.8

9
推荐指数
1
解决办法
3490
查看次数

我可以为数据类的子类提供默认值吗?

我想创建一个类层次结构,其中类的所有对象Base都有一个字段field1,但不同的子类有不同的默认值field1。这些类是数据持有者,因此dataclasses看起来是一个完美的库。

考虑以下 python 3.7+ 代码。

from dataclasses import dataclass, field
from typing import Any, Iterable

@dataclass
class Base:
    field1: Iterable[Any]

@dataclass
class Sub(Base):
    field2: Any
    field1: Iterable[Any] = field(default_factory=list)
Run Code Online (Sandbox Code Playgroud)

代码失败,给了我TypeError: non-default argument 'field2' follows default argument. 这有点令人惊讶,因为遵循超类的field2非默认参数,而该类的默认参数实际上位于.field1field1Subfield2

根据有关数据类继承的文档中的示例,子类中的字段会覆盖超类中的字段,但保留字段顺序。所以这个错误是有道理的。

这里有任何合适的解决方法,还是我必须手动实现所有内容?

python python-dataclasses

7
推荐指数
1
解决办法
1700
查看次数

如何设置 CompanionDeviceManager.associate() 的超时时间?

要在 Android 中为 API 26+ 创建配套设备关联,我们应该调用 CompanionDeviceManager.associate(...)

如果系统没有找到任何要配对的设备,它应该调用CompanionDeviceManager.Callback.onFailure(...)传递给关联请求。文档指出,一种这样的错误情况是请求超时。

这个超时限制是多长时间,我如何将它设置为对我来说方便的某个值?

android android-8.0-oreo

6
推荐指数
0
解决办法
261
查看次数

如何在Haskell中查找和替换Unicode字符?

我有一个Unicode文件,其中包含MediaText标记中的(瑞典)维基百科文章。我想清除所有标记。在某些情况下,我想从标记标签中提取文本,例如超链接的链接标题(如简化的wikiextractor)。

我的方法是在文件上运行一组正则表达式以删除标记。在链接示例中,我需要替换[[link]]link。只要文本不包含Unicode字符(例如),我就可以使用正则表达式很好地解决此问题ö

我尝试过的示例:

ghci> :m +Data.Text
ghci> subRegex (mkRegex "\\[\\[([() a-zA-Z]*)\\]\\]") "Se mer om [[Stockholm]]" "\\1"
"Se mer om Stockholm"
ghci> subRegex (mkRegex "\\[\\[([() a-zA-Z]*)\\]\\]") "Se mer om [[Göteborg]]" "\\1"
"Se mer om [[G\246teborg]]"
Run Code Online (Sandbox Code Playgroud)

为什么这不起作用?如何使正则表达式引擎意识到这ö确实是一个普通字母(至少在瑞典语中如此)?

编辑: 问题似乎并不真正存在于模式中,而是在引擎中。如果我允许除q链接文本之外的所有字符,则ö可以允许。但是不是...

ghci> subRegex (mkRegex "\\[\\[([^q]*)\\]\\]") "[[Goteborg]]" "\\1"
"Goteborg"
ghci> subRegex (mkRegex "\\[\\[([^q]*)\\]\\]") "[[Göteborg]]" "\\1"
"[[G\246teborg]]"
ghci> subRegex (mkRegex "ö") "ö" "q"
"q"
ghci> subRegex (mkRegex "[ö]") "ö" "q"
"\246"
Run Code Online (Sandbox Code Playgroud)

使用字符类时,该问题似乎特别出现。它 …

regex unicode haskell

5
推荐指数
1
解决办法
259
查看次数

删除名称无效的 conda 环境?

使用 PyCharm 我创建了一个带有 conda 解释器的项目。Pycharm 会自动为其创建一个 conda 环境。不久之后,我意识到我想要该项目的另一个位置。因此我删除了项目文件夹。然后我意识到我想删除 conda 环境。

所以首先我验证环境是否存在。

(base) C:\Users\Ludvig>conda env list
WARNING: The conda.compat module is deprecated and will be removed in a future release.
WARNING: The conda.compat module is deprecated and will be removed in a future release.
# conda environments:
#
base                  *  C:\Users\Ludvig\Anaconda3
2019 Proteinanalys       C:\Users\Ludvig\Anaconda3\envs\2019 Proteinanalys
Run Code Online (Sandbox Code Playgroud)

然后我尝试删除它。

(base) C:\Users\Ludvig>conda env remove --name "2019 Proteinanalys"
WARNING: The conda.compat module is deprecated and will be removed in a future release.
WARNING: The conda.compat module …
Run Code Online (Sandbox Code Playgroud)

conda

5
推荐指数
1
解决办法
2067
查看次数

在Python中部分应用的高性能方法?

我正在寻找一种在 python 中部分应用函数的方法,该方法易于理解、可读、可重用,并且尽可能少地容易出现编码错误。最重要的是,我希望该样式尽可能具有高性能 - 堆栈上的帧越少越好,部分应用的函数的内存占用也越少越好。我考虑了 4 种风格并写了下面的例子:

import functools

def multiplier(m):
    def inner(x):
        return m * x

    return inner

def divide(n,d):
    return n/d

def divider(d):
    return functools.partial(divide,d=d)

times2 = multiplier(2)
print(times2(3))  # 6

by2 = divider(2)
print(by2(6)) # 3.0

by3 = functools.partial(divide,d=3)
print(by3(9)) # 3.0

by4 = lambda n: divide(n,4)
print(by4(12)) # 3.0
Run Code Online (Sandbox Code Playgroud)

我对他们的分析是:

times2是一个嵌套的东西。我猜想 python 用边界做了一个闭包m,一切都很好。该代码是可读的(我认为)并且易于理解。没有外部库。这就是我今天使用的风格。

by2有一个明确的命名函数,这对用户来说很简单。它使用 functools,因此它为您提供了额外的导入。我在某种程度上喜欢这种风格,因为它是透明的,如果我愿意的话,我可以选择divide其他方式使用。将此与inner不可到达的进行对比。

by3就像by2,但是迫使代码的读者感到舒服,functools.partial因为他们就在眼前。我不太喜欢的是 PyCharm 无法为我的工具提示提供参数应该functools.partial是什么,因为它们实际上是by3 …

python lambda partial-application

5
推荐指数
1
解决办法
609
查看次数

haskell中是否有类型类用于布尔值?

我想通过看,从2006年comonad应用高超的短期和教育的文章,学习一些Haskell的链接,它包含了像一个表达rule (U (a:_) b (c:_)) = not (a && b && not c || (a==b))whre U是拉链comonad.这data U x = [x] x [x]在comonad操作的实现中得到了说明.

试图了解更多,我试图手动注释表达式的类型.一个明智的选择似乎是rule :: U Bool -> Bool,但这似乎有点......限制性.我可以想象其他类型能够具有真实性值,例如Ints(0对应于false,所有其他值可以是True)和其他.

如果有一个类型类称为truthyness truthy,我想我可以写rule :: (Truthy t) => U t -> Bool.因为我想迭代rule,第一种类型的注释(rule :: U Bool -> Bool)已经足够好了,但问题仍然困扰着我的大脑.

有没有这样的类型类?如果有,它叫什么?如果没有,为什么没有必要呢?

haskell typeclass

4
推荐指数
1
解决办法
426
查看次数