Python你绝对不知道的15个小技巧,知道的算我输

news2024/11/18 5:49:43

名字:阿玥的小东东

学习:Python语言、正在学习c++语言

主页:阿玥的小东东

目录

前言 

1.all or any

2.bashplotlib

3.collections

4.dir

5.from __future__ import

6.python的优点

7.geopy

8.python2.x中的编码不是 unicode ,而在 Python3.x 中取消了字符串字面量的前缀 u,

9、比较运算符的简便方法

10.在一个类中定义多个构造函数

11.反转字符串

12.合并

13.使用 Map 进行列表理解

14.下划线作为分隔符

15.Python的缺点

交流心得(聊聊天)

写在最后


前言 

Python 是世界上最流行、热门的编程语言之一,原因很多,比如:

  • 易于学习
  • 超高的通用性
  • 具备大量模块和库

1.all or any

Python 非常受欢迎的原因之一是其可读性和表达性。

人们还经常把 Python 笑称为「可执行伪码(executable pseudocode)」。但是,当你可以编写这样的代码时,很难去反驳这种言论:

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")

2.bashplotlib

想在控制台中绘图吗?如果想就来看看这个,如果不想那就划走拜拜~(各位老爷,阿玥闹着玩呢,别当真啊~)

$ pip install bashplotlib
#哎嘿嘿,如果喜欢的话一定要点个赞哦,感谢支持,阿玥后续可能会出c++的东西啦,不过咱们还是主学Python这门语言哈

使用上面的行,即可在控制台中绘图。

3.collections

Python 有一些很棒的默认数据类型,但有时候它们可能不会尽如你意。

不过,Python 标准库提供了 collections 模块。这个方便的附加组件可以为你提供更多数据类型。

collections 

from collections import OrderedDict, Counter
# Remembers the order the keys are added!
x = OrderedDict(a=1, b=2, c=3)
# Counts the frequency of each character
y = Counter("三联支持阿玥")

4.dir

你是否想过如何查看 Python 对象内部及其具有哪些属性?

输入以下命令行:

>>> dir()
>>> dir("我的名字叫做郎玥")
>>> dir(dir)

当以交互方式运行 Python 时,这可能是一个非常有用的功能,并且可以动态地探索你正在使用的对象和模块。

5.from __future__ import

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

不过,别担心。__ future__模块允许用户导入新版 Python 的功能。这简直就像时间旅行,或者魔法什么的。

from __future__ import print_function
print("阿玥的小东东")

6.python的优点

1) 语法简单

和传统的 C/C++,Java等语言相比,Python 对代码格式的要求没有那么严格,这种宽松使得用户在编写代码时比较舒服,不用在细枝末节上花费太多精力。我来举两个典型的例子:

  • Python 不要求在每个语句的最后写上分号,当然写也没错;
  • 定义变量时不需要指明类型,甚至可以给同一个变量赋值不同类型的数据。


上述两点也是等常见脚本语言都具备的特性。

Python 是一种代表极简主义的编程语言,阅读一段排版优美的 Python 代码,就像在阅读一个英文段落,非常贴近人类语言,所以人们常说,Python 是一种具有伪代码特点的编程语言。

伪代码(Pseudo Code)是一种算法描述语言,它介于自然语言和编程语言之间。编写伪代码的目的是为了使被描述的算法可以更容易地以任何一种编程语言实现,比如 C、C++、Java 等。因此,伪代码必须结构清晰、代码简单、可读性好,并且类似于自然语言。如果你学过数据结构,阅读过严蔚敏的书籍,那你一定知道什么是伪代码。

为什么说简单就是杀手锏?一旦简单了,一件事情就会变得很纯粹;我们在开发 Python 程序时,可以专注于解决问题本身,而不用顾虑语法的细枝末节。在简单的环境中做一件纯粹的事情,那简直是一种享受。

2) Python 是开源的

开源,也即开放源代码,意思是所有用户都可以看到源代码。

Python 的开源体现在两方面:

① 程序员使用 Python 编写的代码是开源的。

比如我们开发了一个 BBS 系统(即网络论坛),放在互联网上让用户下载,那么用户下载到的就是该系统的所有源代码,并且可以随意修改。这也是解释型语言本身的特性,想要运行程序就必须有源代码。

