小编AFP*_*AFP的帖子

为 Python 函数的字典列表指定参数类型

我有一个函数,其参数是字典列表。我试图在函数参数中指定字典的元素类型。该词典具有以下形式:

{'my_object':my_object, 'data':int}
Run Code Online (Sandbox Code Playgroud)

my_object是自定义数据类型。有没有办法指定字典的类型,如下所示:

def my_function(x : list[dict[my_object, int]]):
Run Code Online (Sandbox Code Playgroud)

Python 抱怨我如何定义类型并给出以下错误:

TypeError: 'type' object is not subscriptable
Run Code Online (Sandbox Code Playgroud)

python dictionary types arguments

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

finplot 作为布局中的小部件

我想补充finplothttps://pypi.org/project/finplot/,作为一个小工具,在我的UI布局之一。我创建了一个小部件finplot并将其添加到布局中的小部件,但出现以下错误:

self.tab1.layout.addWidget(self.tab1.fplt_widget)
TypeError: addWidget(self, QWidget, stretch: int = 0, alignment: Union[Qt.Alignment, Qt.AlignmentFlag] = Qt.Alignment()): argument 1 has unexpected type 'PlotItem'
Run Code Online (Sandbox Code Playgroud)

这是我使用的代码。

import sys
from PyQt5.QtWidgets import *
import finplot as fplt
import yfinance


# Creating the main window
class App(QMainWindow):
    def __init__(self):
        super().__init__()
        self.title = 'PyQt5 - QTabWidget'
        self.left = 0
        self.top = 0
        self.width = 600
        self.height = 400
        self.setWindowTitle(self.title)
        self.setGeometry(self.left, self.top, self.width, self.height)

        self.tab_widget = MyTabWidget(self)
        self.setCentralWidget(self.tab_widget)

        self.show()

    # Creating tab widgets …
Run Code Online (Sandbox Code Playgroud)

python python-3.x pyqtgraph pyqt5

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

理解 bash 脚本中的参数扩展时出现问题

我试图了解参数扩展在 bash 脚本中的作用。

第三方bash脚本

#!/bin/sh
files="${*:--}"
# For my understanding I tried to print the contents of files
echo $files 

pkill bb_stream
if [ "x$VERBOSE" != "" ]; then
        ARGS=-v1
fi
while [ 1 ]; do cat $files; done | bb_stream $ARGS
Run Code Online (Sandbox Code Playgroud)

当我运行时./third_party_bash_script,它打印的只是一个连字符-,没有其他内容。由于它对我来说没有意义,我也尝试在终端中进行实验

$ set one="1" two="2" three="3"
$ files="${*:--}"
$ echo $files
one="1" two="2" three="3"
$ set four="4"
$ files="${*:--}"
four="4"
Run Code Online (Sandbox Code Playgroud)

我似乎无法理解它在做什么。有人可以帮助我解释${*:--}by thesh吗?

parameters bash shell

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

使用 mexCallMATLAB 时避免复制数组

我已经为 MATLAB 编写了一个 mex 文件。它调用 MATLABpinv函数来计算摩尔彭罗斯伪逆。我将这个函数命名为my_pinvmy_pinv获取一个数组并返回其伪逆,完全类似于pinv

A = magic(8); A = A(:,1:6)
b = 260*ones(8,1)
x = my_pinv(A)*b
Run Code Online (Sandbox Code Playgroud)

但是,在 mex 文件中,我必须复制输入数组的值才能使用mexCallMATLAB. 以下是内容my_pinv.cpp

#include <matrix.h>
#include <mex.h>
#include <string.h>

