共计 1788 个字符,预计需要花费 5 分钟才能阅读完成。
大家好,我是迟业~
明天,咱们来看一看日常工作中常常应用的一些 Python 小技巧。
01. 汇合
开发人员经常遗记 Python 也有汇合数据类型,大家都喜爱应用列表解决所有。汇合(set)是什么?简略来说就是:汇合是一组无序事物的会集,不蕴含反复元素。如果你熟练掌握汇合及其逻辑,那么很多问题都能够迎刃而解。举个例子,如何获取一个单词中呈现的字母?
myword = "NanananaBatman"
就这么简略,问题解决了,这个例子就来自 Python 的官网文档,大可不必过于诧异。再举一个例子,如何获取一个列表的各个元素,且不反复?
# first you can easily change set to list and other way around
咱们能够看到,“c”元素不再反复呈现了。只有一个中央你须要留神,mylist 与 mynewlist 之间的元素程序可能会有所不同:
mylist = ["c", "c", "a","b"]
能够看出,两个列表的元素程序不同。
上面,咱们来进一步深刻。
假如某些实体之间有一对多的关系,举个更加具体的例子:用户与权限。通常,一个用户能够领有多个权限。当初假如某人想要批改多个权限,即同时增加和删除某些权限,该当如何解决这个问题?
# this is the set of permissions before change;
总的来说,不要胆怯应用汇合,它们能帮忙你解决很多问题,更多详情,请参考 Python 官网文档。
02. 日历
当开发与日期和工夫无关的性能时,有些信息可能十分重要,比方某一年的这个月有多少天。这个问题看似简略,然而我置信日期和工夫是一个十分有难度的话题,而且我感觉日历的实现问题十分多,几乎就是噩梦,因为你须要思考大量的极其状况。
那么,到底如何能力找出某个月有多少天呢?
import calendar
某个月的第一天当然非常简单,就是 1 号。然而,“某个月的第一天是周 X”,如何应用这条信息呢?你能够很容易地查到某一天是周几:
calendar.monthrange(2024, 2)
兴许这段代码不适宜间接用于生产,因为你能够应用 datetime 更容易地查找星期:
from datetime import datetime
总的来说,日历模块有很多有意思的中央,值得缓缓学习:
# checking if year is leap:
03. 枚举有第二个参数
是的,枚举有第二个参数,可能很多有教训的开发人员都不晓得。上面咱们来看一个例子:
mylist = ['a', 'b', 'd', 'c', 'g', 'e']
第二个参数能够指定枚举开始的中央,比方上述代码中的 enumerate(mylist,16)。如果你须要解决偏移量,则能够思考这个参数。
04.if-else 逻辑
你常常须要依据不同的条件,解决不同的逻辑,经验不足的开发人员可能会编写出相似上面的代码:OPEN = 1
尽管这段代码看上去也没有那么糟,然而如果有 20 多个条件呢?
那么,到底应该怎么解决呢?
from enum import IntEnum
在 Python 中这种模式很常见,它能够让代码看起来更加整洁,尤其是当办法十分宏大,而且须要解决大量条件时。
05.enum 模块
enum 模块提供了一系列解决枚举的工具函数,最有意思的是 Enum 和 IntEnum。咱们来看个例子:
from enum import Enum, IntEnum, Flag, IntFlag
应用 IntEnum 编写的代码也差不多,然而有几个不同之处:
MyEnum.FIRST == "first" # False
在中等规模的代码库中,enum 模块在治理常量方面能够提供很大的帮忙。enum 的本地化可能有点辣手,但也能够实现,我用 django 疾速演示一下:
from enum import Enum
06.iPython`
iPython 就是交互式 Python,它是一个交互式的命令行 shell,有点像 Python 解释器。
首先,你须要装置 iPython:
pip install ipython
接下来,你只须要在输出命令的时候,将 Python 换成 ipython:
# you should see something like this after you start:
ipython 反对很多系统命令,比方 ls 或 cat,tab 键能够显示提醒,而且你还能够应用高低键查找后面用过的命令。
最初
我的分享到这里就完结,心愿可能给你带来一些帮忙~
感觉能够,就点个赞,感激你的反对~