【发布时间】:2018-10-19 14:19:20
【问题描述】:
我正在尝试编写一个简单的字符串工具来生成随机字符串。
我在utils 目录中有string.py,代码如下:
import string
import random
def generate_random_letters(str_len: int) -> str:
return ''.join(random.choice(string.ascii_letters) for _ in range(str_len))
我在交互式控制台中尝试过...
>>> from string import generate_random_letters
>>> generate_random_letters(10)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "xxx\app\utils\string.py", line 6, in generate_random_letters
return ''.join(random.choice(string.ascii_letters) for _ in range(str_len))
File "xxx\app\utils\string.py", line 6, in <genexpr>
return ''.join(random.choice(string.ascii_letters) for _ in range(str_len))
AttributeError: module 'string' has no attribute 'ascii_letters'
我尝试将 string.py 更改为 strings.py 并且它有效。所以名称冲突是第一个原因
我也尝试删除 import string 并简单地这样做
return ''
而且它有效。所以这是第二个原因。
我的目标是做
import app.utils.string as string_util
string_util.generate_random_letters(10)
在python3.7可以吗?
如果不可能,我肯定需要更改文件名。
但也请随时为此类特定案例建议任何好名字 但是,老实说,我认为以下任何一项都不好
_string.py、my_string.py、string_util.py
【问题讨论】:
标签: python python-import python-3.7