里面只含有数字和大写字母,比如:

    • 6U1S75
    • 4Z4UKK
    • U911K4
      有没有什么的方法?

    一行写的答案:

    为了重用可以这样写:

    1. >>> import random
    2. >>> def id_generator(size=6, chars=string.ascii_uppercase + string.digits):
    3. ...
    4. >>> id_generator()
    5. 'G5G74W'
    6. >>> id_generator(3, "6793YUIO")
    7. 'Y3U'

    如何工作?

    string.ascii_uppercase + string.digits是一个包含大写字母和数字的列表:

    然后我们用列表推导式创建n个元素的列表:

    1. >>> range(4) # n个数字的列白哦
    2. [0, 1, 2, 3]
    3. ['elem', 'elem', 'elem', 'elem']

    在上面的例子中,我们用[]来创建列表,和函数不一样,生成器不再内存中创建列表,只是在程序运行时一个一个的生成列表元素(更多见)

    所以random.choice(chars) for _ in range(size)会取出size个字符.字符随机的在chars中取出:

    1. >>> [random.choice('abcde') for _ in range(3)]
    2. ['a', 'b', 'b']
    3. >>> [random.choice('abcde') for _ in range(3)]
    4. ['e', 'b', 'e']
    5. >>> [random.choice('abcde') for _ in range(3)]
    6. ['d', 'a', 'c']

    然后我们可以用空字符串把它们连起来成为一个字符串: