代码之家  ›  专栏  ›  技术社区  ›  nz_21

自由函数,每次都给出一个更大的字符串

  •  -1
  • nz_21  · 技术社区  · 6 年前

    我正在实现一个玩具数据库,我需要一个 自由的 函数,每次调用时都会给我一个按字典顺序排列的更大字符串。它用于命名分段文件。

    假设我最多有1000个文件,我更喜欢字符串长度小于10个字符。

    有人能给我举一个python中这种函数最简单的例子吗?我真的很想成为一个自由函数,因为我不想引入状态的复杂性。

    1 回复  |  直到 6 年前
        1
  •  1
  •   chepner    6 年前

    每次调用时返回不同值的函数必须保持某种状态。然而,定义生成器使其相对易于管理。明确地, itertools.count 将产生无限递增的整数流;你只需要从每个整数中生成一个合适的字符串。

    from itertools import count
    
    
    next_label = map("{:010}".format, count()).__next__
    

    那么

    >>> next_label()
    '0000000000'
    >>> next_label()
    '0000000001'
    >>> next_label()
    '0000000002'
    

    等等,你需要打多少次电话就打多少次 next_label .