Python 连接模块中的所有字符串

Python 连接模块中的所有字符串,python,Python,我准备了以下文件(unicode_strings.py),其中包含一些我想用于测试的unicode字符串: # -*- coding: utf-8 -*- # Refer to http://ergoemacs.org/emacs/unicode.txt GREEK = u'ΑΒΓΔ ΕΖΗΘ ΙΚΛΜ ΝΞΟΠ ΡΣΤΥ ΦΧΨΩ αβγδ εζηθ ικλμ νξοπ ρςτυ φχψω' ACCENTS = u'àáâãäåæç èéêë ìíîï ðñòóôõö øùúûüý

我准备了以下文件(
unicode_strings.py
),其中包含一些我想用于测试的unicode字符串:

# -*- coding: utf-8 -*-

# Refer to http://ergoemacs.org/emacs/unicode.txt

GREEK    = u'ΑΒΓΔ ΕΖΗΘ ΙΚΛΜ ΝΞΟΠ ΡΣΤΥ ΦΧΨΩ αβγδ εζηθ ικλμ νξοπ ρςτυ φχψω'
ACCENTS  = u'àáâãäåæç èéêë ìíîï ðñòóôõö øùúûüýþÿ ÀÁÂÃÄÅ Ç ÈÉÊË ÌÍÎÏ ÐÑ ÒÓÔÕÖ ØÙÚÛÜÝÞß'
CURRENCY = u'¤ $ ¢ € ₠ £ ¥'
...
因此,在我的测试文件中,我可以:

from unicode_strings import GREEK

def test1():
    print GREEK
现在我想实现一个
测试\u all

def test_all():
    print ALL_UNICODE

如何定义
UNICODE\u strings.py
中定义的所有字符串(所有变量)的串联。显然,我不想手动定义它。

如果所有变量都是大写名称,并且没有从其他地方导入任何其他此类字符串,则可以使用:

_uppercase = [k for k in dir() if k.isupper()]
ALL_UNICODE = ' '.join(map(globals().get, _uppercase))
这将连接当前模块全局命名空间中绑定到大写名称的所有unicode字符串

我在这里切换到使用
dir()
,因为这比在
list(globals())
上循环要简单一些;您不能在
globals()
本身上使用列表理解进行循环,因为列表理解变量在循环期间被注入全局命名空间,从而在迭代期间更改
globals()
字典的大小。

它应该可以工作:

ALL_UNICODE = ' '.join([item for item in dir(unicode_strings) if not item.startswith("__")])

不幸的是,这并不能保证:我在代码中使用大写的常量名称(希望这是公认的做法)。我们所知道的是,我想要连接所有来自于它的变量file@gonvaled:这仅连接该文件中的变量
globals()
仅适用于一个模块。啊哈!我以前误解你了。可能就是这样!让我试试。我更喜欢模块本身,正如马丁所建议的那样。