这是我的发电机:
def gen():
state = [None]
for i in range(5):
state[0] = i
yield state
Run Code Online (Sandbox Code Playgroud)
当我调用它时,这是输出:
>>> list(gen())
[[4], [4], [4], [4], [4]]
Run Code Online (Sandbox Code Playgroud)
如果我再次执行该语句,我得到的东西[4](由于[[0], [1], [2], [3], [4]]调用),但所有的相同的值[4].
这是C中的Hello World代码:
// a.c
#include <stdio.h>
int main() {
printf("Hello world\n");
return 0;
}
Run Code Online (Sandbox Code Playgroud)
我将其编译为gcc a.c,a.out按预期生成并按预期./a.out打印Hello world...
现在,如果我单独编译和链接:
gcc -c a.c; ld -lc a.o,它运行a.out生成,因为./a.out我收到消息:
bash: ./a.out: No such file or directory
Run Code Online (Sandbox Code Playgroud)
我用Google搜索了这个错误,似乎当生成的可执行文件是32位ELF并且机器架构是64位时会发生这种情况.
我正在运行一台64位机器并运行file a.out给出:
a.out: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), not stripped
Run Code Online (Sandbox Code Playgroud)
为什么会这样?
编辑:
输出 uname -m
$ uname -m
x86_64
Run Code Online (Sandbox Code Playgroud)
输出 ldd a.out
$ ldd a.out …Run Code Online (Sandbox Code Playgroud) 我的代码组织如下:
DIR/A.py:
from X import Y
class A:
...
Run Code Online (Sandbox Code Playgroud)
DIR/__ init__.py:
from .A import A
__all__ = ['A']
Run Code Online (Sandbox Code Playgroud)
测试/ test_A.py:
class test_A:
@patch("dir.A.Y")
def test(self, mock_Y):
....
Run Code Online (Sandbox Code Playgroud)
在运行tests/test_A.py时,我(如预期的那样)得到错误:
AttributeError: <class 'dir.A.A'> does not have the attribute 'Y'
Run Code Online (Sandbox Code Playgroud)
问题是@patch("dir.A.y")试图Y在课堂上找到dir.A.A,而不是在模块中dir.A(实际存在的位置).
这显然是因为我的__init__.py.我可以通过将module-name A和class-name A更改为不同的符号来解决这个问题.
代码的组织方式,我想避免这样的命名更改.如何以正确位置patch找到的方式使用Y?
我是正则表达式的新手.我希望写一个匹配'.'的正则表达式.后跟一个空格后跟一个单词(不包含空格.
例如,在字符串"裂缝的声音.分裂.在冰中出现一个形状.",正则表达式应该提取".Splintering"和".A".