② Python 解释器和模块是开源的。

官方将 Python 解释器和模块的代码开源,是希望所有 Python 用户都参与进来,一起改进 Python 的性能,弥补 Python 的漏洞,代码被研究的越多也就越健壮。

这个世界上总有那么一小撮人,他们或者不慕名利,或者为了达到某种目的,会不断地加强和改善 Python。千万不要认为所有人都是只图眼前利益的,总有一些精英会放长线钓大鱼,总有一些极客会做一些炫酷的事情。

3) Python 是免费的

开源并不等于免费,开源软件和免费软件是两个概念,只不过大多数的开源软件也是免费软件;Python 就是这样一种语言,它既开源又免费。

用户使用 Python 进行开发或者发布自己的程序,不需要支付任何费用,也不用担心版权问题,即使作为商业用途,Python 也是免费的。

4) Python 是高级语言

这里所说的高级,是指 Python 封装较深,屏蔽了很多底层细节,比如 Python 会自动管理内存(需要时自动分配,不需要时自动释放)。

高级语言的优点是使用方便,不用顾虑细枝末节;缺点是容易让人浅尝辄止,知其然不知其所以然。

5) Python 是解释型语言,能跨平台

5) Python 是面向对象的编程语言

面向对象(Object Oriented)是大多数“现代”语言(即第三代编程语言)都具备的特性,否则在开发中大型程序时会捉襟见肘。

Python 虽然支持面向对象,但它并不强制你使用这种特性。Java 是典型的面向对象的编程语言,它强制必须以类和对象的形式来组织代码。除 Python 和 Java 外,C++、C#、PHP、RuBy、Perl 等,也都支持面向对象的特性。

除了面向对象的编程语言外,还有一种面向过程的编程语言,其中最典型的代表就是 C 语言。

6) Python 功能强大(模块众多)

Python 的模块众多,基本实现了所有的常见的功能,从简单的字符串处理,到复杂的 3D 图形绘制,借助 Python 模块都可以轻松完成。

Python 社区发展良好,除了 Python 官方提供的核心模块,很多第三方机构也会参与到模块的开发中,这其中就有 Google(谷歌)、Facebook(脸书)、Microsoft(微软) 等软件巨头。

在 Python 中,即使是一些小众的功能,它往往也有对应的开源模块,甚至有可能不止一个。

7) Python 可扩展性强

Python 的可扩展性体现在它的模块,Python 具有脚本语言中最丰富、强大的库或模块,这些库或模块覆盖了文件操作、图形界面编程、网络编程、数据库访问等绝大部分应用场景。

值得注意的是,这些类库的底层代码不一定都是 Python,还有很多 C/C++ 的身影。

比如当需要一段关键代码运行速度更快时,就可以使用 C/C++ 语言实现,然后在 Python 中调用它们。Python 能把其它语言“粘”在一起,所以被称为“胶水语言”。

Python 依靠其良好的扩展性,在一定程度上弥补了运行效率慢的缺点。

也可以参考我的一篇文章:点击即可 

7.geopy

地理(Geography)对于程序员来说可能是一个具有挑战性的领域。但是 geopy 模块让它变得异常简单。

pip install geopy

它通过抽取一系列不同地理编码服务的 API 来工作,使用户获取一个地方的完整街道地址、纬度、经度,甚至海拔高度。

另外一个有用的功能是距离:它可以用你喜欢的度量单位计算出两个位置之间的距离。

from geopy import GoogleV3
place = "221b Baker Street, London"
location = GoogleV3().geocode(place)
print(location.address)
print(location.location)
#*我不好
#*你好

8.python2.x中的编码不是 unicode ,而在 Python3.x 中取消了字符串字面量的前缀 u,

if sys.version < '3':
        exec("chinese = unicode('中国', 'utf-8')")
else:
        exec("chinese = '中国'")
  • Python2.6 中引入了 unicode_literals,可以很方便地写 2.x/3.x 兼容的代码:
  • 
    #哎嘿嘿,阿玥很强的好不好
    from __future__ import unicode_literals 

    9、比较运算符的简便方法

为一个类实现所有比较运算符可能会很烦人,因为有很多的比较运算符——__lt__、__le__、__gt__ 或__ge__。但是,如果有更简单的方法呢?functools.total_ordering 可救场:

