python函数间引用 python调用函数

python中怎么在一个函数内调用另外一个函数,类似C语言那样的将event.py目录加入到system path中
import sys
sys.path.append("/Users/songrao/Library/Application Support/Sublime Text 3/Packages/User/")
from event import printme
在eclipse开发环境下python中怎么引用函数选中需要查看的函数(光标移到函数所在的位置),然后使用eclipse快捷键Ctrl Shift G , 然后就会在search窗口中看到函数调用的树状结构图 。
以最简单的一个代码为例:
class A:
s="hello"
def p(self):
print(self.s)
if __name__ == '__main__':
a=A()
a.p()
光标移到第4行p的位置,然后Ctrl Shift G , 得到如下所示:
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)
3630108
3631012
var1
10
调用函数后,从两次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跨模块调用函数的问题?有什么办法省略掉那些被调用函数的参数?
也就是func2只想在调用是传入一个c 。
那么func2在定义的时候必须喂饱func1,也就是func2在调用 func1时,当前作用域中要有a,b 。
明显图中是没有做到的,没有实际ab
b可以试试在这个文件中直接定义 ab两个变量,那么在第三个文件中引入 func2,就可以直接传c给func2了,因为ab已经在上一步被配置好 。
Python如何应用同级文件的函数1、在同一个文件夹下调用函数:A.py文件:B.py文件:
2、或调用类:A.py文件:B.py文件:
3、或在不同文件夹下A.py文件的文件路径:E:\PythonProject\winycgB.py文件:
python 如何引用第一个函数的结果你写的函数里面只是打印出功能,这个在语法方面没什么问题 , 但是达不到你的要求,如果想引用一个函数的结果 , 必须给它加一个return值,这样就能获取返回的结果
def test(n):
return n
a = test(2)
print a
【python函数间引用 python调用函数】关于python函数间引用和python调用函数的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站 。

    推荐阅读