
简体中文:zh_CN
繁体中文:zh_TW
美国英文:en_US
英国英文:en_GB
德文:de_DE
日文:ja_JP
韩文:ko_KR
法文:fr_FR
接下来让我们详细看下 faker 可以都生成什么类型的数据,具体的可用 API 可以看 https://faker.readthedocs.io/en/master/locales/zh_CN.html,这里面列出来了可用的所有方法。
但打开之后可以发现,这里面多了一个 Provider 对象,那么这个 Provider 是怎么一回事呢?
实际上这个 faker 库在设计上,为了解耦,将 Provider 对象做成了 Faker 对象的”插件“。Faker 可以添加一个个 Provider 对象,Provider 对象为 Faker 对象提供了生成某项数据的核心实现。就相当于 Faker 对象是一个生成器,它的生成功能依赖于什么呢?依赖于 Provider,是 Provider 提供给了 Faker 对象生成某项数据的能力。
正是因为 Faker 对象内置了一些 Provider 对象,Faker 对象才可以生成刚才所要求的姓名、地址和文本。
那么这时候我们肯定就很好奇了,既然 Faker 对象有生成数据的能力,那么它一定内置了一些默认的 Provider 对象,下面我们来打印看一下:
运行结果如下: 还真不少,通过名字可以看到有 user_agent、phone_number、isbn、credit_card 等 Provider,其中具有语言差异化的 Provider 还单独区分了语言,比如 phone_number 代表电话号码,这个不同语言的不同,所以这里就又分了一层 zh_CN,作了语言的区分。 这样一来,通用的 Provider 就直接处在某个 Provider 类别的模块中,具有语言差异的 Provider 就又根据不同的语言进一步划分了模块,设计上非常科学,易扩展又不冗余。 知道了 Faker 具有这么多 Provider 之后,我们来看看刚才调用的 name、address 等方法又和 Provider 有什么关系呢? 我们将 name、address、text 等方法打印一下看看: 注意这里没有调用,而是直接打印了这三个方法,这样可以直接输出方法的对象形式的描述,结果如下: 恍然大悟,原来我们调用的方法就是 Faker 对象调用的 Provider 里面的对应方法,比如 name 就是 faker.providers.person.zh_CN.Provider 里面的 name 方法,二者是一致的,我们扒一扒源码验证下,源码在:https://github.com/joke2k/faker/blob/master/faker/providers/person/init.py,果不其然,里面定义了 name 方法,然后 Faker 动态地将这个方法引入进来了,就可以使用了。 方法列举 既然有这么多 Provider,下面我们再详细地看看还有哪些常用的方法吧,下面进行一部分简单的梳理,参考来源文档地址为: https://faker.readthedocs.io/en/master/providers.html。 Address Address,用于生成一些和地址相关的数据,如地址、城市、邮政编码、街道等内容, 用法如下: Color Color,用于生成和颜色相关的数据,如 HEX、RGB、RGBA 等格式的颜色,用法如下: Company Company,用于生成公司相关数据,如公司名、公司前缀、公司后缀等内容,用法如下: Credit Card Credit Card,用于生成信用卡相关数据,如过期时间、银行卡号、安全码等内容,用法如下: Date Time Date Time,用于生成时间相关数据,如年份、月份、星期、出生日期等内容,可以返回 datetime 类型的数据,用法如下: File File,用于生成文件和文件路径相关的数据,包括文件扩展名、文件路径、MIME_TYPE、磁盘分区等内容,用法如下: Geo Geo,用于生成和地理位置相关的数据,包括经纬度,时区等等信息,用法如下: Internet Internet,用于生成和互联网相关的数据,包括随机电子邮箱、域名、IP 地址、URL、用户名、后缀名等内容,用法如下: Job Job,用于生成和职业相关的数据,用法如下: Lorem Lorem,用于生成一些假文字数据,包括句子、自然段、长文本、关键词等,另外可以传入不同的参数来控制生成的长度,用法如下: MiscMisc,用于生成生成一些混淆数据,比如密码、sha1、sha256、md5 等加密后的内容,用法如下: PersonPerson,用于生成和人名相关的数据,包括姓氏、名字、全名、英文名等内容,还能区分男女名字,用法如下: User-Agent User-Agent,用于生成和浏览器 User-Agent 相关的内容,可以定制各种浏览器,还可以传入版本信息来控制生成的内容,用法如下: 以上仅仅列了一部分,还有更多的功能大家可以查看官方文档的内容,链接为:https://faker.readthedocs.io/en/master/locales/zh_CN.html。 其他 Provider 另外还有一些社区贡献的 Provider,如 WiFi、微服务相关的,大家可以查看文档的说明,另外需要额外安装这些扩展包并自行添加 Provider,文档见:https://faker.readthedocs.io/en/master/communityproviders.html。 添加 Provider 需要调用 add_provider 方法,用法示例如下:
还有更多的内容大家可以参考官方文档链接: https://faker.readthedocs.io/
(*本文为Python大本营转载文章,转载请联系原作者)
◆
精彩推荐
◆
「2019 AI开发者大会」 除了邀请国内外一线公司重磅嘉宾外,还邀请到了亚马逊首席科学家@李沐,他将于9月5日亲授「深度学习实训营」,通过动手实操,帮助开发者全面了解深度学习的基础知识和开发技巧。
目前「培训+会议」优惠票倒计时最后 1 天,扫描海报二维码购票,即享折扣。更多详情请见: https://t.csdnimg.cn/aoY4

