python基础教程总结,学python总结
本文为大家带来了一些关于python的知识,包括24个非常实用的Python开发技巧,包括all或any、bashplotlib、collections等等。希望对你有帮助。
推荐:python教程
在学习Python的过程中,很多朋友可能会想,我学了这么多,哪些是常用的,实用的?如何提高工作效率?
今天我总结了24个有用的Python实用技巧,希望对朋友们有所帮助!欢欢迎收藏学习,喜欢赞支持,文末提供技术交流群。
在这里,我尝试以A-Z开头的格式分享其中的一些技巧,并简单介绍一下这些方法。如果对其中的一个或多个感兴趣,可以通过文末的参考文献查阅官方文档~
00-1010 Python语言如此受欢迎的众多原因之一是它非常具有可读性和表现力。
人们经常开玩笑说Python是可执行的伪代码。当你能写出这样的代码时,就很难去争论了。
x=[真,真,假]如果有的话(x):
如果全部(x):则打印(“至少一个正确”)
如果有(x)而不是所有(x) :则打印(“全是”)
Print(至少一对一错)
all or any
你有没有想过在控制台中绘制图形?Bashplotlib是一个Python库,可以帮助我们在命令行(粗糙环境)绘制数据。
#模块安装
pip安装bashplotlib
#绘制实例
将numpy作为np导入
从bashplotlib.histpgram导入plot_hist
arr=np.ramdom.normal(size=1000,loc=0,scale=1)
Plot _ hist (arr,bincount=50)
bashplotlib
Python有一些很棒的默认数据类型,但有时它们的行为并不完全符合你的预期。幸运的是,Python标准库提供了collections 模块* *[1]* *。这个方便的附件为您提供了更多的数据类型。
从集合导入订单直接,计数器
#记住加键的顺序!
x=OrderedDict(a=1,b=2,c=3)
#统计每个角色出现的频率
y=计数器( Hello World!)
collections
你有没有想过如何查看一个Python对象内部,看它有什么属性?在命令行中,输入:目录()
dir(Hello World )
Dir(dir)这是一个非常有用的特性,当以交互方式运行Python并动态地探索您正在使用的对象和模块时。点击此处阅读更多关于* *函数* * * [2] * *的信息。
00-1010emoji* *[3]* *是日本无线通信中使用的视觉情感符号。它指的是图片,而文字指的是人物,可以用来表示各种各样的表情,比如笑的笑脸,吃的蛋糕等等。在中国大陆,表情符号通常被称为“小黄脸”,或者简称为表情符号。
#安装模块
pip安装表情符号
#尝试一下
从表情符号导入表情符号
print(emoji ze( 3360 thumbs _ up 3360 ))
dir
Python的流行成果之一,总有新版本在开发中。新版本意味着新功能3354,除非你的版本过时。但是不用担心。使用这个**__future__模块****[4]**可以帮助您在未来版本的Python中导入函数。从字面上看,这就像时间旅行,魔术或其他东西。
从__future__导入print_function
print(Hello World!)
emoji
地理对于大多数程序员来说都是一个具有挑战性的领域。在曲取地理信息或者绘制地图时,也会遇到不少问题。这个**geopy 模块****[5]**让地理相关内容变得非常容易。
pip install geopy它通过抽象一系列不同地理编码服务的 API 来工作。通过它,你能够获得一个地方的完整街道地址、纬度、经度甚至海拔高度。
还有一个有用的距离类。它以你偏好的测量单位计算两个位置之间的距离。
from geopy import GoogleV3place = "221b Baker Street, London"
location = GoogleV3().geocode(place)
print(location.address)
print(location.location)
howdoi
当你使用terminal终端编程时,通过在遇到问题后会在StackOverflow上搜索答案,完后会回到终端继续编程,此时有时会不记得你之前查到的解决方案,此时需要重新查看StackOverflow,但又不想离开终端,那么此时你需要用到这个有用的命令行工具howdoi****[6]。
pip install howdoi无论你有什么问题,都可以问它,它会尽力回复。
howdoi vertical align css但请注意——它会从 StackOverflow 的最佳答案中抓取代码。它可能并不总是提供最有用的信息…howdoi for loop in java
howdoi undo commits in git
howdoi exit vim
inspect
Python 的**inspect模块****[7]**非常适合了解幕后发生的事情。你甚至可以调用它自己的方法! 下面的代码示例inspect.getsource()
用于打印自己的源代码。 inspect.getmodule()
还用于打印定义它的模块。
最后一行代码打印出它自己的行号。
import inspect当然,除了这些微不足道的用途,inspect 模块可以证明对理解你的代码在做什么很有用。你还可以使用它来编写自文档化代码。print(inspect.getsource(inspect.getsource))
print(inspect.getmodule(inspect.getmodule))
print(inspect.currentframe().f_lineno)
Jedi
Jedi 库是一个自动完成和代码分析库。它使编写代码更快、更高效。除非你正在开发自己的 IDE,否则你可能对使用Jedi **[8]**作为编辑器插件比较感兴趣。幸运的是,这已经有可用的负载!
**kwargs
在学习任何语言时,都会有许多里程碑。使用 Python 并理解神秘的**kwargs
语法可能算作一个重要的里程碑。字典对象前面的双星号****kwargs****[9]**允许你将该字典的内容作为命名参数传递给函数。
字典的键是参数名称,值是传递给函数的值。你甚至不需要调用它kwargs
!
dictionary = {"a": 1, "b": 2}def someFunction(a, b):当你想编写可以处理未预先定义的命名参数的函数时,这很有用。print(a + b)
return# 这些做同样的事情:someFunction(**dictionary)someFunction(a=1, b=2)
列表(list)推导式
关于 Python 编程,我最喜欢的事情之一是它的列表推导式****[10]。这些表达式可以很容易地编写非常顺畅的代码,几乎与自然语言一样。
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 函数****[11]**结合使用时。
x = [1, 2, 3]在上面的示例中,y = map(lambda x : x + 1, x)
# 打印出 [2,3,4]
print(list(y))
map()
将一个简单的 lambda
函数应用于x
. 它返回一个映射对象,该对象可以转换为一些可迭代对象,例如列表或元组。
newspaper3k
如果你还没有看过它,那么准备好被Python newspaper module[12]模块震撼到。它使你可以从一系列领先的国际出版物中检索新闻文章和相关的元数据。你可以检索图像、文本和作者姓名。它甚至有一些内置的 NLP 功能**[13]**。 因此,如果你正在考虑在下一个项目中使用 BeautifulSoup
或其他一些 DIY 网页抓取库,使用本模块可以为你自己节省不少时间和精力。
pip install newspaper3k
Operator overloading
Python 提供对**运算符重载的****[14]**支持,这是让你听起来像一个合法的计算机科学家的术语之一。 这实际上是一个简单的概念。有没有想过为什么 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)
nothing = Thing(0)
# True
something > nothing
# False
something < nothing
# Error
something + nothing
pprint
Python 的默认print
函数完成了它的工作。但是如果尝试使用print
函数打印出任何大的嵌套对象,其结果相当难看。这个标准库的漂亮打印模块**pprint****[15]**可以以易于阅读的格式打印出复杂的结构化对象。这算是任何使用非平凡数据结构的 Python 开发人员的必备品。
import requestsimport pprint
url = 'https://randomuser.me/api/?results=1'
users = requests.get(url).json()
pprint.pprint(users)
Queue
Python 标准库的 Queue 模块实现支持多线程。这个模块让你实现队列数据结构。这些是允许你根据特定规则添加和检索条目的数据结构。“先进先出”(FIFO)队列让你可以按添加顺序检索对象。“后进先出”(LIFO) 队列让你可以首先访问最近添加的对象。
最后,优先队列让你可以根据对象的排序顺序检索对象。
这是一个如何在 Python 中使用队列**Queue****[16]**进行多线程编程的示例。
__repr__
在 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()
# 打印 <some description here>
print(someInstance)
sh
Python 是一种很棒的脚本语言。有时使用标准的 os 和 subprocess 库可能有点头疼。该**SH库****[17]**让你可以像调用普通函数一样调用任何程序——对于自动化工作流和任务非常有用。
import shsh.pwd()
sh.mkdir('new_folder')
sh.touch('new_file.txt')
sh.whoami()
sh.echo('This is great!')
Type hints
Python 是一种动态类型语言。定义变量、函数、类等时不需要指定数据类型。这允许快速的开发时间。但是,没有什么比由简单的输入问题引起的运行时错误更烦人的了。从 Python 3.5**[18]** 开始,你可以选择在定义函数时提供类型提示。
def addTwo(x : Int) -> Int:你还可以定义类型别名。return x +
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
通过Python 标准库的 uuid 模块**[19]**生成通用唯一 ID(或“UUID”)的一种快速简便的方法。
import uuid这将创建一个随机的 128 位数字,该数字几乎肯定是唯一的。事实上,可以生成超过 2¹²² 种可能的 UUID。这超过了五个十进制 (或 5,000,000,000,000,000,000,000,000,000,000,000,000)。user_id = uuid.uuid4()
print(user_id)
在给定的集合中发现重复的概率极低。即使有一万亿个 UUID,重复存在的可能性也远低于十亿分之一。
Virtual environments
你可能同时在多个 Python 项目上工作。不幸的是,有时两个项目将依赖于相同依赖项的不同版本。你在你的系统上安装了什么?幸运的是,Python支持对 虚拟环境**[20]** 的让你可以两全其美。从命令行:
python -m venv my-project现在,你可以在同一台机器上运行 Python 的独立版本和安装。source my-project/bin/activate
pip install all-the-modules
wikipedia
维基百科有一个很棒的 API,它允许用户以编程方式访问无与伦比的完全免费的知识和信息。在**wikipedia模块****[21]**使访问该API非常方便。
import wikipedia和真实站点一样,该模块提供了多语言支持、页面消歧、随机页面检索,甚至还有一个result = wikipedia.page('freeCodeCamp')
print(result.summary)
for link in result.links:
print(link)
donate()
方法。
xkcd
幽默是 Python 语言的一个关键特征,它是以英国喜剧小品剧**Python飞行马戏团****[22]**命名的。Python 的许多官方文档都引用了该节目最著名的草图。不过,Python 的幽默并不仅限于文档。试试运行下面的行:
import antigravity
YAML
YAML**[23]**指的是 “ 非标记语言” 。它是一种数据格式化语言,是 JSON 的超集。与 JSON 不同,它可以存储更复杂的对象并引用它自己的元素。你还可以编写注释,使其特别适合编写配置文件。该**PyYAML模块****[24]**可让你使用YAML使用Python。
安装并然后导入到你的项目中:
pip install pyyamlimport yamlPyYAML 允许你存储任何数据类型的 Python 对象,以及任何用户定义类的实例。
zip
压轴出场的也是很棒的一个模块。你曾经遇到过需要从两个列表中形成字典吗?
keys = ['a', 'b', 'c']该vals = [1, 2, 3]
zipped = dict(zip(keys, vals))
zip()
内置函数需要一系列可迭代的对象,并返回一个元组列表中。每个元组按位置索引对输入对象的元素进行分组。 你还可以通过调用对象来“解压缩”对象*zip()
。
Python 是一种非常多样化且发展良好的语言,因此肯定会有许多我没有考虑的功能。如果你想了解更多的python模块,可以参考awesome-python****[25]。
推荐学习:python学习教程以上就是归纳整理!Python实用技巧总结的详细内容,更多请关注盛行IT软件开发工作室其它相关文章!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。