我用setuptools。在 中setup.cfg,我可以定义
[options.package_data]
myModule =
'*.csv'
Run Code Online (Sandbox Code Playgroud)
确保为我的用户安装数据。
我可以用它来达到同样的效果pyproject.toml吗?
我有一个在运行时从外部源获取的对象。它具有任意字符串值键,但只有数字值。它可能看起来像:
{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},但都不起作用。
什么是合适的类型声明?
function isFish(pet: Fish | Bird): pet is Fish {
return (<Fish>pet).swim !== undefined;
}
Run Code Online (Sandbox Code Playgroud)
箭头函数是否有相应的语法?
如何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'].
我如何在运行时重用我在类型级别定义的文字?
我想创建一个类层次结构,其中类的所有对象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
根据有关数据类继承的文档中的示例,子类中的字段会覆盖超类中的字段,但保留字段顺序。所以这个错误是有道理的。
这里有任何合适的解决方法,还是我必须手动实现所有内容?
要在 Android 中为 API 26+ 创建配套设备关联,我们应该调用 CompanionDeviceManager.associate(...)
如果系统没有找到任何要配对的设备,它应该调用CompanionDeviceManager.Callback.onFailure(...)传递给关联请求。文档指出,一种这样的错误情况是请求超时。
这个超时限制是多长时间,我如何将它设置为对我来说方便的某个值?
我有一个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)
使用字符类时,该问题似乎特别出现。它 …
使用 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) 我正在寻找一种在 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 …
我想通过看,从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)已经足够好了,但问题仍然困扰着我的大脑.
有没有这样的类型类?如果有,它叫什么?如果没有,为什么没有必要呢?