void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[])
{
    #define PRHS_A prhs[0]
    #define PLHS_X plhs[0] 

    int M = mxGetM( PRHS_A ); // Get the dimensions of  A.
    int N = mxGetN( PRHS_A );

    double *A_ptr = mxGetPr( PRHS_A …
Run Code Online (Sandbox Code Playgroud)

arrays matlab mex memcpy

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

仅在对象实例的生命周期内保持 Python 解释器处于活动状态

我定义了一个使用 python 解释器的类,如下所示:

class pythonInt
{
public:
    pythonInt(const char* fname) {
        py::initialize_interpreter();
        m_Module = py::module::import(fname);
    }
    ~pythonInt() {
        py::finalize_interpreter();
    }
    py::module m_Module;
    // ... other class members and functions that uses m_Module
};

int main()
{
    pythonInt *p1 = new pythonInt("pybind_test1");
    delete(p1); 

    pythonInt *p2 = new pythonInt("pybind_test1");
    delete(p2); 

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

一旦类实例被破坏,Access violation reading location当它达到删除实例时,我就会收到错误_Py_Dealloc(op)。如何完成解释器,以便我可以成功删除以前创建的类实例p1并安全地创建新的类实例p2

c++ python class

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

pybind11 保持对象存活

我正在研究 pybind11 中的一个测试文件,并遇到了keep_alive.

py::keep_alive<1, 2>
py::keep_alive<1, 0>
py::keep_alive<0, 1>
Run Code Online (Sandbox Code Playgroud)

有人可以阐明这个测试文件中的这些用法吗?我知道索引指0的是返回,1指的是this指针。我只能理解py::keep_alive<1, 2>(使用文档),但不能理解它在这个测试文件中的用法。

class Child {
public:
    Child() { py::print("Allocating child."); }
    Child(const Child &) = default;
    Child(Child &&) = default;
    ~Child() { py::print("Releasing child."); }
};
py::class_<Child>(m, "Child")
    .def(py::init<>());

class Parent {
public:
    Parent() { py::print("Allocating parent."); }
    ~Parent() { py::print("Releasing parent."); }
    void addChild(Child *) { }
    Child *returnChild() { return new Child(); }
    Child *returnNullChild() { return nullptr; } …
Run Code Online (Sandbox Code Playgroud)

c++ pybind11

2
推荐指数
1
解决办法
2978
查看次数

如何将 date::year_month_day 转换为 chrono time_point

我正在尝试将date::year_month_dayHoward Hinnant 先生的图书馆转换为std::chrono::system_clock::time_point,但没有成功。最终,我想time_since_epoch().count()从UTC时区的时间点开始计算。

我下面的代码可以完成这项工作(结果是在我当地的时区),但如果它提供此类功能,我最好使用date库来实现此目的。

    date::year_month_day _ymd = date::year{2023}/11/9; // November 9, 2023

    // Modern C++
    // The following returns 16994880000000000
    // = Thursday, July 16, 1970 4:48:00 PM, which is not 2023/11/09
    std::chrono::system_clock::time_point tp = 
            std::chrono::time_point<std::chrono::system_clock, std::chrono::days>(std::chrono::sys_days{_ymd});

    // Classic C++
    // The following returns 1702108800
    // = Saturday, December 9, 2023 8:00:00 AM, which of course is not 2023/11/09
    struct tm t = {0};
    t.tm_year = _ymd.year().operator int() - 1900;
    t.tm_mon = …
Run Code Online (Sandbox Code Playgroud)

c++ datetime c++-chrono

2
推荐指数
1
解决办法
386
查看次数

重现 MATLAB 的 imfilter 函数时出现问题

我想了解 MATLAB 的imfilter函数是如何工作的。

im = imread("cameraman.tif");

% Kernel for sharpening the image
kernel = [
     0 -1  0;
    -1  5 -1;
     0 -1  0];

im2 = zeros(size(im));

for y = 1 : size(im,1) - 3
    for x = 1 : size(im,2) - 3

        sum = 0;
        for ky = 1:3
            for kx = 1:3
                xx = x + kx - 1;
                yy = y + ky - 1;
                sum = sum + im(yy,xx)*kernel(ky,kx);
            end
        end
        
        im2(y,x) = sum; …
Run Code Online (Sandbox Code Playgroud)

matlab image-processing filter convolution

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

MATLAB:当A是一个单元格数组时,A {:}与A(:)

如果A是MATLAB中的单元格数组,我想学习和之间A{:}以及A(:)它们在哪里的区别。

matlab cell-array

0
推荐指数
1
解决办法
537
查看次数

是否可以将多个静态库捆绑到一个静态库 [C++] 中?

我为我的 C++ 代码创建了一个静态库,它依赖于 CentOS 7 环境中的 Boost、OpenSSL、CURL 和线程。

是否可以将libboost_system.a, libssl.a, libcrypto.a, libcurl.a,libpthread.a与我的 C++ 库一起捆绑到一个库中?

c++ static-linking

0
推荐指数
1
解决办法
25
查看次数

C++ 类型转换问题

我正在尝试使用以下 C++ 代码将 a 类型转换float为:unsigned char

#include <iostream>
int main()
{
        
    std::cout << int((unsigned char)((float)-10)) << "\n";
    std::cout << int((unsigned char)((float)300)) << "\n";
     
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

海湾合作委员会 12.1 输出:

0
255
Run Code Online (Sandbox Code Playgroud)

可以在这里尝试。它将值很好地限制为0255,这就是我期望在任何操作系统中得到的结果。但是,当我在 Visual Studio 2022 中尝试相同的代码时,就会出现问题,可以在此处尝试。

Visual Studio 输出

246
44
Run Code Online (Sandbox Code Playgroud)

在我看来,246实际上是256-10,第二个输出44300-256。我可以知道为什么 Visual Studio 会产生不同的结果吗?

如何让这个简单的跨平台转换?

c++ gcc casting visual-studio

0
推荐指数
1
解决办法
119
查看次数

具有复杂参数的python函数

我在python代码中有一个函数,其参数如下:

save_geometry(r"""C:\Users\User0\Documents\test.txt """)
Run Code Online (Sandbox Code Playgroud)

我想修改参数,并能够使用不同的文件名保存到不同的路径:

filename = "geometries.txt "
filepath = "D:/AllData/"
filefullpath = filepath + filename
Run Code Online (Sandbox Code Playgroud)

有人可以帮助我如何传递filefullpath给我save_geometry吗?如果r论证中没有save_geometry,那就很容易了.但我不知道如何处理这个问题r.

python function

-1
推荐指数
1
解决办法
65
查看次数

JavaScript中感叹号的用法

我是Java语言的新手。我正在尝试了解main.js文件的以下几行:

define([ 'shader!vertShader.vert',
         'shader!compShader.frag',
         'myJSLib/MyJSLib'
        ],
function( vertShader,
          compShader,
          MyJSLib
          ){
"use strict" ;
Run Code Online (Sandbox Code Playgroud)

我的理解是,'shader!vertShader.vert'将被分配给vertShader'shader!compShader.frag'compShader'myJSLib/MyJSLib'myJSLib

我想了解感叹号的作用shader!vertShader.vert。我的Google搜索显示!的所有内容都是取反运算符,这里似乎并非如此。

javascript

-1
推荐指数
1
解决办法
50
查看次数