#制作不易,求三连
from functools import total_ordering
 
@total_ordering
class Number:
 def __init__(self, value):
  self.value = value
 
 def __lt__(self, other):
  return self.value < other.value
 
 def __eq__(self, other):
  return self.value == other.value
 
print(Number(20) > Number(3))
print(Number(1) < Number(5))
print(Number(15) >= Number(15))
print(Number(10) <= Number(2))

10.在一个类中定义多个构造函数

函数重载是编程语言(不含 Python)中非常常见的功能。即使你不能重载正常的函数,你仍然可以使用类方法重载构造函数:

import datetime
 
class Date:
    def __init__(self, year, month, day):
        self.year = year
        self.month = month
        self.day = day
 #你好吗
    @classmethod
    def today(cls):
        t = datetime.datetime.now()
        return cls(t.year, t.month, t.day)
 #你好
d = Date.today()
print(f"{d.day}/{d.month}/{d.year}")

你可能倾向于将替代构造函数的所有逻辑放入__init__,并使用*args 、**kwargs 和一堆 if 语句,而不是使用类方法来解决。那可能行得通,但是却变得难以阅读和维护。

因此,我建议将很少的逻辑放入__init__,并在单独的方法/构造函数中执行所有操作。这样,对于类的维护者和用户而言,得到的都是干净的代码。

11.反转字符串

在这个程序中,我们使用扩展切片来反转字符串,扩展切片使用[begin:end:step]语法。所以当我们跳过开始、结束和步骤时,我们传递 (-1) 作为值。这将反转给定的字符串。

string = "medium"
 
reverse_string = string[::-1]
 
print(f"The reversed string is {reverse_string}")

12.合并

我们来看这样一行代码:

a="阿玥的"
b="小东东"
c=a+b
print(c)

这样输出的结果就是“阿玥的小东东”啦,快去试试去

13.使用 Map 进行列表理解

在这个程序中,我们尝试将元素添加到列表中。为此,我们将 lambda 函数与 map 和 list comprehension 结合使用。该程序的输出将是 [12, 15, 18]。

num1=[1,2,3]
 
num2= [4,5,6]
 
num3=[7,8,9]
 
result= map(lambda x,y,z:x+y+z,num1,num2,num3)
 
print(list(result))

14.下划线作为分隔符

在程序中使用大数字时,使用下划线代替逗号作为分隔符可以提高可读性。Python 语法不承认下划线。它用下划线表示,以首选格式表示数字并且可读。

x = 10_000_000_000
 
print(f" It is Ten Billion: {x}")

15.Python的缺点

除了上面提到的各种优点,Python 也是有缺点的。

1) 运行速度慢

运行速度慢是解释型语言的通病,Python 也不例外。

Python 速度慢不仅仅是因为一边运行一边“翻译”源代码,还因为 Python 是高级语言,屏蔽了很多底层细节。这个代价也是很大的,Python 要多做很多工作,有些工作是很消耗资源的,比如管理内存。

Python 的运行速度几乎是最慢的,不但远远慢于 C/C++,还慢于 Java。

但是速度慢的缺点往往也不会带来什么大问题。首先是计算机的硬件速度运来越快,多花钱就可以堆出高性能的硬件,硬件性能的提升可以弥补软件性能的不足。

其次是有些应用场景可以容忍速度慢,比如网站,用户打开一个网页的大部分时间是在等待网络请求,而不是等待服务器执行网页程序。服务器花 1ms 执行程序,和花 20ms 执行程序,对用户来说是毫无感觉的,因为网络连接时间往往需要 500ms 甚至 2000ms。

2) 代码加密困难

不像编译型语言那样,源代码会被编译成可执行程序(这个编译过程就相当于对源码加密),对于 Python 来说是直接运行源代码,因此对源码加密是比较困难的。
 

交流心得(聊聊天)

在做的各位有没有考虑过程序猿退休之后的生活?找个对象,陪你终生到老?不退休,一直坚持自己的热爱?还是?

我是觉得,如果自己不做程序猿,或者退休之后,放下事业,放下工作,找另一半,利用剩下的时间,好好陪爸妈,爸爸妈妈真的不容易,一把屎一把尿的把我们养大,我们难道不应该去报答嘛?

