相关疑难解决方法(0)

如何通过引用传递变量?

Python文档似乎不清楚参数是通过引用还是值传递,以下代码生成未更改的值'Original'

class PassByReference:
    def __init__(self):
        self.variable = 'Original'
        self.change(self.variable)
        print(self.variable)

    def change(self, var):
        var = 'Changed'
Run Code Online (Sandbox Code Playgroud)

有什么我可以通过实际参考传递变量吗?

python reference parameter-passing pass-by-reference

2480
推荐指数
22
解决办法
124万
查看次数

将一组NumPy数组传递给C函数以进行输入和输出

假设我们有一个C函数,它接受一组一个或多个输入数组,处理它们,并将其输出写入一组输出数组.签名如下(count表示要处理的数组元素的数量):

void compute (int count, float** input, float** output)
Run Code Online (Sandbox Code Playgroud)

我想通过ctypes从Python调用此函数,并使用它将转换应用于一组NumPy数组.对于定义为的单输入/单输出功能

void compute (int count, float* input, float* output)
Run Code Online (Sandbox Code Playgroud)

以下作品:

import ctypes
import numpy

from numpy.ctypeslib import ndpointer

lib = ctypes.cdll.LoadLibrary('./block.so')
fun = lib.compute
fun.restype = None
fun.argtypes = [ctypes.c_int,
                ndpointer(ctypes.c_float),
                ndpointer(ctypes.c_float)]

data = numpy.ones(1000).astype(numpy.float32)
output = numpy.zeros(1000).astype(numpy.float32)
fun(1000, data, output)
Run Code Online (Sandbox Code Playgroud)

但是,我不知道如何为多个输入(和/或输出)创建相应的指针数组.有任何想法吗?

编辑:所以人们一直想知道如何compute知道有多少数组指针(count指每个数组的元素数).事实上,这是硬编码的; 给定的compute确切知道预期的输入和输出数量.调用者的工作是验证inputoutput指向正确数量的输入和输出.这是一个compute采用2个输入并写入1个输出数组的示例:

virtual void compute (int count, float** input, float** output) { …
Run Code Online (Sandbox Code Playgroud)

c python ctypes numpy ffi

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

Python:变量的副本

有没有办法复制变量,这样当变量'a'的值发生变化时,它会将自身复制到变量'b'?

a='hello'

b=a     #.copy()  or a function that will make a copy

a='bye'

# Is there a way to make 
# 'b' equal 'a' without 
# doing 'b=a'

print a
print b
Run Code Online (Sandbox Code Playgroud)

我在使用Tkinter库时遇到问题,我有一个已存储在列表中的checkbutton,我正在尝试获取它所拥有的变量.

但是需要大约5行代码才能到达变量.

有没有办法保持变量的副本在checkbutton变量发生变化时发生变化?

python variables copy

11
推荐指数
1
解决办法
3万
查看次数

Python 等价于指针

在 python 中,一切都是通过引用来工作的:

>>> a = 1
>>> d = {'a':a}
>>> d['a']
1
>>> a = 2
>>> d['a']
1
Run Code Online (Sandbox Code Playgroud)

我想要这样的东西

>>> a = 1
>>> d = {'a':magical pointer to a}
>>> d['a']
1
>>> a = 2
>>> d['a']
2
Run Code Online (Sandbox Code Playgroud)

你会用什么来代替指向 a 的神奇指针,以便 python 输出我想要的。

我很欣赏通用的解决方案(不仅适用于上述带有自变量的字典示例,还适用于其他集合和类/实例变量)

python pointers reference

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

python中的指针

我是一名物理专业的学生,​​主要是用Python和Matlab编程,现在进入C语言以提高我的模拟性能.

简单的问题:Python中有指针吗?Matlab中有指针吗?如果是的话,我可以使用与C中类似的"轻松"吗?

我知道在Python和Matlab的高级别背后,有很多指针在起作用.问题是:我可以在Python或Matlab中明确地执行类似C代码的操作:

int *p;
int someValue = 1;
p = &someValue;
doSomethingForMe = callSomeFunction(p);
Run Code Online (Sandbox Code Playgroud)

我知道无论如何都可能没有意义(对于大多数应用程序).我只是想学习.

c python matlab pointers

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

Python:覆盖作为参数传递的列表,对外部作用域可见更改

我正在尝试编写一个执行此操作的代码:

the_list = ['some list', 0, 1, 2]

def change(l):
    x = ['some other list', 3, 4, 5]
    l = x

change(the_list)
print(the_list)    # ['some other list', 3, 4, 5]
Run Code Online (Sandbox Code Playgroud)

我的问题基本上大多数人必须处理的问题相反.我正在尝试将列表的每个元素分配xchange作为参数传递给函数的列表中l,以便更改对外部作用域可见.

我没有使用return语句,因为使用函数参数进行操作会使我编写的代码更加清晰.这对我来说更有意义.

什么是最pythonic的方式来做到这一点?

python

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