python引用函数

1.Python里面的函数怎么按引用传递参数

如果你用C给Matlab写过MEX程序,那么这个问题是很容易理解的(好像每次讨论Python问题时我总是把Matlab搬了出来…… 《在Matlab中把struct当成Python中的Dictionary使用》《Matlab和Python的几种数据类型的比较》)。

既然提到了MEX,就简单说一下: 一个Matlab可能形如function ret=add3(a,b,c) 如果在C的层面实现这个函数,就会看到另一种景象:void mexFunction(int nlhs,mxArray * plhs[],int nrhs,const mxArray * prhs[]) a,b,c三个参数的地址放在一个指针数组里,然后把这个指针数组的首地址作为参数prhs传递给函数,这说明Matlab函数的参数是传递指针的,而不是值传递。 纵然是传递的指针,但是却不能在函数里改变实参的值,因为标记为“const”了。

Python是开放源码的,我没有看。所以下面很多东西是猜的。

Python在函数的参数传递时用的什么手法?实验一下(使用ActivePython2.5): 首先介绍一个重要的函数:>>> help(id)Help on built-in function id in module __builtin__:id(。) id(object) -> integer Return the identity of an object. This is guaranteed to be unique among simultaneously existing objects. (Hint: it's the object's memory address.) 看最后括号里那句:Hint:it's the object's address.(它是对象的地址) 有了这个函数,下面的事情就方便多了。

>>> a=0>>> id(a)3630228>>> a=1>>> id(a)3630216 可以看出,给a赋一次值,a的address就改变了。在C的层面看,(也许真实情况不是下面的样子,但作为一个类比应该还是可以的):void * pa;pa=malloc(sizeof(int));*(int *)pa=0;free(pa);pa=malloc(sizeof(int));*(int *)pa=1; Python中每次赋值会改变变量的address,分配新的内存空间,所以Python中对于类型不像C那样严格要求。

下面看看Python函数参数传递时到底传的什么: 有一个函数:>>> def changeA(a):。 print id(a)。

a=100。 print id(a) 设定一个变量var1:>>> var1=10>>> id(var1)3630108>>> changeA(var1)36301083631012>>> var110 调用函数后,从两次print的结果可以看出,传递确实是地址。

但是即便如此,在函数内对形参的修改不会对实参造成任何实质的影响,因为对形参的重新赋值,只是改变了形参所指向的内存单元(changeA里两次调用print id(a)得到不同的结果),却没有改变实参的指向。在C的层面看也许类似下面的情节:void changeA(void * pa){ pa=malloc(sizeof(int)); *(int *)pa=100; free(pa);} 精通C的你一眼就看出这个函数永远也改变不了它外面的世界。

也就是说虽然传递的是地址,但像changeA这样的函数改变不了实参的值。 也许会感到困扰?不,我已经在Matlab中习惯了。

一个最典型的例子就是Matlab中删除结构体成员的rmfield函数(参见《Matlab笔记三则》), (Matlab版本7.0.1) 如果想删除结构体patient的name成员,用rmfield(patient, 'name'); 是永远达不到目的的(就像试图用双手抓住自己的领子,把自己提到空中); 迷途知返的做法是:patient = rmfield(patient, 'name');。

python引用函数

转载请注明出处代码入门网 » python引用函数

资讯

python%d%s

阅读(15)

本文主要为您介绍python%d%s,内容包括Python编程里面"%s和%d"都是什么意思呀,Python里的"%s和%d"都是什么意思,小白学python的问题关于%d和%s的区别。%s表示格化式一个对象为字符。%d表示整数。拓展资料:refactoring的基本方法就是每一步小小变

资讯

pythonlist(range)

阅读(15)

