이 기사는 python에 대한 관련 지식을 제공합니다. 주로 all or any, bashplotlib, 컬렉션 등을 포함하여 매우 실용적인 24가지 Python 개발 기술을 요약합니다. 모든 사람에게 도움이 되기를 바랍니다.
추천 학습: python tutorial
Python을 학습하는 과정에서 많은 친구들은 '내가 너무 많이 배웠는데 어떤 것이 일반적으로 사용되고 실용적인가?'라고 생각할 수도 있습니다. 업무 효율성을 높이는 방법은 무엇입니까?
오늘은 아주 유용한 파이썬 실기 24가지를 정리해 보았는데, 친구들에게 도움이 되었으면 좋겠습니다! Happy글 끝에 기술 교류 그룹이 제공됩니다.
여기에서는 이러한 기술 중 일부를 A - Z로 시작하는 형식으로 공유하려고 하며, 그 중 하나 이상에 관심이 있는 경우 공식 문서를 참조 자료를 통해 확인할 수 있습니다. 기사 끝~
Python 언어가 인기 있는 많은 이유 중 하나는 읽기 쉽고 표현력이 뛰어나기 때문입니다.
사람들은 종종 Python이 실행 가능한 의사 코드
라고 농담합니다. 이와 같은 코드를 작성할 수 있으면 이에 대해 논쟁하기가 어렵습니다. 可执行的伪代码
。当你可以像这样写代码时,就很难反驳。
x = [True, True, False]if any(x): print("至少有一个True")if all(x): print("全是True")if any(x) and not all(x): print("至少一个True和一个False")
你有没有想过在控制台中绘制图形吗?
Bashplotlib 是一个 Python 库,他能够帮助我们在命令行(粗旷的环境)中绘制数据。
# 模块安装 pip install bashplotlib # 绘制实例 import numpy as np from bashplotlib.histpgram import plot_hist arr = np.ramdom.normal(size=1000, loc=0, scale=1) plot_hist(arr, bincount=50)
Python 有一些很棒的默认数据类型,但有时它们的行为并不完全符合你的期望。
幸运的是,Python 标准库提供了 collections 模块**[1]**。这个方便的附加组件为你提供了更多的数据类型。
from collections import OrderedDict, Counter # 记住键的添加顺序! x = OrderedDict(a=1, b=2, c=3) # 统计每个字符出现的频率 y = Counter("Hello World!")
有没有想过如何查看 Python 对象内部并查看它具有哪些属性?在命令行中输入:
dir() dir("Hello World") dir(dir)
当以交互方式运行 Python 以及动态探索你正在使用的对象和模块时,这可能是一个非常有用的功能。在这里阅读更多**functions****[2]**相关内容。
emoji**[3]** 是日本在无线通信中所使用的视觉情感符号,绘指图画,文字指的则是字符,可用来代表多种表情,如笑脸表示笑、蛋糕表示食物等。在中国大陆,emoji通常叫做“小黄脸”,或者直称emoji。
# 安装模块 pip install emoji # 做个尝试 from emoji import emojize print(emojize(":thumbs_up:"))
Python 流行的结果之一,总是有新版本正在开发中。新版本意味着新功能 —— 除非你的版本已过时。
不过不要担心。使用该**__future__模块****[4]**可以帮助你用Python的未来版本导入功能。从字面上看,这就像时间旅行、魔法或其他东西。
from __future__ import print_function print("Hello World!")
地理,对大多数程序员来说是一个具有挑战性的领域。在获取地理信息或者绘制地图时,也会遇到不少问题。这个**geopy 模块****[5]**让地理相关内容变得非常容易。
pip install geopy
它通过抽象一系列不同地理编码服务的 API 来工作。通过它,你能够获得一个地方的完整街道地址、纬度、经度甚至海拔高度。
还有一个有用的距离类。它以你偏好的测量单位计算两个位置之间的距离。
from geopy import GoogleV3 place = "221b Baker Street, London" location = GoogleV3().geocode(place) print(location.address) print(location.location)
当你使用terminal终端编程时,通过在遇到问题后会在StackOverflow上搜索答案,完后会回到终端继续编程,此时有时会不记得你之前查到的解决方案,此时需要重新查看StackOverflow,但又不想离开终端,那么此时你需要用到这个有用的命令行工具howdoi****[6]。
pip install howdoi
无论你有什么问题,都可以问它,它会尽力回复。
howdoi vertical align css howdoi for loop in java howdoi undo commits in git
但请注意——它会从 StackOverflow 的最佳答案中抓取代码。它可能并不总是提供最有用的信息…
howdoi exit vim
Python 的**inspect模块****[7]**非常适合了解幕后发生的事情。你甚至可以调用它自己的方法!
下面的代码示例inspect.getsource()
用于打印自己的源代码。 inspect.getmodule()
import inspect print(inspect.getsource(inspect.getsource)) print(inspect.getmodule(inspect.getmodule)) print(inspect.currentframe().f_lineno)
bashplotlib
콘솔에서 그래픽을 그리는 것에 대해 생각해 본 적이 있나요?dictionary = {"a": 1, "b": 2}def someFunction(a, b): print(a + b) return# 这些做同样的事情:someFunction(**dictionary)someFunction(a=1, b=2)
다행히 Python 표준 라이브러리는 컬렉션 모듈
**[1]**을 제공합니다. 이 편리한 추가 기능은 더 많은 데이터 유형을 제공합니다. 🎜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)🎜🎜dir🎜🎜🎜Python 객체 내부를 살펴보고 어떤 속성이 있는지 확인하는 방법이 궁금하신가요? 명령줄에 다음을 입력하세요. 🎜
x = [1, 2, 3] y = map(lambda x : x + 1, x) # 打印出 [2,3,4] print(list(y))🎜 이는 Python을 대화형으로 실행하고 작업 중인 개체와 모듈을 동적으로 탐색할 때 매우 유용한 기능이 될 수 있습니다. 여기에서 **기능****[2]**에 대해 자세히 알아보세요. 🎜🎜🎜emoji🎜🎜🎜🎜emoji🎜**[3]**는 일본에서 무선 통신에 사용되는 시각적 감정 기호입니다. 그림은 그림을 의미하고, 텍스트는 문자를 의미하며 다양한 표현을 나타내는 데 사용될 수 있습니다. , 웃는 얼굴은 웃음을 의미하고, 케이크는 음식을 의미하는 등 중국 본토에서는 이모티콘을 일반적으로 "작은 노란색 얼굴" 또는 간단히 이모티콘이라고 합니다. 🎜
pip install newspaper3k🎜🎜from __future__ import🎜🎜🎜Python의 인기 있는 결과 중 하나는 항상 새 버전이 개발되고 있다는 것입니다. 새 버전은 새로운 기능을 의미합니다. 귀하의 버전이 최신 버전이 아닌 한. 🎜🎜하지만 걱정하지 마세요. __future__ 모듈 ****[4]**을 사용하면 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🎜🎜geogy🎜🎜🎜지리학은 대부분의 프로그래머에게 어려운 분야입니다. 지리정보를 얻거나 지도를 그릴 때에도 많은 문제에 직면하게 됩니다. **geopy 모듈****[5]**을 사용하면 지리 관련 콘텐츠를 매우 쉽게 만들 수 있습니다. 🎜
import requests import pprint url = 'https://randomuser.me/api/?results=1' users = requests.get(url).json() pprint.pprint(users)🎜다양한 지오코딩 서비스의 API를 추상화하여 작동합니다. 이를 통해 특정 장소의 완전한 거리 주소, 위도, 경도는 물론 고도까지도 얻을 수 있습니다. 🎜🎜유용한 원격수업도 있어요. 선호하는 측정 단위로 두 위치 사이의 거리를 계산합니다. 🎜
>>> file = open('file.txt', 'r') >>> print(file) <open file 'file.txt', mode 'r' at 0x10d30aaf0>🎜🎜howdoi🎜🎜🎜 터미널 프로그래밍을 하다 보면 문제가 발생한 후 StackOverflow에서 답변을 검색한 후 터미널로 돌아와서 프로그래밍을 계속하게 되는데 이때 찾은 솔루션이 기억나지 않을 때가 있습니다. 해결 방법, StackOverflow를 다시 확인해야 하지만 터미널을 떠나고 싶지 않다면 이 유용한 명령줄 도구🎜howdoi****[6]🎜를 사용해야 합니다. 🎜
class someClass: def __repr__(self): return "<some description here>" someInstance = someClass() # 打印 <some description here> print(someInstance)🎜어떤 질문이 있어도 질문하시면 최선을 다해 답변해 드리겠습니다. 🎜
import sh sh.pwd() sh.mkdir('new_folder') sh.touch('new_file.txt') sh.whoami() sh.echo('This is great!')🎜하지만 주의하세요. StackOverflow의 상위 답변에서 코드를 스크랩합니다. 항상 가장 유용한 정보를 제공하는 것은 아닙니다...🎜
def addTwo(x : Int) -> Int: return x +🎜🎜inspect🎜🎜🎜Python의 **inspect 모듈****[7]**은 뒤에서 무슨 일이 일어나고 있는지 이해하는 데 좋습니다. 자체 메서드를 호출할 수도 있습니다! 🎜🎜다음 코드 예제
inspect.getsource()
는 자신의 소스 코드를 인쇄하는 데 사용됩니다. inspect.getmodule()
은 자신이 정의된 모듈을 인쇄하는 데에도 사용됩니다. 🎜🎜코드의 마지막 줄은 자체 줄 번호를 인쇄합니다. 🎜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)🎜물론 이러한 사소한 용도 외에도 검사 모듈은 코드가 수행하는 작업을 이해하는 데 유용할 수 있습니다. 또한 이를 사용하여 자체 문서화 코드를 작성할 수도 있습니다. 🎜🎜🎜Jedi🎜🎜🎜Jedi 라이브러리는 자동 완성 및 코드 분석 라이브러리입니다. 코드를 더 빠르고 효율적으로 작성할 수 있습니다. 🎜🎜자신만의 IDE를 개발하는 것이 아니라면 🎜Jedi🎜 **[8]**을 편집기 플러그인으로 사용하는 데 관심이 있을 수 있습니다. 다행히도 이미 사용할 수 있는 항목이 많이 있습니다! 🎜
在学习任何语言时,都会有许多里程碑。使用 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)
当你想编写可以处理未预先定义的命名参数的函数时,这很有用。
关于 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)
Python 通过许多内置功能支持函数式编程。最有用的map()
功能之一是函数——尤其是与**lambda 函数****[11]**结合使用时。
x = [1, 2, 3] y = map(lambda x : x + 1, x) # 打印出 [2,3,4] print(list(y))
在上面的示例中,map()
将一个简单的 lambda
函数应用于x
. 它返回一个映射对象,该对象可以转换为一些可迭代对象,例如列表或元组。
如果你还没有看过它,那么准备好被Python newspaper module [12]模块震撼到。它使你可以从一系列领先的国际出版物中检索新闻文章和相关的元数据。你可以检索图像、文本和作者姓名。它甚至有一些内置的 NLP 功能**[13]**。
因此,如果你正在考虑在下一个项目中使用 BeautifulSoup
或其他一些 DIY 网页抓取库,使用本模块可以为你自己节省不少时间和精力。
pip install newspaper3k
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
Python 的默认print
函数完成了它的工作。但是如果尝试使用print
函数打印出任何大的嵌套对象,其结果相当难看。这个标准库的漂亮打印模块**pprint****[15]**可以以易于阅读的格式打印出复杂的结构化对象。
这算是任何使用非平凡数据结构的 Python 开发人员的必备品。
import requests import pprint url = 'https://randomuser.me/api/?results=1' users = requests.get(url).json() pprint.pprint(users)
Python 标准库的 Queue 模块实现支持多线程。这个模块让你实现队列数据结构。这些是允许你根据特定规则添加和检索条目的数据结构。
“先进先出”(FIFO)队列让你可以按添加顺序检索对象。“后进先出”(LIFO) 队列让你可以首先访问最近添加的对象。
最后,优先队列让你可以根据对象的排序顺序检索对象。
这是一个如何在 Python 中使用队列**Queue****[16]**进行多线程编程的示例。
在 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)
Python 是一种很棒的脚本语言。有时使用标准的 os 和 subprocess 库可能有点头疼。
该**SH库****[17]**让你可以像调用普通函数一样调用任何程序——对于自动化工作流和任务非常有用。
import sh sh.pwd() sh.mkdir('new_folder') sh.touch('new_file.txt') sh.whoami() sh.echo('This is great!')
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。如果你正在处理大型、复杂的项目,这是很有用的!
通过Python 标准库的 uuid 模块**[19]**生成通用唯一 ID(或“UUID”)的一种快速简便的方法。
import uuid user_id = uuid.uuid4() print(user_id)
这将创建一个随机的 128 位数字,该数字几乎肯定是唯一的。事实上,可以生成超过 2¹²² 种可能的 UUID。这超过了五个十进制 (或 5,000,000,000,000,000,000,000,000,000,000,000,000)。
在给定的集合中发现重复的概率极低。即使有一万亿个 UUID,重复存在的可能性也远低于十亿分之一。
你可能同时在多个 Python 项目上工作。不幸的是,有时两个项目将依赖于相同依赖项的不同版本。你在你的系统上安装了什么?
幸运的是,Python支持对 虚拟环境**[20]** 的让你可以两全其美。从命令行:
python -m venv my-project source my-project/bin/activate pip install all-the-modules
现在,你可以在同一台机器上运行 Python 的独立版本和安装。
维基百科有一个很棒的 API,它允许用户以编程方式访问无与伦比的完全免费的知识和信息。在**wikipedia模块****[21]**使访问该API非常方便。
import wikipedia result = wikipedia.page('freeCodeCamp') print(result.summary) for link in result.links: print(link)
和真实站点一样,该模块提供了多语言支持、页面消歧、随机页面检索,甚至还有一个donate()
方法。
幽默是 Python 语言的一个关键特征,它是以英国喜剧小品剧**Python飞行马戏团****[22]**命名的。Python 的许多官方文档都引用了该节目最著名的草图。不过,Python 的幽默并不仅限于文档。试试运行下面的行:
import antigravity
YAML**[23]**指的是 “ 非标记语言” 。它是一种数据格式化语言,是 JSON 的超集。
与 JSON 不同,它可以存储更复杂的对象并引用它自己的元素。你还可以编写注释,使其特别适合编写配置文件。该**PyYAML模块****[24]**可让你使用YAML使用Python。
安装并然后导入到你的项目中:
pip install pyyamlimport yaml
PyYAML 允许你存储任何数据类型的 Python 对象,以及任何用户定义类的实例。
压轴出场的也是很棒的一个模块。你曾经遇到过需要从两个列表中形成字典吗?
keys = ['a', 'b', 'c'] vals = [1, 2, 3] zipped = dict(zip(keys, vals))
该zip()
内置函数需要一系列可迭代的对象,并返回一个元组列表中。每个元组按位置索引对输入对象的元素进行分组。
你还可以通过调用对象来“解压缩”对象*zip()
。
Python 是一种非常多样化且发展良好的语言,因此肯定会有许多我没有考虑的功能。如果你想了解更多的python模块,可以参考awesome-python****[25]。
推荐学习:python学习教程
위 내용은 요약하고 정리하세요! Python 실무 기술 요약의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!