如何在python中循环列表以将字符串传递给函数名
我正试图找到最有效的方法来创建不同的函数名myfunction\u a,。。代码略有不同的b、c(输入文件名'app/data/mydata_a.csv'),下面是我得到的a函数如何在python中循环列表以将字符串传递给函数名,python,function,Python,Function,我正试图找到最有效的方法来创建不同的函数名myfunction\u a,。。代码略有不同的b、c(输入文件名'app/data/mydata_a.csv'),下面是我得到的a函数 def myfunction_a(request): os.getcwd() # Should get this Django project root (where manage.py is) fn = os.path.abspath(os.path.join(os.getcwd(),'app/d
def myfunction_a(request):
os.getcwd() # Should get this Django project root (where manage.py is)
fn = os.path.abspath(os.path.join(os.getcwd(),'app/data/mydata_a.csv'))
# TODO: Move to helper module
response_data = {}
data_format = 'tsv'
if data_format == 'json':
with open(fn, 'rb') as tsvin:
tsvin = csv.reader(tsvin, delimiter='\t')
for row in tsvin:
print 'col1 = %s col2 = %s' % (row[0], row[1])
response_data[row[0]] = row[1]
result = HttpResponse(json.dumps(response_data), content_type = 'application/json')
else:
with open(fn, 'rb') as tsvin:
buff = tsvin.read()
result = HttpResponse(buff, content_type = 'text/tsv')
return result
我希望能够在列表中循环并创建多个函数名:
mylist = ['a','b','c' ... 'z' ]
def myfunction_a(请求):
... ('app/data/mydata_a.csv')
退货申请
要获得最终结果,请执行以下操作:
- def myfunction_a=>获取“app/data/mydata_a.csv”
- def myfunction_b=>获取“app/data/mydata_b.csv”
- def myfunction_c=>获取“app/data/mydata_c.csv”
现在我只是复制过去并改变它。有没有更好的办法?如有任何建议,将不胜感激。谢谢。您可以使用
"app/data/mydata_%s.csv" % (character)
所以
每次都应在%s
因此,由于您希望为每个函数使用另一个字符串来获取另一个文件,因此您可以
这样做:
def myfunction(label, request):
return "app/data/mydata_%s.csv" % (label)
因此,您可以在documentpath的末尾获得函数标签。既然你说你
如果只想更改名称,使其与函数标签相等,则只需要另一个参数,而不需要新的函数名称您可以使用
"app/data/mydata_%s.csv" % (character)
所以
每次都应在%s
因此,由于您希望为每个函数使用另一个字符串来获取另一个文件,因此您可以
这样做:
def myfunction(label, request):
return "app/data/mydata_%s.csv" % (label)
因此,您可以在documentpath的末尾获得函数标签。既然你说你
如果只想更改名称,使其与函数标签相等,则只需要另一个参数,而不需要新的函数名称如果必须具有特殊的函数名称,则可以执行此操作。虽然我不知道你为什么要这么做
import functools, sys
namespace = sys._getframe(0).f_globals
def myfunction(label, request):
print request
return "app/data/mydata_%s.csv" % (label)
my_labels = ['a','b','c']
for label in my_labels:
namespace['myfunction_%s'%label] = functools.partial(myfunction, label)
print myfunction_a('request1')
print myfunction_b('request2')
输出如下:
request1
app/data/mydata_a.csv
request2
app/data/mydata_b.csv
request3
app/data/mydata_c.csv
或者更好的实施方式可能是:
class MyClass(object):
def __init__(self, labels):
for label in labels:
setattr(self, label, functools.partial(self._myfunction, label))
def _myfunction(self, label, request):
print request
return "app/data/mydata_%s.csv" % (label)
myfunction = MyClass(['a','b','c'])
print myfunction.c('request3')
输出如下:
request1
app/data/mydata_a.csv
request2
app/data/mydata_b.csv
request3
app/data/mydata_c.csv
如果必须有一个特殊的函数名,可以这样做。虽然我不知道你为什么要这么做
import functools, sys
namespace = sys._getframe(0).f_globals
def myfunction(label, request):
print request
return "app/data/mydata_%s.csv" % (label)
my_labels = ['a','b','c']
for label in my_labels:
namespace['myfunction_%s'%label] = functools.partial(myfunction, label)
print myfunction_a('request1')
print myfunction_b('request2')
输出如下:
request1
app/data/mydata_a.csv
request2
app/data/mydata_b.csv
request3
app/data/mydata_c.csv
或者更好的实施方式可能是:
class MyClass(object):
def __init__(self, labels):
for label in labels:
setattr(self, label, functools.partial(self._myfunction, label))
def _myfunction(self, label, request):
print request
return "app/data/mydata_%s.csv" % (label)
myfunction = MyClass(['a','b','c'])
print myfunction.c('request3')
输出如下:
request1
app/data/mydata_a.csv
request2
app/data/mydata_b.csv
request3
app/data/mydata_c.csv
您好@muthan,这是它的一部分,但我也在寻找创建函数名def“myfunction\u a”“myfunction\u b”。。同样,对于函数,您可以将a、b、c放入一个参数中,这样您就有了一个函数调用,比如
def myfunction(character,request)
,函数每次都会执行相同的操作,除了不同的命名之外,这应该是可行的。我将把它添加到我的答案中。Hi@muthan这是它的一部分,但我也在寻找创建函数名def“myfunction\u a”“myfunction\u b”。。同样,对于函数,您可以将a、b、c放入一个参数中,这样您就有了一个函数调用,比如def myfunction(character,request)
,函数每次都会执行相同的操作,除了不同的命名之外,这应该是可行的。我会在我的回答中加上这个。你为什么要这样做@gnibbler我使用这个函数名作为Django中views.py的一部分,并使用url根据需要提取每个函数,从Django模板调用views app。为什么需要这样做@gnibbler我使用这个函数名作为Django中views.py的一部分,并使用url根据需要提取每个函数,从Django模板调用views应用程序。