时间还长,陪陪爸妈吧!

写在最后

还有300来天又要过年啦,哈哈哈哈哈哈哈哈哈,我真开心呢

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/195300.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

转行自学Java没后悔,我的经历证明,改变永远没有错

我在北京工作6年&#xff0c;现在年薪42万&#xff08;仅代表个人收益&#xff09;&#xff0c;目前在搜狐畅游工作&#xff0c;参与过轩辕剑的项目研发&#xff0c;有几个大型项目实战的经历&#xff0c;不过最后这几款项目都失败了。我之所以选择当初学习Java&#xff0c;就一…

我靠CSGO搬砖项目,一个月净赚过万

作为一名四线小城市的平凡上班族&#xff0c;今年已经满30岁了&#xff0c;工资到手也才6000多&#xff0c;已经不记得有多少年没涨过了。 后来通过CSGO搬运项目&#xff0c;每月副业收益稳定在5万的收益。 废话不多说&#xff0c;先给大家瞅瞅我上个月带货的收益&#xff0c…

为什么要上机械设备ERP系统?对企业管理有什么帮助?

机械设备制造行业是国民经济增长的重要支撑&#xff0c;随着信息化的发展&#xff0c;机械设备制造企业面临各种各样的挑战&#xff0c;频繁地出现部门监管力度不够、生产计划难定、产品质量不过关、生产过程操作不规范以及原材料使用不当等&#xff0c;造成资源浪费的现象&…

规则引擎设计与实现

规则引擎设计与实现 「字节跳动第五届青训营」笔记 是什么 规则引擎是一种嵌入在应用程序中的组件&#xff0c;实现了将业务决策从应用程序代码中分离出来&#xff0c;并 使用预定义的语义模块编写业务决策。接受数据输入&#xff0c;解释业务规则&#xff0c;并根据业务规则…

用最简单的方法实现个人网站-wordpress结合LAMP架构实战

文章目录前言一、LAMP架构是什么&#xff1f;1.1 LAMP架构简介1.2 什么是apache?1.3 什么是MySQL&#xff1f;1.4 什么是php&#xff1f;二. wordpress是什么三. 搭建博客过程1. 实验环境2. 搭建LAMP架构3. 设置数据库并授权4. 上传wordpress并解压5. 修改配置文件6. 网页端进…

基于C#制作一个网址检测工具

此文主要基于C#制作一个网址检测工具。随着时间推移以及公司人员的变动&#xff0c;手头所负责的项目也越来越多&#xff0c;对网站运行状况的管理也是一件让人十分头疼的事&#xff0c;秉持着偷懒是第一生产力的原则&#xff0c;制作一个工具对网址一键监测。 实现流程1、创建…

支付测试怎么做?要点有哪些?

目录 支付测试 避不开的 公司有没有支付牌照的问题&#xff1f; 国内有支付牌照的公司&#xff08;搞一张支付牌照 &#xff0c;不是钱多少的事&#xff09;总共 200 多家而已​编辑 没有支付牌照 公司就不可以支付么&#xff1f; 没有支付牌照 的公司的支付 做的什么支付&…

文档存储Elasticsearch系列--1 ES介绍

前言&#xff1a;Elasticsearch 也是使用 Java 编写的&#xff0c;它的内部使用 Lucene 做索引与搜索&#xff0c;支持结构化文档数据的分布式存储&#xff0c;并提供准实时的查询&#xff0c;全文检索&#xff0c;数据聚合&#xff1b; 1 为什么要使用ES: ES 本身存在哪些特性…

第二章---进程的描述与控制

&#x1f31e;欢迎来到操作系统的世界 &#x1f308;博客主页&#xff1a;卿云阁 &#x1f48c;欢迎关注&#x1f389;点赞&#x1f44d;收藏⭐️留言&#x1f4dd; &#x1f31f;本文由卿云阁原创&#xff01; &#x1f64f;作者水平很有限&#xff0c;如果发现错误&#xff…

打印机之——G3800故障维修

一 故障现象 5B00/1471/1472打印机进空气二 解决办法 2.1 5B00/1471/1472 解决办法——不需要软件清零,按键解决 步骤1 插上电源&#xff0c;打印机处于未开机状态&#xff0c;挡板处放入打印纸同时按住“停止”键和“电源”键&#xff0c;此时“电源”键亮起松开“停止”键…

