我有一个包含python代码的字符串.有没有办法使用没有附加文件的字符串创建python模块对象?
content = "import math\n\ndef f(x):\n return math.log(x)"
my_module = needed_function(content) # <- ???
print my_module.f(2) # prints 0.6931471805599453
Run Code Online (Sandbox Code Playgroud)
请不要建议使用eval
或exec
.我需要一个python模块对象.谢谢!
Rust允许在函数内声明一个结构,但它不允许以简单的方式为它赋值变量.
fn f1() -> (something) {
struct mystruct {
x: i32,
}
let s = mystruct;
s
}
fn f2(s: something) {
let obj = s { x: 5 };
println!(obj.x);
}
fn main() {
let s = f1();
f2(s);
}
Run Code Online (Sandbox Code Playgroud)
是否可以以不同的方式将结构存储到变量中?如何正确编写结构类型?在我的项目中,我想在函数内部声明一个struct,并在另一个内部创建实例.
我想计算f
里面函数的调用次数inc
.我应该如何修改功能main
呢?
我有这个代码:
def inc(f):
f()
f()
def main():
a = 0
def f():
a += 1
inc(f)
print(a) # should print 2
main()
Run Code Online (Sandbox Code Playgroud)
但它导致错误:
Traceback (most recent call last):
File "main.py", line 11, in <module>
main()
File "main.py", line 9, in main
inc(f)
File "main.py", line 2, in inc
f()
File "main.py", line 8, in f
a += 1
UnboundLocalError: local variable 'a' referenced before assignment
Run Code Online (Sandbox Code Playgroud) 有没有办法检查指针之前是否有空?
例如,如果我运行此代码:
int* p = (int*)malloc(1000);
free(p);
p = (int*)realloc(p, 2000);
Run Code Online (Sandbox Code Playgroud)
我收到错误:
*** Error in `./main': realloc(): invalid old size: 0x00000000012ab010 ***
...
Run Code Online (Sandbox Code Playgroud)
我希望有机会p
在致电之前检查realloc
以避免此类错误.
我正在尝试修改self
临时存储到另一个变量中的内容。在最后一步,我想将变量中的所有数据复制到self
.
struct A {
x: i32,
}
impl A {
fn new() -> Self {
Self { x: 0 }
}
fn change(&mut self) {
let mut a = Self::new();
a.x += 1;
self = a; // How to copy data from a variable into self?
}
}
Run Code Online (Sandbox Code Playgroud)
我收到错误:
struct A {
x: i32,
}
impl A {
fn new() -> Self {
Self { x: 0 }
}
fn change(&mut self) {
let mut a …
Run Code Online (Sandbox Code Playgroud) 我有一个像这样的自定义对象:
class MyObject:
def __init__(self, x, y):
self.x = x
self.y = y
Run Code Online (Sandbox Code Playgroud)
我希望它根据规则与集合一起使用:如果对象相同,则x
它们相等。
s = set()
s.add(MyObject(1, 2))
print(MyObject(1, 3) in s) # It is False. I want it to be True, because `x = 1` for both.
Run Code Online (Sandbox Code Playgroud)
有没有一种神奇的方法可以实现MyObject
我的目的?
我正在寻找一种快速的方法来在 Rust 中找到 64 位整数的下一个 2 的幂。例如,如果我有 23 结果必须是 32。我试过这个代码:
fn ceil_pow2(x: u64) -> u64 {
let mut y: u64 = x;
let mut z: u64 = 1;
while y > 0 {
y >>= 1;
z <<= 1;
}
if z == 2 * x {
z >>= 1;
}
z
}
Run Code Online (Sandbox Code Playgroud)
如果给出正确的结果但代码看起来效率不高,我相信有一种更快的实现方法。有人可以帮忙吗?Asm
如果 Rust 函数内的代码能提高性能,它是受欢迎的。
我有以下无法编译的代码:
struct A {
x: i32,
}
impl A {
fn add_assign(&mut self, other: &Self) {
self.x += other.x;
}
fn double(&mut self) {
self.add_assign(self);
}
}
Run Code Online (Sandbox Code Playgroud)
错误是:
error[E0502]: cannot borrow `*self` as mutable because it is also borrowed as immutable
--> src/lib.rs:11:9
|
11 | self.add_assign(self);
| ^^^^^----------^----^
| | | |
| | | immutable borrow occurs here
| | immutable borrow later used by call
| mutable borrow occurs here
Run Code Online (Sandbox Code Playgroud)
如何传递self
作为参数add_assign
?我已经试过&self
, …