如何将函数传递给python中的另一个函数
问题描述:
确定背景的第一位。如何将函数传递给python中的另一个函数
所以..现在,我有一个代码说(loop.py),这只是一个大的for循环......它接受stdin的输入并对该字符串进行一些操作,然后编写输出。
所以像
#loop.py
from clean import *
for line in sys.stdin:
clean_line = clean(line)
print clean_line
我跑这是
猫input.txt中| python loop.py
因此,clean.py是用户写入的某种清理逻辑。
现在,我们这里有一个“干净”的功能。对于一些人来说是一定的提取逻辑..
所以你可能
#loop.py
from clean import *
for line in sys.stdin:
extract_line = extract(line)
print extract_line
现在,这loop.py处理不当改变了..而且它不会改变..
所以..也许我可以拼出经验,有人可以帮我找出如何实现..
我要的是用户写的那些立方米自定functions..So用户写道...
my_custom_func.py
import run_loop
def my_own_logic(string):
# my logic goes in here
run_loop.run(my_own_logic)
和这样做是自动执行loop.py这my_own_logic功能是在循环推?
我希望我有任何意义...我是吗?
答
这是相当简单:
def run(func):
for line in sys.stdin:
print func(line)
答
的Python有first-class functions,这意味着它们可以被传递给其他函数没有问题。
实施例:
def foo(s):
print(s)
def bar(f, s):
f(s)
bar(foo, 'Hello world')
答
run_loop.py
import sys
def run(func):
for line in sys.stdin:
processed = func(line)
print processed
款待用作任何其他对象(INT,STR,列表,...)。
答
经验法则:说你有一个像
def f(x): return x+1
然后函数f是指函数本身,而f()的(后面括号)的函数的评价。
>>> print f
<function f at 0x0000000001FD9DD8>
>>> print f(1)
2
所以,如果你想处理一个清单,任意功能,你有几个方法可以做到这一点:
def f(x): return x+1
def g(x): return x*2
>>> def procList(fun,l):
... for x in l:
... print fun(x)
...
>>> l=[1,2,3]
>>> procList(f,l)
2
3
4
>>> procList(g,l)
2
4
6
>>>