Python 3.6随机生成由字母和数字组成的字符串
在Python 3.6可以分为伪随机和安全随机来随机产生字符串。
伪随机
Python 3.6 新增了random.choices(),用于随机抽取字符。
Python 3.6
''.join(random.choices(string.ascii_lowercase + string.ascii_uppercase + string.digits, k=N))
Python 3.6之前的版本
''.join(random.choice(string.ascii_lowercase + string.ascii_uppercase + string.digits) for _ in range(N))
安全随机
random.choice和random.choices使用的是伪随机。如果要安全性高的随机,可以使用Python 3.6新增的secrets
''.join(secrets.choice(string.ascii_lowercase + string.ascii_uppercase + string.digits) for _ in range(N))
Python 3.6之前的版本使用random.SystemRandom()
''.join(random.SystemRandom().choice(string.ascii_lowercase + string.ascii_uppercase + string.digits) for _ in range(N))