是否可以编写一个将对象插入全局命名空间并将其绑定到变量的函数?例如:
>>> 'var' in dir()
False
>>> def insert_into_global_namespace():
... var = "an object"
... inject var
>>> insert_into_global_namespace()
>>> var
"an object"
Run Code Online (Sandbox Code Playgroud) 我正在写一个函数,它返回关于角色的语言信息.对于预先组合的字符,这很容易.但是,我想说明变音符号.我相信这些在Unicode中被称为"标记"或"组合字符"(参见平面U + 0300 - U + 036F).
例如,要将中心化变音符号(U + 0306)放在字符e上:
e C-x 8 <RET> 0306 <RET>
Run Code Online (Sandbox Code Playgroud)
运行C-u C-x =生成的角色,你会看到类似"由以下角色组成的̆"
following-char遗憾的是,函数只返回基本字符,即"e",并忽略任何组合变音符号.有没有办法得到这些?
编辑:slitvinov指出,生成的字形由两个字符组成.如果你在上面的代码创建的字形之前放置点,并(point)在运行之前和之后执行forward-char,你会看到点增加2.我想我可以通过这种行为破解解决方案,但它似乎在一个progn语句(或函数定义)内),forward-char只能向前移动一个...尝试在一个defun或多个(progn (forward-char) (point)).为什么会这样?
我有一个 11 分钟的 .mkv 文件,其中包含一个 h264 视频流,占用 184MB 的空间。我想减小这个文件的大小。我想我可以降低比特率。但是 ffprobe 不输出任何内容。事实上,它说文件的长度是根据比特率计算的,因此可能不准确,但摘要或 [FORMAT] 条目中都没有比特率:
> ffprobe -show_format file.mkv
[matroska,webm @ 0x7f8e8084b200] Estimating duration from bitrate, this may be inaccurate
Input #0, matroska,webm, from 'file.mkv':
Duration: 00:11:11.59, start: 0.000000, bitrate: N/A
Stream #0.0: Video: h264 (High), yuv420p, 1280x720 [PAR 1:1 DAR 16:9], 29.97 fps, 29.97 tbr, 1k tbn, 59.94 tbc (default)
Stream #0.1: Audio: aac, 48000 Hz, 5.1, s16 (default)
[FORMAT]
...
bit_rate=0.000000
[/FORMAT]
Run Code Online (Sandbox Code Playgroud)
谢谢你。
编辑:我的理解是 H.264 是一种协议。因此,根据 ffprobe 文档,我无法判断 h264 编解码器使用了什么实现。如果有人知道,我将不胜感激。
我不明白为什么迭代带有for循环的容器会产生不同的结果,而不是使用while循环迭代它.以下MWE用向量和一组5个整数说明了这一点.
#include <iostream>
#include <vector>
#include <set>
using namespace std;
int main()
{
vector<int> v;
set<int> s;
// add integers 0..5 to vector v and set s
for (int i = 0; i < 5; i++) {
v.push_back(i);
s.insert(i);
}
cout << "Iterating through vector with for loop.\n";
vector<int>::const_iterator itv;
for (itv = v.begin(); itv != v.end(); itv++) cout << *itv << ' ';
cout << '\n';
cout << "Iterating through set with for loop.\n";
set<int>::const_iterator its;
for (its = …Run Code Online (Sandbox Code Playgroud)