python里怎么样通过函数名称来获取函数地址

python里怎么样通过函数名称来获取函数地址,第1张

如果你想通过函数的名称来获取函数的运行地址,可以像下面这样实现:

[python] view plain copy

# File: builtin-import-example-2py

def getfunctionbyname(module_name, function_name):

module = __import__(module_name)

return getattr(module, function_name)

print( repr(getfunctionbyname("dbm", "open")) )

在这段代码里,通过open字符串的名称获取数据库管理模块dbm的open函数地址。

运行之后,输出如下:

=== RESTART: D:\work\csdn\python_Game1\example\builtin-import-example-2py ===

<function open at 0x00000226467B2BF8>

>>>

Python 函数定义以及参数传递

1函数定义

#形如def func(args):

doSomething123

以关键字def 开头,后面是函数名和参数下面是函数处理过程。

举例:

def add( a, b ):

return a+b12

参数可以设定默认值,如:

def add( a, b=10 ): #注意:默认值参数只会运算一次

return a+b12

默认值参数只会运算一次是什么意思?

def func( a, b=[] ): #b的默认值指向一个空的列表,每次不带默认值都会指向这块内存

bappend(a) return b

print(func(1))#向默认的空列表里加入元素1 ,默认列表里已经是[1]print(func(2))#向默认的列表里加入元素2,默认列表里已经是[1,2]print(func(3,[]))#向b指向的空列表里加入元素1 ,默认列表里还是[1,2]print(func(4))#向默认的列表里加入元素4,默认列表里已经是[1,2,4]'''

结果:

[1]

[1, 2]

[3]

[1, 2, 4]

'''12345678910111213141516

这下明白为什么默认参数只计算一次了吧,函数参数不传递时默认值总是指向固定的内存空间,就是第一次计算的空间。

2参数传递

def func(a, b):

print('a=%d, b=%d' % (a,b) )12

在使用函数时可以如下方式,结果都是相同的

func(10,20) #不使用参数名,需要按参数顺序传递func(a=10,b=20) #使用参数名可以不按顺序传递func(b=20,a=10)#结果:a=10, b=20a=10, b=20a=10, b=201234567

如果函数定义形式如下方式:

def func(args): #这种定义会把传递的参数包成元组

print(args,type(args))

func(10,20)#结果:#(10, 20) <class 'tuple'>1234567

举一个和上述过程相反的例子:

def func(a,b):

print('a=%d, b=%d' % (a,b) )

a = (10, 20)

func(a) #在调用函数使用``则会把元组解包成单个变量按顺序传入函数#结果:a=10, b=20123456

总结:号在定义函数参数时,传入函数的参数会转换成元组,如果 号在调用时则会把元组解包成单个元素。

另一种定义:

def func(kw):#使用定义参数会把传入参数包装成字典dict

print(kw, type(kw) )

func(a=10,b=20)#这种函数在使用时必须指定参数值,使用key=value这种形式#结果:{'b': 20, 'a': 10} <class 'dict'>12345

相反的例子:

def func(a,b):

print('a=%d, b=%d' % (a,b) )

d = {'a':10, 'b':20 }

func(d) #在调用时使用会把字典解包成变量传入函数。12345

def func(args, kw):#这种形式的定义代表可以接受任意类型的参数

print(args,kw )12

总结:号在定义函数参数时,传入函数的参数会转换成字典,如果 号在调用时则会把字典解包成单个元素。

lambda表达式

lambda表达式就是一种简单的函数

形如 f = lambda 参数1,参数2: 返回的计算值

例如:

add = lambda x,y: x+y

print(add(1,2))'''

结果:3

'''12345

获取π值。math库中的mathpi。

定义一个变量,pi=314,在进行计算过程中,直接使用pi,如果再次修改值,只需要修改pi就可以了。

函数库就是一些事先写好的函数的集合。12函数是模块化的,因此可以被复用。我们写好了一个函数,可以被反复使用。

os是python自带的系统模块,需要import使用

os 源于英文Operating System( *** 作系统)的缩写

cwd 则是源于Current Working Directory,中文意思是 当前工作目录

所以osgetcwd() 指获取当前工作目录

示例:

getcwd()方法语法格式如下:

总之,举例来讲,osgetcwd()、syspath[0] (sysargv[0])和 file 的区别是这样的:

假设目录结构是:

然后我们在C:\test下面执行

这时sub_pathpy里面与各种用法对应的值其实是:

path的准确定位对于import包,读写文件都非常重要,

如果一时不能理解,可以在文件执行开头多加几个

print帮助我们确定那个路径是我们希望拿到的,然后将其设为全局变量就好了

对基础运行环境有疑问的,推荐参考: python函数深入浅出 0基础篇

共享变量的方法。

没有办法直接实现你的需求,但是,你可以用共享变量的方法实现,比如:

def worker(procnum, return_dict):

'''worker function'''

print str(procnum) + ' represent!'

return_dict[procnum] = procnumif __name__ == '__main__':

manager = Manager()

return_dict = managerdict()

jobs = []    for i in range(5):

p = multiprocessingProcess(target=worker, args=(i,return_dict))

jobsappend(p)

pstart()    for proc in jobs:

procjoin()    print return_dictvalues()

以上就是关于python里怎么样通过函数名称来获取函数地址全部的内容,包括:python里怎么样通过函数名称来获取函数地址、python中函数的作用、获取3.14的值可以使用什么python函数库等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9312918.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-27
下一篇 2023-04-27

发表评论

登录后才能评论

评论列表(0条)

保存