我试图在函数调用(通过dict和关键字参数)中使用模板关键字args,同时能够覆盖一些参数.
例如,如果我们从包含该行的模块mymod开始 template_kvps = {'a': 1, 'b': 2}
我可以:
import mymod
def func(**kwargs):
pass
func(**mymod.template_kvps)
Run Code Online (Sandbox Code Playgroud)
然后我可以访问我的template_kvps内部func().但我希望能够以a最小的开销传递不同的值.
我能想到的只是在函数调用之前更改字典:kvps = {**template_kvps, 'a': 3}; func(**kvps),但这是行数的两倍,我在大约1000个测试脚本中的每一个中都使用了这个函数几次.
理想情况下func,我想要重新定义,以便我可以做到,func(**mymod.template_kvps, a=3)但事实上,Python错误与重复参数有关.
顺便说一下,我很高兴考虑改变模板kvps的格式.
后来添加的注释我问的问题有一些很好的答案(我已经接受了我认为是我问的最佳答案),但我想我已经问了一件坏事.我建议这是一个设计问题,如果我想要这样的默认参数,我认为最好用默认参数而不是模板字典创建包装器方法,如
def func_template(a=1, b=2):
func(a, b)
func_template(a=3)
Run Code Online (Sandbox Code Playgroud) 如果我在初始化 a 后尝试更改 TensorFlow 2 中的并行性tf.Variable,
import tensorflow as tf
_ = tf.Variable([1])
tf.config.threading.set_inter_op_parallelism_threads(1)
Run Code Online (Sandbox Code Playgroud)
我收到一个错误
运行时错误:初始化后无法修改操作间并行性。
我明白为什么会这样,但它(可能还有其他因素)导致我的测试相互干扰。例如
def test_model(): # this test
v = tf.Variable([1])
...
def test_threading(): # is breaking this test
tf.config.threading.set_inter_op_parallelism_threads(1)
...
Run Code Online (Sandbox Code Playgroud)
如何重置 TensorFlow 状态以便设置线程?
运行我的 docker 映像时,出现导入错误:
\nFile "./app/main.py", line 8, in <module>\nimport wekinator\nModuleNotFoundError: No module named 'wekinator'`\nRun Code Online (Sandbox Code Playgroud)\n如何在 Docker 中导入本地 python 模块?COPY 命令不会复制整个“app”文件夹(包括两个文件),从而保留正确的导入位置吗?
\n.\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 Dockerfile\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 README.md\n\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 app\n \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 main.py\n \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 wekinator.py\nRun Code Online (Sandbox Code Playgroud)\nFROM python:3.7\n\nRUN pip install fastapi uvicorn python-osc\n\nEXPOSE 80\n\nCOPY ./app /app\n\nCMD ["uvicorn", "app.main:app", "--host", "0.0.0.0", "--port", "80"]\nRun Code Online (Sandbox Code Playgroud)\n 以下是我的查询的简化版本。Debug 表中的 DebugReason 类型为INTEGER,DebugData 类型为STRING。GPS 表中没有这样的两个字段,所以我用 all 伪造了它NULL。我需要这样做的原因与这个问题无关,长话短说,我在接下来的一些过程中需要它
WITH RawDebug as
(
SELECT
STRUCT(DebugReason,DebugData) as Debug
FROM `devicedata.Debug.T*`
WHERE _TABLE_SUFFIX="20180624"
),
RawGPS AS (
SELECT
STRUCT(null as DebugReason,null as DebugData) as Debug
FROM
`devicedata.Gps.T*` AS g
WHERE _TABLE_SUFFIX="20180624"
)
select Debug
from RawDebug
UNION ALL
select Debug
from RawGPS
Run Code Online (Sandbox Code Playgroud)
BigQuery 说:
Error: Column 1 in UNION ALL has incompatible types: STRUCT<DebugReason INT64, DebugData STRING>, STRUCT<DebugReason INT64, DebugData INT64> at [18:1]
Run Code Online (Sandbox Code Playgroud)
我不知道出了什么问题......以及如何纠正?
我试图找出我的代码库中使用了多少不同的部分。如何最好地遍历导入树并找出导入什么?理想情况下,结果数据可以告诉我
注意:一种选择是使用此帖子运行所有测试和配置文件。然而,测试甚至不是跨代码库,有些区域没有测试,所以这不会有很大的代表性。
我有一个使用诗歌和毒素的Python项目。它有源代码、测试和脚本(juptext 笔记本)。我无法在脚本中导入开发依赖项,但可以在测试中导入。
当我遇到这个问题时,我创建了以下最小示例。一开始不行,后来我就摆弄了一下,现在可以了。因此,我删除了存在实际问题的项目,这样除了项目名称、位置、虚拟环境和 .git 目录之外,它是无法区分的,但这仍然不起作用。
更新删除所有构建工件和最小示例的 virtualenv 使其再次停止工作
更新将行添加到scripts: poetry installtox 命令仅修复了最小的示例
源代码、测试和脚本的布局如下
foo
+--foo
| +--__init__.py
|
+--tests
| +--__init__.py
| +--test_foo.py
|
+--scripts
| +--foo_script.py
|
+--pyproject.toml
+--tox.ini
Run Code Online (Sandbox Code Playgroud)
这些文件要么是空的,要么如下所示:
foo_script.py
import requests
Run Code Online (Sandbox Code Playgroud)
测试_foo.py
import requests
import pytest
def test():
assert True
Run Code Online (Sandbox Code Playgroud)
pyproject.toml
[tool.poetry]
name = "foo"
version = "0.1.0"
description = ""
authors = ["foo maker"]
[tool.poetry.dependencies]
python = "^3.7"
requests = "*"
[tool.poetry.dev-dependencies]
pytest = "^4.6"
[build-system]
requires = ["poetry>=0.12"]
build-backend …Run Code Online (Sandbox Code Playgroud) 我想使用高斯过程回归执行一些多变量回归,如使用版本 2 在 GPflow 中实现的那样。安装 pip install gpflow==2.0.0rc1
下面是一些示例代码,它生成一些 2D 数据,然后尝试使用 GPR 对其进行拟合,最后计算真实输入数据和 GPR 预测之间的差异。
最终,我想扩展到更高的维度,并针对验证集进行测试以检查是否过拟合并使用其他内核和“自动相关性确定”进行试验,但了解如何使其工作是第一步。
谢谢!
以下代码片段将在 jupyter notebook 中工作。
import gpflow
import numpy as np
import matplotlib
from gpflow.utilities import print_summary
%matplotlib inline
matplotlib.rcParams['figure.figsize'] = (12, 6)
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
def gen_data(X, Y):
"""
make some fake data.
X, Y are np.ndarrays with shape (N,) where
N is the number of samples.
"""
ys = []
for x0, x1 in zip(X,Y):
y = …Run Code Online (Sandbox Code Playgroud) 下面的代码改编自“书”(rustup docs --book),并按此形式按预期工作 - 作为单个 .rs 文件。我只是希望该模块驻留在一个单独的文件中。我读过“这本书”的第 7 章“使用包、板条箱和模块管理不断增长的项目”。我只是不明白“它”。我的想法是“主要”代码属于 main.rs,模块可能需要位于 lib.rs,但确切的形式和位置仍然是个谜。本章经常指出运行“cargo new/build another”,但没有说明从哪个目录运行。同样,它指出 src/main.rs 或 src/lib.rs 对于特定示例应该看起来像这样,但不清楚(没有完整路径)一个“src”目录实际上是否位于同一个目录中位置如另一个。
所以,我想有不止一种方法可以做到这一点,但我会很高兴得到一个相对简单的答案。在这种情况下,我只关心该模块是否可以从下面看到的 main() 函数访问。
mod guess_mod {
pub struct Guess {
value: i32,
}
impl Guess {
pub fn new(value: i32) -> Guess {
if value < 1 || value > 100 {
panic!("Guess value must be between 1 and 100, got {}.", value);
}
Guess{value}
}
pub fn value(&self) -> i32 {
self.value
}
}
}
use guess_mod::Guess;
fn print_guess_value(guess: Guess) {
println!("The …Run Code Online (Sandbox Code Playgroud) 我正在尝试为自定义 deepcopy实现此答案,但带有类型提示,而 mypy 对Any我从第三方库中使用的类型不满意。这是我可以失败的最小代码
# I'm actually using tensorflow.Module, not Any,
# but afaik that's the same thing. See context below
T = TypeVar("T", bound=Any)
def foo(x: T) -> None:
cls = type(x)
cls.__new__(cls)
Run Code Online (Sandbox Code Playgroud)
我懂了
error: No overload variant of "__new__" of "type" matches argument type "Type[Any]"
note: Possible overload variants:
note: def __new__(cls, cls: Type[type], o: object) -> type
note: def __new__(cls, cls: Type[type], name: str, bases: Tuple[type, ...], namespace: Dict[str, Any]) -> type
Run Code Online (Sandbox Code Playgroud)
如果我绑定 …
假设有一个Displaceable接口和一个实现Displaceable的类Circle.Displaceable有一个名为move()的方法,当然是在Circle中实现的.
在以下场景中会发生什么?
Circle a = new Circle(..);
Displaceable b = a;
b.move()
Run Code Online (Sandbox Code Playgroud)
对象是否会引用Circle的移动方法?
python ×6
deep-copy ×1
dictionary ×1
docker ×1
gpflow ×1
java ×1
module ×1
package ×1
pytest ×1
rust ×1
tensorflow ×1
tox ×1
type-hinting ×1