更多课程 选择中心


Python培训

400-111-8989

Python编程技巧有哪些?如何快速学好Python编程?

  • 发布:余杭、李灏
  • 来源:AI 研习社
  • 时间:2019-01-15 17:36

有人问如何快速学好Python编程,办法当然有喽,当然少不了你的刻苦努力,也少不了这些Python编程技巧啦,快来看看吧:

Python编程技巧有哪些?如何快速学好Python编程?

Python 是这个世界上最受欢迎的按需编程语言之一,易学习、应用范围广、具备非常多的模型和库,在学习 Python 的过程中,有很多的方法和技巧:

all or any

Python 受欢迎的众多原因之一是它的可读性和易表达性。

人们经常笑称 Python 是可执行的伪代码。但当你写出下述代码,很难去反驳这种言论。

x = [True, True, False]
if any(x):
   print("At least one True")
if all(x):
   print("Not one False")
if any(x) and not all(x):
   print("At least one True and one False")

bashplotlib

想在控制台中绘图吗?

$ pip install bashplotlib

使用上述命令行,即可在控制台中绘图。

集合

Python 内置默认的数据类型,但有时它们的使用效果会不尽如人意。

幸运的是,Python 的标准库提供了 collections 模块,这个方便的附加库提供了更多的数据类型。

from collections import OrderedDict, Counter
x = OrderedDict(a=1, b=2, c=3)
y = Counter("Hello World!")

dir

你是否曾经有过深入 Python 对象内部并且观察它具备哪些属性的想法呢?

输入下述命令行:

>>> dir()
>>> dir("Hello World")
>>> dir(dir)

以交互式运行 Python 时,这是一个非常实用的特征,并且可以动态地搜索正在使用的对象和模块。

emoji

Python 包含 emoji 模块,在这里!

$ pip install emoji

别以为我不知道你会偷偷下载...

from emoji import emojize
print(emojize(":thumbs_up:"))

from __future__ import

Python 流行的一个结果是新版本总是在开发中。新版本意味着新功能——除非版本已经过时

不过别担心。_future_module 允许用户通过函数导入新版本 Python 的功能。这就像是时间旅行,或是奇异魔法之类......

from __future__ import print_function
print("Hello World!")

为什么不导入花括号呢?

geopy

地理知识对于程序猿来说是非常大的挑战是,但是 geopy 模块让它变得更简单。

$ pip install geopy

它通过提取不同的地理编码服务 API 进行工作,以此能获取一个地方的完整街道地址,经度,纬度,甚至是海拔高度。

geopy 还提供一个非常有用的距离类。它支持用户喜欢的度量方式来计算两个地点之间的距离。

from geopy import GoogleV3
place = "221b Baker Street, London"
location = GoogleV3().geocode(place)
print(location.address)
print(location.location)

howdoi

受困于编程问题并且不记得之前看到过的解决方法?用户需要使用 StackOverflow ,但是不想离开终端?

那么需要使用这个非常使用的命令行工具 howdoi

$ pip install howdoi

无论你有什么问题,它都会帮你解答。

$ howdoi vertical align css
$ howdoi for loop in java
$ howdoi undo commits in git

但是请注意,它会从 StackOverflow 的最高票答案中抓取代码,这意味着它的回答并不总是最有用的。

$ howdoi exit vim

inspect

Python 的 inspects 模块对于理解背后的原理是非常有帮助的。用户甚至可以在 inspect 模块上调用其方法!

下述代码示例使用

inspect.getsource()

来打印它的源代码。同时它也使用

inspect.getmodule()

来打印定义它的模块。

最后一行代码打印出自身的行号。

import inspect
print(inspect.getsource(inspect.getsource))
print(inspect.getmodule(inspect.getmodule))
print(inspect.currentframe().f_lineno)

当然,除了这些琐碎的用途之外 , inspect 模块还支持理解用户代码正在做什么。用户还可以利用 Inspect 模块编写自文档化代码。

Jedi

Jedi 是一个自动完成以及代码分析库。它使得编写代码更加快速以及更高产。

除非用户正在自主开发 IDE,否则肯定会对使用 Jedi 作为编辑器插件非常感兴趣。幸运的是,已经开放下载。

用户可能已经在使用 Jedi。 IPython 项目基于 Jedi 实现了代码自动完成功能。

**kwargs

