0

0

Python:有趣的代码模式

王林

王林

发布时间:2024-09-08 08:27:01

|

887人浏览过

|

来源于dev.to

转载

python:有趣的代码模式

我主要使用 python 工作,几乎每天都会检查代码。在我们的代码库中,格式化和 linting 由 ci 作业使用 black 和 mypy 处理。所以,我们只关注改变。

在团队中工作时,您已经知道某个团队成员会编写什么样的代码。当新人加入团队时,代码审查会变得有趣。我说有趣,是因为每个人都有一些他们不自觉地使用的编码风格;无论好坏!就像我有一些,

  1. 设置optionaltype的值。 通常这些变量是签名的一部分
# i used (long back) to do

def func(a: int, b: optional[list] = none, c: optional[dict] = none):

    if b is none:
       b = []
    if c is none:
       c = {}

# instead i do

def func(a: int, b: optional[list] = none, c: optional[dict] = none):

    b = b or []
    c = c or {}
  1. 使用 dict 处理简单的 if..elif..else (最多 3-4 个)语句

这是一个简单的用例,您可以根据某个值返回字符串或调用函数

注意:从 3.10 开始你应该使用 match 而不是这个。

而不是做,

def get_number_of_wheels(vehicle: str):
    if vehicle == "car":
        wheels = 2
    elif vehicle == "bus":
        wheels = 6
    elif vehicle == "bicycle":
        wheels = 2
    else:
        raise ...

# i prefer doing, 

def get_number_of_wheels(vehicle: str):
    return {
       "car": 2,
       "bus": 6,
       "bicycle": 2
    }[vehicle]       # raise is now keyerror

上面是几个例子,审阅我的代码的人将会有更多的例子。

立即学习Python免费学习笔记(深入)”;

最近,一位新开发人员加入了我的团队,我注意到了一种我喜欢的模式,但我要求将其更改为简单的 if..else 情况。我会先向您展示模式,然后给出我要求更改的理由。

代码是一个装饰器,它对参数进行一些操作。让我们编写一个简单的(无用的)装饰器,它将打印调用函数/方法的参数和 kwargs 的数量。

抖云猫AI论文助手
抖云猫AI论文助手

一款AI论文写作工具,最快 2 分钟,生成 3.5 万字论文。论文可插入表格、代码、公式、图表,依托自研学术抖云猫大模型,生成论文具备严谨的学术专业性。

下载
def counter(is_cls_method: bool = false):
    """ print number of args & kwargs for func/method """
    def outer(f):
        def inner(*args, **kwargs):
            args_cnt = len(args)
            kwargs_cnt = len(kwargs)
            print(f"{f.__name__} called with {args_cnt=} & {kwargs_cnt=}")
            return f(*args, **kwargs)
        return inner
    return outer

@counter()
def test1(a, b, c):
    pass

class a:
    @counter(is_cls_method=true)
    def test1(self, a, b, c):
        pass


print("function")
test1(1, 2, c=3)
test1(a=1, b=2, c=3)

print("method")
a = a()
a.test1(1, 2, 3)
a.test1(1, b=2, c=3)

运行此代码时,您应该看到

function
test1 called with args_cnt=2 & kwargs_cnt=1
test1 called with args_cnt=0 & kwargs_cnt=3

method
test1 called with args_cnt=4 & kwargs_cnt=0
test1 called with args_cnt=2 & kwargs_cnt=2

它工作正常,但对于方法来说,它也在计算自我。所以让我们解决这个问题!

def counter(is_cls_method: bool = false):
    def outer(f):
        def inner(*args, **kwargs):
            args_cnt = len(args)

            if is_cls_method:   # check added
               args_cnt -= 1    # reduced count by 1

            kwargs_cnt = len(kwargs)
            print(f"{f.__name__} called with {args_cnt=} & {kwargs_cnt=}")
            return f(*args, **kwargs)
        return inner
    return outer

这是一个简单的 if 子句,但新开发人员做了其他一些有趣的布尔值使用。

我只显示更改后的代码...

   args_cnt = len(args[is_cls_method:])

解决方案比使用 if 好得多,因为 python 中的 bool 只是 int。原始代码有点长,注意到这个小变化并不明显,基本 python 用户使用的代码库也是如此。而且,如果您必须猜测一条线在做什么,我认为您应该进行更改以使其显而易见。

你对此有何看法,你使用布尔值作为索引吗?
你还有类似的python模式吗?

相关专题

更多
python开发工具
python开发工具

php中文网为大家提供各种python开发工具,好的开发工具,可帮助开发者攻克编程学习中的基础障碍,理解每一行源代码在程序执行时在计算机中的过程。php中文网还为大家带来python相关课程以及相关文章等内容,供大家免费下载使用。

715

2023.06.15

python打包成可执行文件
python打包成可执行文件

本专题为大家带来python打包成可执行文件相关的文章,大家可以免费的下载体验。

626

2023.07.20

python能做什么
python能做什么

python能做的有:可用于开发基于控制台的应用程序、多媒体部分开发、用于开发基于Web的应用程序、使用python处理数据、系统编程等等。本专题为大家提供python相关的各种文章、以及下载和课程。

739

2023.07.25

format在python中的用法
format在python中的用法

Python中的format是一种字符串格式化方法,用于将变量或值插入到字符串中的占位符位置。通过format方法,我们可以动态地构建字符串,使其包含不同值。php中文网给大家带来了相关的教程以及文章,欢迎大家前来阅读学习。

617

2023.07.31

python教程
python教程

Python已成为一门网红语言,即使是在非编程开发者当中,也掀起了一股学习的热潮。本专题为大家带来python教程的相关文章,大家可以免费体验学习。

1235

2023.08.03

python环境变量的配置
python环境变量的配置

Python是一种流行的编程语言,被广泛用于软件开发、数据分析和科学计算等领域。在安装Python之后,我们需要配置环境变量,以便在任何位置都能够访问Python的可执行文件。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

547

2023.08.04

python eval
python eval

eval函数是Python中一个非常强大的函数,它可以将字符串作为Python代码进行执行,实现动态编程的效果。然而,由于其潜在的安全风险和性能问题,需要谨慎使用。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

575

2023.08.04

scratch和python区别
scratch和python区别

scratch和python的区别:1、scratch是一种专为初学者设计的图形化编程语言,python是一种文本编程语言;2、scratch使用的是基于积木的编程语法,python采用更加传统的文本编程语法等等。本专题为大家提供scratch和python相关的文章、下载、课程内容,供大家免费下载体验。

699

2023.08.11

php源码安装教程大全
php源码安装教程大全

本专题整合了php源码安装教程,阅读专题下面的文章了解更多详细内容。

7

2025.12.31

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
最新Python教程 从入门到精通
最新Python教程 从入门到精通

共4课时 | 0.6万人学习

Django 教程
Django 教程

共28课时 | 2.6万人学习

SciPy 教程
SciPy 教程

共10课时 | 1.0万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号