我有一个函数,其参数是字典列表。我试图在函数参数中指定字典的元素类型。该词典具有以下形式:
{'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) 我想补充finplot
,https://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) 我试图了解参数扩展在 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
吗?
我已经为 MATLAB 编写了一个 mex 文件。它调用 MATLABpinv
函数来计算摩尔彭罗斯伪逆。我将这个函数命名为my_pinv
。my_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) 我定义了一个使用 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
?
我正在研究 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) 我正在尝试将date::year_month_day
Howard 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) 我想了解 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) 如果A
是MATLAB中的单元格数组,我想学习和之间A{:}
以及A(:)
它们在哪里的区别。
我为我的 C++ 代码创建了一个静态库,它依赖于 CentOS 7 环境中的 Boost、OpenSSL、CURL 和线程。
是否可以将libboost_system.a
, libssl.a
, libcrypto.a
, libcurl.a
,libpthread.a
与我的 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)
可以在这里尝试。它将值很好地限制为0
和255
,这就是我期望在任何操作系统中得到的结果。但是,当我在 Visual Studio 2022 中尝试相同的代码时,就会出现问题,可以在此处尝试。
Visual Studio 输出
246
44
Run Code Online (Sandbox Code Playgroud)
在我看来,246
实际上是256-10
,第二个输出44
是300-256
。我可以知道为什么 Visual Studio 会产生不同的结果吗?
如何让这个简单的跨平台转换?
我在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
.
我是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搜索显示!
的所有内容都是取反运算符,这里似乎并非如此。
c++ ×5
python ×4
matlab ×3
arguments ×1
arrays ×1
bash ×1
c++-chrono ×1
casting ×1
cell-array ×1
class ×1
convolution ×1
datetime ×1
dictionary ×1
filter ×1
function ×1
gcc ×1
javascript ×1
memcpy ×1
mex ×1
parameters ×1
pybind11 ×1
pyqt5 ×1
pyqtgraph ×1
python-3.x ×1
shell ×1
types ×1