小编Gle*_*her的帖子

复杂转换为 Python 复杂

我目前正在为一个使用 的 C++ 项目编写包装器std::complex<double>,在 cython 中作为libcpp.complex.complex[double].

但是,这与 Python 复杂之间没有隐式转换,我正在尝试找到进行此转换的最佳方法。

显而易见的是使用

cdef libcpp.complex.complex[double] x = ...
X = complex(x.real(),x.imag()
Run Code Online (Sandbox Code Playgroud)

cdef complex Y = ...
cdef libcpp.complex.complex[double] y = libcpp.complex.complex[double](Y.real, Y.imag)
Run Code Online (Sandbox Code Playgroud)

cdef libcpp.complex.complex[double] z
cdef complex Z = ...
z.real(Z.real)
z.imag(Z.imag)
Run Code Online (Sandbox Code Playgroud)

但是有没有更好的方法,最好是让 cython 自动进行转换。

其中一个发生在某些cpdef函数中,我想避免在来自 cython 的调用中使用 Python complex 以提高速度。

然而,据我所知,cython 不能隐式地进行这种转换,因此我无法避免使用 Python 复合体来处理可以从 Python 或 C++ 调用的代码。

c++ python std cython complex-numbers

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

在提交时使用 git 自动更新版本

我有一个 python 项目,我正在使用 git 进行版本控制,我想为基于PEP440 的每个提交设置一个唯一的版本号。

即我会N(.N)*[{a|b|rc}N][.postN][.devN]为 master 分支使用以下版本编号,对于每个没有增加更高级别版本号的devN提交将在提交时由 git 自动增加,版本的其余部分希望由一个特殊的 git 控制命令:git increment-version {level}

其中 level 将是major, minor, patch, patch-{level}(patchpatch-0), alpha, beta, release, 之一finalpost将映射到版本字符串作为 {major}[.{minor}[(.{patch-N})*]], alpha => aN, beta => bN, release => rcN, post => postN,beta替换alpharelease替换beta,final删除预发布组件, 如果使用较早的组件当前这应该产生一个误差,当一个较高级别版本递增所有较低级别休息到零,并且不包含任何补丁级别设置为零字符串中,递增majorminor …

python versioning git version-control

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

使用PHP缩小动态Javascript

我有一些JavaScript,它是由PHP代码使用模板生成的.

模板的结果是一个包含JavaScript的文件,但是语句分散在其中.

我想通过删除空格和注释来减小此文件的大小.

但是我在网上找到的只是普通JavaScript的工具,它们非常复杂.

我已经准备好编写一个脚本来减少HTML和基于CSS的内容使用相同的系统,我正在寻找减少JavaScript文件大小的信息,这样我就可以编写一个可以处理文件中PHP代码的简化脚本.

所以我想要的是:

减少JavaScript代码大小的教程.一个简单易懂的脚本,用于减少JavaScript大小,我可以分析.或者一个可以与PHP内联的JavaScript代码一起使用的工具(必须是公共域,或允许在商业作品中使用的开源)

编辑:

$script = preg_replace('%/\*.*?\*/%','',$script);
$compress = preg_split('%("|\'|/)(?:\\\\|\\\1|[^\1])*?\1|<\?php\s+(?:("|\')(?:\\\\|\\\2|[^\2])*?\2|[^"\']*?)*?\?>%',$script);
preg_match_all('%(("|\'|/)(?:\\\\|\\\2|[^\2])*?\2|<\?php\s+(?:("|\')(?:\\\\|\\\3|[^\3])*?\3|[^"\']*?)*?\?>)%',$script,$no_compress);
foreach ($compress as &$block) { $block = preg_replace('%\s+%',' ',$block); }
Run Code Online (Sandbox Code Playgroud)

我想我已经解决了,上面应该删除C风格的注释,然后将剩下的代码分成PHP块,Javascript Strings'或",和Regex Patterns /,还提取代码块,字符串和正则表达式模式,模式或字符串中的代码应该被忽略,因为它是Regex中的第二个选项.最后一行应该将压缩块中的空白区域减少到一个空格

那么它应该只是块的重组问题,即

$cscript .= $compress[$i].$no_compress[$i]
Run Code Online (Sandbox Code Playgroud)

要重建脚本.

我错过了什么?

javascript php minify inline-code

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