关于python:揭秘那些你可能不知道的-Python-小技巧

40次阅读

共计 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 键能够显示提醒,而且你还能够应用高低键查找后面用过的命令。

最初

我的分享到这里就完结,心愿可能给你带来一些帮忙~

感觉能够,就点个赞,感激你的反对~

正文完
 0