python可调对象函数 python中可调用对象

python 如何根据输入参数调用不同的函数使用字典,比如下面这样:
def funcA():
pass
def funcB():
pass
def func_None():
print "cannot find func"
func_dict = {"a": funcA, "b": funcB}
【python可调对象函数 python中可调用对象】def func(x):
return func_dict.get(x, func_None)()
在有switch的语言中 , 一般都是使用switch来根据入参进行判断 。但是python中没有switch,因为根本不需要?。∈褂米值浯鎠witch,性能更高,而且这种方法的表述能力更强一点 。
另外func_dict.get(x, func_None)()中方法是从字典中取出值对应的函数对象,然后后面加上()是执行该对象的__call__方法 。因为python中函数就是实现了__call__方法的对象 。所以可以这么使用 。
python语言中可以调用的函数有哪些?Python语言中有很多内置函数和标准库函数可以直接调用python可调对象函数,同时还可以自定义函数和调用其python可调对象函数他模块中python可调对象函数的函数 。以下是一些常用的Python内置函数和标准库函数:
数学函数:abs(), pow(), round(), max(), min(), math库中的sin(), cos(), tan(), pi等函数 。
字符串函数:len(), str(), int(), float(), ord(), chr(), upper(), lower(), replace(), split()等函数 。
列表函数:append(), extend(), insert(), remove(), pop(), sort(), reverse()等函数 。
文件操作函数:open(), read(), write(), close()等函数 。
时间和日期函数:time(), sleep(), strftime()等函数 。
正则表达式函数:re.compile(), re.search(), re.match(), re.sub()等函数 。
网络编程函数:socket库中的socket(), bind(), listen(), accept()等函数 。
python函数传对象对性能的影响python函数传对象对性能有影响 。在Python中,一切皆对象,Python参数传递采用的都是“传对象引用”的方式 。实际上,这种方式相当于传值和传引用的一种综合 。如果函数收到的是一个可变对象(比如字典或者列表)的引用,就能修改对象的原始值 , 相当于通过“传引用”来传递对象 。如果函数收到的是一个不可变对象(比如数字、字符或者元组)的引用,就不能直接修改原始对象,相当于通过“传值’来传递对象,此时如果想改变这些变量的值 , 可以将这些变量申明为全局变量 。
Python中Thread类的start和run方法的区别1) start:
用start方法来启动线程,真正实现了多线程运行 , 这时无需等待run方法体代码执行完毕而直接继续执行下面的代码 。通过调用Thread类的start()方法来启动一个线程,这时此线程处于就绪(可运行)状态 , 并没有运行,一旦得到cpu时间片 , 就开始执行run()方法,这里方法 run()称为线程体 , 它包含了要执行的这个线程的内容,Run方法运行结束,此线程随即终止 。
2) run:
run()方法只是类的一个普通方法而已,如果直接调用Run方法,程序中依然只有主线程这一个线程,其程序执行路径还是只有一条,还是要顺序执行,还是要等待run方法体执行完毕后才可继续执行下面的代码,这样就没有达到写线程的目的 。总结:调用start方法方可启动线程 , 而run方法只是thread的一个普通方法调用,还是在主线程里执行 。这两个方法应该都比较熟悉 , 把需要并行处理的代码放在run()方法中 , start()方法启动线程将自动调用 run()方法,这是由jvm的内存机制规定的 。并且run()方法必须是public访问权限,返回值类型为void. 。
Python如何调用特殊函数__call__
在Python中,函数其实是一个对象:
f = abs
f.__name__
'abs'

推荐阅读