在学习任何编程语言时,一路上会遇到很多里程碑。在学习 Python 时,理解神秘的 **kwargs 是其中一块里程碑。

字典前面的双星号支持把字典的内容作为命名参数传递给函数。

字典的秘钥是参数名,值是传递给函数的值,用户甚至都不需要称它为 kwargs

dictionary = {"a": 1, "b": 2}
def someFunction(a, b):
   print(a + b)
   return
someFunction(**dictionary)
someFunction(a=1, b=2)

当用户编写处理事先未定义的命名参数的函数时,这个很有用。

列表解析

python编程中其中一个我喜欢的东西是它的列表解析

这些表达式可以很容易的写出非常简洁的代码,使其读起来就像自然语言一样

你可以了解更多关于如何使用它

numbers = [1,2,3,4,5,6,7]
evens = [x for x in numbers if x % 2 is 0]
odds = [y for y in numbers if y not in evens]
cities = ['London', 'Dublin', 'Oslo']
def visit(city):
   print("Welcome to "+city)
for city in cities:
   visit(city)

map

Python通过许多内置功能支持函数式编程,其中最有用的是 map()

特别是结合lambda函数使用时。

x = [1, 2, 3]
y = map(lambda x : x + 1 , x)
print(list(y))

在上面的例子中 map() 对X中的每个元素应用了简单的lambda函数

它返回一个map object类型,可以被转换成一些可迭代对象,例如列表或元组

newspaper3k

如果你之前没有见过newspaper3k的话,那么请准备好被这个Python的newspaper模块所震撼吧

newspaper模块允许你从一系列国际领先的出版物中检索新闻文章和相关的元数据。你可以检索图像,文本和作者姓名。

newspaper模块甚至有一些内置的NLP功能。

因此,如果你想在下一个项目中使用BeautifulSoup或其他DIY网页查询库,节省自己的时间和精力,并改为

$ pip install newspaper3k

Operator overloading

Python 支持操作符重载,这术语让你听上去像是计算机科学家。

事实上这是个非常普通的概念。是否曾经想过为什么 Python 支持使用 + 运算符来对数值进行相加以及连接字符串?这就是实际的操作符重载。

用户可以按照自己特定的方式来定义使用 Python 标准运算符符号对象,这使得用户可以在对象相关的上下文中使用它们。

class Thing:
   def __init__(self, value):
       self.__value = value
   def __gt__(self, other):
       return self.__value > other.__value
   def __lt__(self, other):
       return self.__value < other.__value
something = Thing(100)
othing = Thing(0)
something > nothing
something < nothing
something + nothing

pprint

Python 的默认函数 print 可以实现打印功能,但是如果打印的嵌套对象体量比较大,就会发现打印结果不太美观。

这时就需要用到标准库pretty-print 模块。它能用可读性强的方式打印出复杂结构的对象。

Python 开发者的必备技能之一是处理复杂的数据结构。

import requests
import pprint
url = '#/api/?results=1'
users = requests.get(url).json()
pprint.pprint(users)

Queue

Python 支持多线程,这可以通过标准库的 Queue 模块来实现。Queue 模块让用户可以实现队列数据结构,该数据结构允许用户通过特定的方法添加和检索数据。

“First in ,first out ”(或 FIFO) 队列数据结构允许用户依据对象添加的顺序检索对象,“Last in,first out”(LIFO)数据结构允许用户先连接到最近添加的对象。

最后,优先队列允许用户依据存储顺序检索对象。

这是 Python 中针对多线程编程使用queues 的一个实例。

_rep r_

在 Python中定义类或对象时,提供一种字符串表示对象的“官方”方法很实用。举个例子:

>>> file = open('file.txt', 'r')
>>> print(file)
<open file 'file.txt', mode 'r' at 0x10d30aaf0>

这让代码调试变得更加简单。如下图所示添加类的定义:

class someClass:
   def __repr__(self):
       return "<some description here>"
someInstance = someClass()
print(someInstance)

Sh

Python 是一种很棒的脚本语言。有时使用标准操作系统以及子进程库是很令人头疼的一个问题。

Sh 库提供了一种简介的替代方案。

它允许用户在调用程序时如同调用函数一般,这对自动化工作流和任务非常有用。所有的都来自 Python 内部。

