Python练习

生成激活码

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import uuid

def generate_code(count):
    code_list = []
    for i in range(count):
        code = str(uuid.uuid4()).replace('-','').upper()
        if code not in code_list:
            code_list.append(code)

    return code_list

if __name__ == '__main__':
    code_list = generate_code(200)
    for code in code_list:
        print(code)

闭包

s = [lambda x: x + i for i in range(10)]
print(s[0](10))
print(s[1](10))
print(s[2](10))
print(s[3](10))
def create_multipliers():
    multipliers = []

    for i in range(5):
        # 两种情况,结果与期望完全不一样
        # def multiplier(x):
        def multiplier(x, i=i):
            return i * x
        multipliers.append(multiplier)

    return multipliers
for mu in create_multipliers():
    print(mu(2))

解决 两种方法

def create_multipliers():
    return [lambda x, i=i : i * x for i in range(5)]
from functools import partial
from operator import mul

def create_multipliers():
    return [partial(mul, i) for i in range(5)]