本文主要为您介绍pythonlist(range),内容包括如何利用python语言中list和range结合起来使用,PythonPython语句list(range(1,10,3))执行结果为([1,4,7],如何结合python中的List和range生成列表元素。方法/步骤第一步,range()函数添加一个参数,如

资讯

python空对象

阅读(13)

本文主要为您介绍python空对象,内容包括python空值用什么表示,如何判断pythonobjects.get对象为空,Python中None和'空字符串的区别。1.首先要了解Pythond的对象的概念:Python中,万物皆对象,所有的操作都是针对对象的,那什么是对象,5是一个in

资讯

c语言调用python

阅读(15)

本文主要为您介绍c语言调用python,内容包括C语言程序如何调用python程序,C语言程序如何调用python程序,如何在C语言中调用python函数。下面是一个例子:首先是python的一个简单函数class Hell

资讯

python函数套函数

阅读(16)

本文主要为您介绍python函数套函数,内容包括Python中什么是闭包,python返回函数有什么用为什么要套一层函数再返回,python一个函数怎么使用另一个函数内的变量。闭包就是能够读取其他函数内部变量的函数。例如在javascript中,只有函数内部的

资讯

python2.7ubuntu

阅读(13)

本文主要为您介绍python2.7ubuntu,内容包括如何在ubuntu上安装python2.7,ubuntu怎么安装python2.7.6的版本,ubuntu怎么安装python2.7.6的版本。python Python 2.7.11+ (default, Apr 17 2016, 14:00:29) [GCC 5.3.1 20

资讯

python转换utf8

阅读(13)

本文主要为您介绍python转换utf8,内容包括python如何将字符串转化为utf8什么样子,python中unicode编码怎么转换为utf8,有个文件是python的,数据不知道是什么,有办法转成UTF8么搜狗问。实现代码如下:a = abce# print type(a)b = a.decode("asc

资讯

mac使用python

阅读(13)

本文主要为您介绍mac使用python,内容包括怎么在mac上使用python,mac怎么运行python,有用mac学习/使用python的吗。如果要使用 Python 2 来运行此文件,因为 OS X 自带 Python 2,所以直接输入1搜索python "python"文件

资讯

Python的graphviz

阅读(14)

本文主要为您介绍Python的graphviz,内容包括python的pygraphviz在windows下具体怎么安装,如何将python生成的决策树利用graphviz画出来,python中的nltk是什么。我来回答吧,windows 下安装pygraphviz:1.首先安装graphviz, http://www.graphvi

资讯

python文件列表

阅读(12)

本文主要为您介绍python文件列表,内容包括python读取文件列表,python如何将列表写入文件,python列表文件。python把列表写入文件的详细代码:list = [foo, bar]sep = ,fl=open(list.txt, w)fl.wr

资讯

python取数字

阅读(10)

本文主要为您介绍python取数字,内容包括python中怎么从列表怎么取出数字,python中如何从字符串中提取数字,python中怎么从列表怎么取出数字。以取出最大值和最小值为例: 如需求列表中的最大值,用python自带的函数max() 即可。代码示例如下: num

资讯

python字符串的索引

阅读(14)

本文主要为您介绍python字符串的索引,内容包括python中什么是序列,列表,元组,字符串,索引,区别是什么搜,python中什么是序列,列表,元组,字符串,索引,区别是什么搜狗,如何用Python建立索引建立索引:首先输入100行字符串,用于构建。import rep

资讯

python文件拷贝

阅读(14)

本文主要为您介绍python文件拷贝,内容包括python怎么拷贝文件夹下的文件,python怎么拷贝文件夹下的文件,python怎么实现文件的复制。def upload_file(src_path, dst_path):# 目标目录是否存在,不存在则创建if not os.path.

资讯

python封装类

阅读(13)

本文主要为您介绍python封装类,内容包括python中什么是封装,python中将函数和变量封装成类的好处,python中将函数和变量封装成类的好处。import structcalcsize() calcsize(fmt) -> int Return size of C struct

资讯

python%d%s

阅读(15)

本文主要为您介绍python%d%s,内容包括Python编程里面"%s和%d"都是什么意思呀,Python里的"%s和%d"都是什么意思,小白学python的问题关于%d和%s的区别。%s表示格化式一个对象为字符。%d表示整数。拓展资料:refactoring的基本方法就是每一步小小变

资讯

pythonlist(range)

阅读(15)

本文主要为您介绍pythonlist(range),内容包括如何利用python语言中list和range结合起来使用,PythonPython语句list(range(1,10,3))执行结果为([1,4,7],如何结合python中的List和range生成列表元素。方法/步骤第一步,range()函数添加一个参数,如

资讯

python空对象

阅读(13)

本文主要为您介绍python空对象,内容包括python空值用什么表示,如何判断pythonobjects.get对象为空,Python中None和'空字符串的区别。1.首先要了解Pythond的对象的概念:Python中,万物皆对象,所有的操作都是针对对象的,那什么是对象,5是一个in

资讯

c语言调用python

阅读(15)

本文主要为您介绍c语言调用python,内容包括C语言程序如何调用python程序,C语言程序如何调用python程序,如何在C语言中调用python函数。下面是一个例子:首先是python的一个简单函数class Hell

资讯

python函数套函数

阅读(16)

本文主要为您介绍python函数套函数,内容包括Python中什么是闭包,python返回函数有什么用为什么要套一层函数再返回,python一个函数怎么使用另一个函数内的变量。闭包就是能够读取其他函数内部变量的函数。例如在javascript中,只有函数内部的

资讯

python2.7ubuntu

阅读(13)

本文主要为您介绍python2.7ubuntu,内容包括如何在ubuntu上安装python2.7,ubuntu怎么安装python2.7.6的版本,ubuntu怎么安装python2.7.6的版本。python Python 2.7.11+ (default, Apr 17 2016, 14:00:29) [GCC 5.3.1 20

资讯

python转换utf8

阅读(13)

本文主要为您介绍python转换utf8,内容包括python如何将字符串转化为utf8什么样子,python中unicode编码怎么转换为utf8,有个文件是python的,数据不知道是什么,有办法转成UTF8么搜狗问。实现代码如下:a = abce# print type(a)b = a.decode("asc

资讯

python替换字符串中的

阅读(16)

本文主要为您介绍python替换字符串中的,内容包括python中怎么替换字符串,python中如何替换字符串中的"\\"符号,Python如何替换字符串里的第N个字符。Python替换某个文本中的字符串,然后生成新的文本文档,代码如下:import osos.chdir(D:\\) #

资讯

python黑客绝技

阅读(2)

本文主要为您介绍python黑客绝技,内容包括黑客们会用到哪些Python技术,我想成为一名黑客,我在学python,可是里面讲的多是游戏设计,能否,黑客们会用到哪些Python技术。学习是循序渐进的过程最常见的有两本python和黑客相关的书《python灰帽

资讯

python开发什么软件

阅读(2)

本文主要为您介绍python开发什么软件,内容包括python能用来开发什么软件,开发python用什么软件,Python可以开发哪些程序。Python开发软件可根据其用途不同分为两种,一种是Python代码编辑器,一种是Python集成开发工具,两者的配合使用可以极大的

资讯

python正则匹配url

阅读(2)

本文主要为您介绍python正则匹配url,内容包括请问如何使用python的正则表达式提取url链接,请问如何使用python的正则表达式提取url链接,怎么写url的python正则表达式。1.测试正则表达式是否匹配字符串的全部或部分regex=ur"" #正则表达式if r

资讯

pythonstrtobyte

阅读(2)

本文主要为您介绍pythonstrtobyte,内容包括python怎么将字符串转换为byte,pythonstr和byte的区别,python2.7.3中怎么将str转为bytes。public class Test { public static void main(String[] args) { //1. By

资讯

jointhreadpython

阅读(2)

本文主要为您介绍jointhreadpython,内容包括python线程join什么意思,pythonthreading一定要join吗,如何在python多线程join挂起后还能在主线程。Join的作用是众所周知的,阻塞进程直到线程执行完毕。通用的做法是我们启动一批线程,最后join这

资讯

vs2013python

阅读(2)

本文主要为您介绍vs2013python,内容包括vs2013怎么进行Python编程,vs2013怎么进行Python编程,visualstudio2013为什么支持python。方法/步骤1电脑上安装微软公司的VS2013,可以从dreamspark 上下载正版或通过其他途径获得,安装即可。2打开VS20

资讯

houdinipython

阅读(2)

本文主要为您介绍houdinipython,内容包括学习Houdini必须会python吗,学习houdini到底要不要掌握python,学习houdini到底要不要掌握python。Houdini应该不错。不过似乎某个rendering(名子不记得了),应该与python的集成更好。python是一个通用语

资讯

vimpythonide

阅读(2)

本文主要为您介绍vimpythonide,内容包括如何将vim变成一个强大的pythonide,在linux下面做python程序开发,用什么ide好,在linux下面做python程序开发,用什么ide好大家在用哪个工具。可以理解题主的需求,做机器学习的时候经常需要看具体代码,通

资讯

python大文件处理

阅读(2)

本文主要为您介绍python大文件处理,内容包括内存不足时,python如何处理大文件,python对文件进行处理,如何用python最快的获取大文件的最后几行。工作中经常会遇到处理日志文件的问题:为了得到日志的最新状态,我们需要获取日志文件的最后部分

资讯

python服务器应用

阅读(2)

本文主要为您介绍python服务器应用,内容包括python怎么在服务器端使用,python都应用服务器框架,python怎么在服务器端使用。利用Python自带的包可以建立简单的web服务器。在DOS里cd到准备做服务器根目录的路径下,输入命令:python -m Web服务