我来自Ruby背景,我正在学习Python。这是我创建的用于生成URL安全唯一键的方法:
import random;
def generate_unique_key():
array = []
for letter in range(97,123):
array.append(chr(letter))
for letter in range(65,91):
array.append(chr(letter))
for number in range(0,10):
array.append(number)
for char in ["-", ".", "_", "~"]:
array.append(char)
random_values = random.sample(array, 15)
random_values = map(lambda x: str(x), random_values)
return "".join(random_values)
print(generate_unique_key())来自Ruby背景的我首先对不能直接调用列表中的join而不得不从字符串实例调用它感到困惑。
同样,在Ruby中,我可以直接编写类似于random.sample(array, 15).join("")的东西,而不必将它们全部转换为字符串,但我相信这就是join()的工作方式。
虽然这是可行的,但这个函数怎么会更像毕达通呢?
发布于 2018-10-27 09:26:19
大多数pythonic生成URL安全唯一密钥或令牌的方法是使用秘密模块。
使用secrets.token_urlsafe,它将返回一个安全的随机URL安全文本字符串。秘密模块使用同步方法,确保没有两个进程能够同时获得相同的数据。
import secrets
print(secrets.token_urlsafe(32))产出:
GzWfp5xCcuFsnEUb9qqN_v94_XOx9hPwSGszdx4rNBk您可以根据需要更改字节大小。
https://codereview.stackexchange.com/questions/200355
复制相似问题