小编Joe*_*ley的帖子

Python:在方法调用args中,覆盖unpacked dict的关键字参数

我试图在函数调用(通过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)

python dictionary keyword-argument

7
推荐指数
2
解决办法
1568
查看次数

如何在 TensorFlow 2 中重置初始化

如果我在初始化 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 状态以便设置线程?

python pytest tensorflow tensorflow2.0

6
推荐指数
1
解决办法
1631
查看次数

在 Docker 容器中导入 python 文件

运行我的 docker 映像时,出现导入错误:

\n
File "./app/main.py", line 8, in <module>\nimport wekinator\nModuleNotFoundError: No module named 'wekinator'`\n
Run 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\n
Run Code Online (Sandbox Code Playgroud)\n
FROM 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"]\n
Run Code Online (Sandbox Code Playgroud)\n

python python-import docker

6
推荐指数
2
解决办法
8398
查看次数

BigQuery - UNION ALL 的类型不兼容?

以下是我的查询的简化版本。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)

我不知道出了什么问题......以及如何纠正?

google-bigquery

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

如何获取python导入树

我试图找出我的代码库中使用了多少不同的部分。如何最好地遍历导入树并找出导入什么?理想情况下,结果数据可以告诉我

  • 导入了哪些对象
  • 定义导入对象的文件
  • 对象导入到的文件

注意:一种选择是使用此帖子运行所有测试和配置文件。然而,测试甚至不是跨代码库,有些区域没有测试,所以这不会有很大的代表性。

python python-import

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

使用 tox 运行脚本时诗歌依赖项不可用

我有一个使用诗歌和毒素的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)

python tox python-poetry

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

使用 GPflow 进行多维高斯过程回归

我想使用高斯过程回归执行一些多变量回归,如使用版本 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)

gpflow

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

如何将 Rust 模块放置在单独的文件中?

下面的代码改编自“书”(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)

module package rust

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

在 Any 上调用 __new__

我正在尝试为自定义 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)

如果我绑定 …

python deep-copy type-hinting

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

在java中使用接口.新问题

假设有一个Displaceable接口和一个实现Displaceable的类Circle.Displaceable有一个名为move()的方法,当然是在Circle中实现的.

在以下场景中会发生什么?

Circle a =  new Circle(..);
Displaceable b = a;
b.move()
Run Code Online (Sandbox Code Playgroud)

对象是否会引用Circle的移动方法?

java

3
推荐指数
1
解决办法
172
查看次数