是否可以以某种方式在 python 中内联函数?
我在 python 中有一个很长的函数,我想将其拆分为几个函数以提高可读性。因此,这些部分仅从程序中的一个点调用,但非常频繁。
这会降低性能,因为函数调用非常昂贵。
有没有一种方法既能保持不分割的性能,又能提高可读性/可维护性?
最佳答案
Python 中内联的方式有多种
除了 numba
和类似的 JIT 编译器(保留自己的内联缓存)之外,这可能会帮助您进行 JIT 代码重用,正如您在许多重新使用中所指出的那样调用未指定的函数,
有多种方法可以内联到 Python 代码中。
将符号 x86 ASM
汇编语言内联到 python
from pyasm import Program
from pyasm.data import String
from pyasm.macro import syscall
from pyasm.instructions import mov, ret, push, add
from pyasm.registers import eax, ebx, ecx, edx, ebp
import sys
def example():
msg = 'Hello World!'
prog = Program( # _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
#
### ASSUME NOTHING - a lovely ASM note to always remember & self.remind
mov(ebx, 1),
mov(ecx, String(msg)),
mov(edx, len(msg)),
syscall('write'),
ret(),
# _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
)
fun = prog.compile()
fun()
if __name__ == '__main__':
example()
内联几乎 c
语言到python
from pycca.cc import CCode, Function, Assign, Return
code = CCode( [ Function( 'int', 'add_one', [( 'int', 'x' )],
[
Assign( x='x + 1' ),
Return('x')
])
])
print code.dump_asm()
print "3 + 1 = %d" % code.add_one( 3 )
For details & other options look at >>> this
<小时/>将 c
语言内联到 python
(自 2001 年起)
import PyInline, __main__
m = PyInline.build( language = "C",
targetmodule = __main__,
code = """
/*_______________________________WORLDS-OF-C*/
double my_C_adder( double a, double b )
{
return a + b;
}
/*_______________________________WORLDS-OF-C*/
"""
)
print my_C_adder( 4.5, 5.5 ) # Should print out "10.0"
关于python - 是否有可能以某种方式内联 python 中的函数? (兼顾性能+可维护性),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34595671/