如果您曾经使用过C或C ++等低级语言,那么您可能已经听说过指针。指针允许您在部分代码中创建高效率。它们也会给初学者带来困惑,并且可能导致各种内存管理错误,即使对于专家也是如此。那么在Python中有指针的存在吗?
创新互联专注于玉山网站建设服务及定制,我们拥有丰富的企业做网站经验。 热诚为您提供玉山营销型网站建设,玉山网站制作、玉山网页设计、玉山网站官网定制、小程序开发服务,打造玉山网络公司原创品牌,更为您提供玉山网站排名全网营销落地服务。
指针广泛用于C和C ++。本质上,它们是保存另一个变量的内存地址的变量。有关指针的更新,可以考虑在C指针上查看此概述。
为什么Python没有指针?
实际上指针为何不存在的原因现在还不知道,也许指针违背了Python的禅宗。指针鼓励隐含的变化而不是明确的变化。但通常情况下,它们很复杂而不是很简单,特别是对于初学者。更糟糕的是,当他们用指针指向自己的方法,或做一些非常危险的事情,比如从你无法获取的的一些变量中读取数据。
Python更倾向于尝试从用户那里抽象出内存地址来实现具体细节,所以Python通常关注可用性而不是速度。因此,Python中的指针并没有多大意义。但是在有些情况下,Python会为您提供使用指针的一些好处。
想要理解Python中的指针,需要理解Python实现指针功能的具体细节。简单来说,需要了解这些知识点:
不可变对象和可变对象【Python中的对象】
Python变量/名称【Python中的变量】
【在Python中模拟实现指针】
python对指针做了良好的封装,一切都是对象。一切对象都有一个变量,指向他这个变量就是指针。跟java不一样, 他不可以随机移动,不可以运算。包括函数也是一个对象,用一个变量指向它,就是指向函数的入口地址。
int* GrabImage();
int GetPixel(int* image, int x, int y);
void SetPixel(int* image, int x, int y, int color);
比较简单的是用exec去直接执行.py文件
public static void main(String[] args) throws IOException {
// set up the command and parameter
String pythonScriptPath = "/home/norbert/python/helloPython.py";
String[] cmd = new String[2];
cmd[0] = "python2.6";
cmd[1] = pythonScriptPath;
// create runtime to execute external command
Runtime rt = Runtime.getRuntime();
Process pr = rt.exec(cmd);
// retrieve output from python script
BufferedReader bfr = new BufferedReader(new InputStreamReader(pr.getInputStream()));
String line = "";
while((line = bfr.readLine()) != null) {
// display each output line form python script
System.out.println(line);
}
}
python部分扩展包不多的话可以考虑jython,目前这种方式比较推荐,但是jython和python有一定的兼容性问题
还可以用JNI,cython,通过java调C,C调python实现