Python字符串内插实现

我只是了解了格式字符串的方法,其使用词典使用,如所提供的那些vars(),locals()和globals(),例如:


name = 'Ismael'

print 'My name is {name}.'.format(**vars())

但我想做:


name = 'Ismael'

print 'My name is {name}.' # Similar to ruby

所以我想出了这个:


def mprint(string='', dictionary=globals()):

    print string.format(**dictionary)

您可以在此处与代码进行交互:http : //labs.codecademy.com/BA0B/3# : workspace


最后,我想做的就是将该函数保存在另一个名为的文件中my_print.py,这样我就可以做到:


from my_print import mprint


name= 'Ismael'

mprint('Hello! My name is {name}.')

但是就目前而言,范围存在问题,如何从导入的mprint函数内部将主模块名称空间作为字典获取。(不是来自的那个my_print.py)


我希望我自己能理解,如果没有,请尝试从另一个模块导入功能。(回溯在链接中)


它是globals()从访问dict的my_print.py,但是在该范围内当然没有定义变量名,如何实现这一点的任何想法?


如果在同一个模块中定义该函数,则该函数起作用,但是请注意必须使用的方法,globals()因为如果不这样,我只会得到一个mprint()范围内的值的字典。


我曾尝试使用非本地和点表示法来访问主模块变量,但仍然无法弄清楚。


海绵宝宝撒
浏览 430回答 3
3回答

慕娘9325324

您可以通过传入globals()第二个参数来使函数起作用mprint('Hello my name is {name}',globals())。尽管在Ruby中可能很方便,但是如果您想充分利用该语言,我建议您不要使用Python编写Ruby。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python