这些Python代码技巧,你肯定还不知道

发表于:2018-9-03 10:23

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:机器之心编译    来源:机器之心

分享:
  pprint
  Python 的默认 print 函数就可以实现打印功能。但如果尝试打印较大的嵌套对象,就会发现打印结果很丑。
  这时 Python 标准库的 pretty printer 模块就可以发挥作用了。该模块可以将复杂的结构化对象以一种易读的格式打印出来。
  pretty printer 
  Python 开发者的必备技能之一就是处理复杂的数据结构。
  import requests
  import pprint
  url = 'https://randomuser.me/api/?results=1'
  users = requests.get(url).json()
  pprint.pprint(users)
  Queue

  Python 支持多线程,而这是由 Python 标准库的 Queue 模块支持的。
  该模块允许用户实现队列(queue)数据结构。队列数据结构允许用户根据特定的规则添加和检索条目。
  『First in, first out』 (FIFO) 队列允许用户按照对象被添加的顺序来检索对象。『Last in, first out』 (LIFO) 队列允许用户首先访问最新添加的对象。
  最后,优先级队列(priority queue)允许用户根据对象对应的优先级类别来检索对象。
  如何使用 queue 在 Python 中实现多线程编程,
  __repr__
  在 Python 中定义一个类别或对象时,以「官方」方式将对象表示为字符串很有用。例如:
  >>> file = open('file.txt', 'r')
  >>> print(file)
  <open file 'file.txt', mode 'r' at 0x10d30aaf0>

  这使代码 debug 变得简单很多。将字符串添加到类别定义,如下所示:
  class someClass:
  def __repr__(self):
  return "<some description here>"
  someInstance = someClass()
  # prints <some description here>
  print(someInstance)
  sh

  Python 是一种伟大的脚本语言,不过有时使用标准 os 和 subprocess 库会有点棘手。
  sh 库提供了一种不错的替代方案。
  sh 库:http://amoffat.github.io/sh/
  该库允许用户像使用普通函数一样调用任意程序,这对自动化工作流和任务非常有用。
  from sh import *
  sh.pwd()
  sh.mkdir('new_folder')
  sh.touch('new_file.txt')
  sh.whoami()
  sh.echo('This is great!')

  类型提示(Type hints)
  Python 是动态语言。在定义变量、函数、类别等时无需指定数据类型。
  这有利于缩短开发周期。但是,简单的类型错误(typing issue)导致的运行时错误真的太烦了。
  从 Python 3.5 版本开始,用户可以选择在定义函数时开启类型提示。
  def addTwo(x : Int) -> Int:
  return x + 2

  你还可以定义类型别名:
  from typing import List
  Vector = List[float]
  Matrix = List[Vector]
  def addMatrix(a : Matrix, b : Matrix) -> Matrix:
  result = []
  for i,row in enumerate(a):
  result_row =[]
  for j, col in enumerate(row):
  result_row += [a[i][j] + b[i][j]]
  result += [result_row]
  return result
  x = [[1.0, 0.0], [0.0, 1.0]]
  y = [[2.0, 1.0], [0.0, -2.0]]
  z = addMatrix(x, y)

  尽管非强制,但类型注释可以使代码更易理解。
  它们还允许你在运行之前使用类型检查工具捕捉 TypeError。在进行大型复杂项目时执行此类操作是值得的。
  uuid
  生成通用唯一标识符(Universally Unique ID,UUID)的一种快速简单方法就是使用 Python 标准库的 uuid 模块。
  uuid 
  import uuid
  user_id = uuid.uuid4()
  print(user_id)
  这创建了一个随机化后的 128 比特数字,该数字几乎必然是唯一的。
  事实上,可以生成 2122可能的 UUID。这个数字超过了
  5,000,000,000,000,000,000,000,000,000,000,000,000。
  在给定集合中找出重复数字的可能性极低。即使有一万亿 UUID,重复数字存在的概率也远远低于十亿分之一。
  虚拟环境(Virtual environment)
  这可能是 Python 中我最喜欢的事物了。
  你可能同时处理多个 Python 项目。不幸的是,有时候两个项目依赖于相同依赖项的不同版本。那你要安装哪个版本呢?
  幸运的是,Python 支持虚拟环境,这使得用户能够充分利用两种环境。见下列行:
  python -m venv my-project
  source my-project/bin/activate
  pip install all-the-modules

  现在你在一台机器上具备独立的多个 Python 版本了。问题解决!
  wikipedia
  Wikipedia 拥有一个很棒的 API,允许用户以编程方式访问巨大体量的免费知识和信息。
  wikipedia 模块使得访问该 API 非常便捷。
  Wikipedia 
  import wikipedia
  result = wikipedia.page('freeCodeCamp')
  print(result.summary)
  for link in result.links:
  print(link)

  和真实的维基百科网站类似,该模块支持多种语言、页面消歧、随机页面检索,甚至还具备 donate() 方法。
  xkcd
  humour 是 Python 语言的一个关键特征,其名称来自英国喜剧片《蒙提·派森的飞行马戏团》(Monty Python and the Flying Circus)。Python 的很多官方文档引用了该喜剧片最著名的剧情。
  幽默感并不限于文档。试着运行下列行:
  import antigravity
  将打开 xkcd 画的 Python 漫画。不要改变这一点,Python。不要改变。
  YAML
  YAML 代表 『YAML Ain』t Markup Language』。它是一种数据格式语言,是 JSON 的超集。
  与 JSON 不同,它可以存储更复杂的对象并引用自己的元素。你还可以编写注释,使其尤其适用于编写配置文件。
  PyYAML 
  $ pip install pyyaml
  然后导入到项目中:
  import yaml
  PyYAML 使你能够存储任何数据类型的 Python 对象,以及任何用户定义类别的实例。
  zip
  给你支最后一招,非常酷。还在用两个列表来组成一部词典吗?
  keys = ['a', 'b', 'c']
  vals = [1, 2, 3]
  zipped = dict(zip(keys, vals))

  zip() 内置函数使用多个可迭代对象作为输入并返回元组列表。每个元组按位置索引对输入对象的元素进行分组。
  你也可以通过调用*zip() 来「解压」对象。

   上文内容不用于商业目的,如涉及知识产权问题,请权利人联系博为峰小编(021-64471599-8017),我们将立即处理。
22/2<12
价值398元的测试课程免费赠送,填问卷领取吧!

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计

法律顾问:上海漕溪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2022
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号