python-opencv第六期:addWeighted函数详解

概要&#xff1a; 众嗦粥汁所周知&#xff0c;在如今计算机视觉&#xff08;Computer Version short for CV&#xff09;是人工智能与机器人技术发展的一个重大研究方向&#xff0c;而opencv作为一个专门为机器视觉编程提供技术与函数支持的第三方库&#xff0c;自然是一个需要…

Devops简介

Devops DevOps是一组过程、方法与系统的统称&#xff0c;用于促进开发、技术运营和**质量保障&#xff08;QA&#xff09;**部门之间的沟通、协作与整合。 其目的就是让开发人员和运维人员更好的沟通合作的文化、运动或惯例&#xff0c;通过自动化交付流程来使软件开发&#x…

牛客网C基础题目练习1

目录题目1&#xff1a;竞选社长题目2&#xff1a;最高分数题目3&#xff1a;判断是元音还是辅音题目4&#xff1a;判断是不是字母题目5&#xff1a;字母大小写转换题目1&#xff1a;竞选社长&#x1f4ad;法1&#xff1a;使用字符串数组代码实现&#xff1a;int main() {char a…

【按位考虑DP】代码源每日一题div1 2023.02.02 与

与 - 题目 - Daimayuan Online Judge这太酷了&#xff0c;很符合我对DP的想象这DP太妙了&#xff0c;我还没做过这种按位考虑DP的题题意&#xff1a;思路&#xff1a;首先看第二个条件&#xff0c;一个数与后面的那个数与了之后还是后面那个数&#xff0c;这说明什么我们按位考…

快速入门KMM和Compose Multiplatform

一、前言 最近才有空&#xff0c;想起来Compose-jb和kmm这2个框架&#xff0c;就来个快速入门指南吧。 什么是KMM (Kotlin Multiplatform Mobile) KMM用于简化跨平台开发&#xff0c;可以在Android和IOS之间共享通用的代码。 仅在使用各自平台能力的时候&#xff0c;才会去编…

解决前端组件渲染没更新数据问题

问题&#xff1a; 使用前端日期控件时 - 数据联动时数据绑定无效问题 现象&#xff1a; 选择A日期&#xff0c;想动态改变B日期数据&#xff0c;只有第一次选择时会动态改变B日期数据&#xff0c;第二次选择A日期时&#xff0c;B日期数据虽已改变&#xff0c;但是页面数据未改变…

电子邮件备份软件:Email Backup Wizard Crack

适用于所有用户的电子邮件备份软件 在您的计算机、台式机或硬盘驱动器上本地创建您的电子邮件帐户的备份。 下载并保存电子邮件以备后用。 如果您想备份和移动服务器电子邮件&#xff0c;请尽快获取备份工具。 通过简单直观的功能获得强大的结果 苹果系统邮箱备份向导 - 批量下…

C++ · 类和对象 · 03 | 深化理解

啊我摔倒了..有没有人扶我起来学习.... &#x1f471;个人主页&#xff1a;《CGod的个人主页》\color{Darkorange}{《CGod的个人主页》}《CGod的个人主页》交个朋友叭~ &#x1f492;个人社区&#xff1a;《编程成神技术交流社区》\color{Darkorange}{《编程成神技术交流社区》…

Python tkinter -- 第18章 画布控件之椭圆

**18.2.18 create_oval(bbox, options) 根据限定矩形 bbox 在画布上创建一个椭圆。 &#xff08;1&#xff09;bbox&#xff1a;定义要创建对象的边界(x1, y1, x2, y2) &#xff08;2&#xff09;options:创建椭圆的选项。选项的具体含义&#xff1a; 选项含义activedash当鼠标…

微信小程序+前端+天行数据垃圾图像识别接口API

文章目录 前言 步骤 1. 去到天行数据官网注册账号&#xff0c;去到接口的介绍网站 2. 去测试网站&#xff0c;先看看请求的格式 3. 小程序端我采用的是把网站上的url链接的网络图片转成base64编码后的形式作为传入参数&#xff0c;这里需要有点基础&#xff0c;因为只给上了…