from sh import *
sh.pwd()
sh.mkdir('new_folder')
sh.touch('new_file.txt')
sh.whoami()
sh.echo('This is great!')

类型提示

Python 是动态语言,在定义变量,函数,类别……时无需指定数据类型。

这个设定允许快速开发,但是由于简单的类型错误比运行错误更烦人。

从Python3.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)

尽管类型注释是非强制性的,但是这能让代码更具可读性。

Python3.5+ 还允许用户使用类型提示工具在运行前知晓类型错误,这在大型的复杂项目中是非常值得的。

uuid

生成通用唯一标识符的快速简便方法是Python 标准库中的 uuid 模块。

import uuid
user_id = uuid.uuid4()
print(user_id)

它随机生成 128位唯一数字。

事实上一共有2的122次方个可能生成的UUID。 这个数值超过了

5,000,000,000,000,000,000,000,000,000,000,000,000,000。

在给定集合中找到重复数字的概率非常低。 即使有一万亿个UUID,重复存在的可能性也远远低于十亿分之一。

仅用两行代码即可生成通用唯一标志符,非常棒!

虚拟环境

这是我最喜欢的 Python 部分。

用户可能需要同时处理多个 Python 项目。不幸的是,有时候两个项目依赖于相同依赖项的不同版本。那么用户应该下载哪个版本的依赖库呢?

幸运的是,Python 支持虚拟环境,让用户能够同时利用两种环境。命令行如下:

python -m venv my-project
source my-project/bin/activate
pip install all-the-modules

现在一台机器上可以支持两个版本的 Python 了。问题解决!

Wikipedia

Wikipedia 具备非常棒的 API ,允许用户以编程方式访问庞大的知识和信息。

Wikipedia 模块使得访问 Wikipedia API 非常地方便。

import wikipedia
result = wikipedia.page('freeCodeCamp')
print(result.summary)
for link in result.links:
   print(link)

和真实的 Wikipedia 类似,模块支持多种语言,页面消歧,随机页面检索,甚至还有donate()方法

Xkcd

Humour 是 Python的关键特征——毕竟它的名字来源于英国喜剧片《Monty Python 的飞行马戏团》,Python 的很多官方文档引用了该片的情节。

Python 的幽默感并不局限于官方文档 。运行下述命令行:

import antigravity

希望Python 不要改变它的幽默风格

YAML

YAML ’t Markup Language。它是一种数据格式语言,是JSON 的超集

与 JSON不同的是,它可以存储更复杂的对象并引用自己的元素。用户可以编写注释,使其适用于编写配置文件。

PyYAML模块让用户在 Python 中使用 YAML 。安装命令行如下:

$ pip install pyyaml

然后导入到用户的项目中:

import yaml

PyYAML允许您存储任何数据类型的Python对象,以及任何用户定义类的实例。

Zip

最后的一个 Python 技巧,它真的很棒。还在用两个列表来组成字典这样的方法吗?

keys = ['a', 'b', 'c']
vals = [1, 2, 3]
zipped = dict(zip(keys, vals))

Zip() 内置函数使用多个可迭代对象作为输入并返回元组列表。每个元组列表依据位置索引对输入对象的元素进行分组。

用户也可以使用 *zip() 来解压对象

感谢您的阅读,以上就是今天跟大家分享的Python编程技巧,你都掌握了的话,就能快速学好Python编程了,还不赶紧去练练?更多Python相关的内容尽在达内Python培训机构官网,敬请关注!

免责声明:内容和图片源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

预约申请免费试听课

填写下面表单即可预约申请免费试听! 怕学不会?助教全程陪读,随时解惑!担心就业?一地学习,可全国推荐就业!

上一篇:零基础怎么学Python?如何快速学习Python编程?
下一篇:Python难学吗?学Python需要参加Python培训班吗?

Python培训机构哪家好?如何选择靠谱的Python培训机构?

用这三个方法轻松入门Python编程!

零基础学Python,刚开始就搁浅了怎么拯救?

关于Python,这些大家都在关注...

  • 扫码领取资料

    回复关键字:视频资料

    免费领取 达内课程视频学习资料

Copyright © 2023 Tedu.cn All Rights Reserved 京ICP备08000853号-56 京公网安备 11010802029508号 达内时代科技集团有限公司 版权所有

选择城市和中心
黑龙江省

吉林省

河北省

湖南省

贵州省

云南省

广西省

海南省