Python:如何在循环中从`eval`调用`print`?

Python:如何在循环中从`eval`调用`print`?,第1张

概述当我从eval调用print时: def printList(myList): maxDigits = len(str(len(myList))) Format = '0{0}d'.format(maxDigits) for i in myList: eval('print "#{0:' + Format + '}".format(i+1), myList[ 当我从eval调用print时:

def printList(myList):    maxDigits = len(str(len(myList)))    Format = '0{0}d'.format(maxDigits)    for i in myList:        eval('print "#{0:' + Format + '}".format(i+1),myList[i]')

它给出了一个错误:

print "#{0:01d}".format(i+1),myList[i]        ^SyntaxError: invalID Syntax

我试图利用this,并重新编写它:

def printList(myList):    maxDigits = len(str(len(myList)))    Format = '0{0}d'.format(maxDigits)    for i in myList:        obj = compile(src,'','exec')        eval('print "#{0:' + Format + '}".format(i+1),myList[i]')

但这抱怨我:

nameError: name 'i' is not defined

附:我正在处理python2.6

解决方法 你不需要eval:

def printList(myList):    maxDigits = len(str(len(myList)))    str_format = '#{0:0' + str(maxDigits) + '}'    for i,elem in enumerate(myList,1):        print str_format.format(i),elem

或者,正如@svenMarnach所说,你甚至可以将格式化参数放入一个格式调用中:

def printList(myList):    maxDigits = len(str(len(myList)))    for i,1):        print '#{1:0{0}} {2}'.format(maxDigits,i,elem)
总结

以上是内存溢出为你收集整理的Python:如何在循环中从`eval`调用`print`?全部内容,希望文章能够帮你解决Python:如何在循环中从`eval`调用`print`?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

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

原文地址: http://outofmemory.cn/langs/1195870.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-03
下一篇 2022-06-03

发表评论

登录后才能评论

评论列表(0条)

保存