让你的Python代码更加Pythonic

2023-12-12 13:38
文章标签 python 代码 pythonic 更加

本文主要是介绍让你的Python代码更加Pythonic,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

刚开始学习Python的时候,我们就了解了python的编码风格要求,通过python终端方式输入 import this 可以看到它的具体描述。

这就是著名的“python之禅”,简言之,就是要写符合pythonic的代码,简洁、优雅、可读性强。

下面选取了一些常见的Python规范和代码风格,大家可以进行参考和学习。

命名

首先看一下变量的命名规范(pep8)规范:

文件夹 :包名,建议仅使用小写字母命名,不建议使用下划线。

模块: 小写或者小写加下划线连接,比如 module.py 、 db_convert.py 等。

类: 驼峰式,首字母大写,单词直接连接。

class ThisIsAClass(object):pass

函数 :小写,用下划线隔开

def this_is_a_func():pass

变量: 小写,用下划线隔开

this_is_a_variable = 1

**常量:**常量名所有字母大写,由下划线连接各个单词,如THIS_IS_A_CONSTANT = 1

语法风格

1.交换a 和 b的数值

其他语言的方法:

a = 5
b = 6
temp = a
a = b
b = temp

python中,更加简洁的方法:

a = 5
b = 6
a, b = b, a
print(a, b)
输出:6 5

2.多个变量赋值

python中可以一行代码,同时给多个变量赋值

a,b,c = 2,5,12

3.合并字符串

传统的字符串合并方法,由于字符串对象不可改变,每次修改会产生一个新的对象,这种方法会消耗很多内存。

list_str = ["hello ", "python", "!"]
result = ""
for i in list_str:result+=i
print(result)

python中,使用join()方法更加高效,注意join()方法只适用于元素是字符串的列表、元组、集合等类型。

list_str = ["hello ", "python", "!"]
result = "".join(list_str)
print(result)输出:hello python!

4.列表去重

使用集合的唯一性,对列表进行去重

a = [1, 2, 3, 1, 2,3 , 1, 3, 2, 4, 1, 3, 4, 5, 6, 5, 4, 4, 3, 6]
lst = list(set(a))
print(lst)
输出:

5.if/else 三目运算

python支持的三目运算格式:

为真时的结果 if 判断条件 else 为假时的结果(注意,没有冒号)
a=4
st = "a大于4" if a>4 else "a小于等于4"
print(st)
输出:a小于等于4

6.enumerate

enumerate()是 Python 的内置函数。可以将一个可迭代的(Iterable)对象(列表、字符串等)组成一个索引序列,可以同时获得索引和值。

获取列表元素及索引

# 一般写法
names = ['Bob', 'Alice', 'Guido']
n = len(names)
for i in range(n):print(f'{i} {names[i]}')# 使用enumerate()函数
names = ['Bob', 'Alice', 'Guido']
for index, value in enumerate(names):print(f'{index}: {value}')
输出:
0: Bob
1: Alice
2: Guido

7.解包

解包在英文里叫做 Unpacking,就是将容器里面的元素逐个取出来。

解压列表/元组的元素,赋值给不同的变量

a, b, c = [1,2,3]
print(a, b, c)
输出:1 2 3

函数中的解包操作

在函数调用中,* 能够将元组或列表解包成不同的参数。

def func(a, b, c, d):print(a, b, c, d)args = [1, 2, 3, 4]
func(*args)
输出:1 2 3 4

在函数调用中,** 会以键/值的形式解包一个字典,使其成为一个独立的关键字参数。

def func(a, b, c, d):print(a, b, c, d)kwargs = {"a": 1, "b": 2, "c": 3, "d": 4}
func(**kwargs)
输出:1 2 3 4

8.列表推导式

列表推导式可以利用 range 区间、元组、列表、字典和集合等数据类型,快速生成一个满足指定需求的列表。

[表达式 for 迭代变量 in 可迭代对象 [if 条件表达式] ]

[if 条件表达式] 可以省略。

生成一个列表,列表元素分别为 [1x1,2x2,3x3……nxn],假设n = 10

# 一般方法
lst = []
for i in range(1, 11):lst.append(i*i)
print(lst)
输出:[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
# 列表推导式
lst = [i*i for i in range(1,11)]
print(lst)
输出:[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]

要求返回的序列中不存在偶数项

lst = [i*i for i in range(1, 11) if i % 2 != 0]
print(lst)
输出:[1, 9, 25, 49, 81]

9.使用关键字in

  • in:如果在指定的序列中找到值返回 True,否则返回 False。

  • not in:如果在指定的序列中没有找到值返回 True,否则返回 False。

判断元素是否在列表中

number=[1,2,3,4,5]
if 1 in number:print("1 in number")
if 0 not in number:print("0 not in number")

在 for 循环中,获取列表、元组、字典的每一项:

list = [2, 3, 4]
for num in list:print (num)dic = {"name": "xiaoming", "age": 18}
for k, v in dic.items():print(k, v)

10.使用zip同步处理多个列表

zip() 函数是 Python 内置函数,它可以将多个序列(列表、元组、字典、集合、字符串等)中对应位置的元素重新组合,生成一个个新的元组。

z = zip([1,2,3],[3,4,5])
print(list(z))
输出:[(1, 3), (2, 4), (3, 5)]

11.真值判断

当判断一个变量是否为 True 的时候,Python 具有自身独特的方式,不需要写出判断条件,只需要在 if 或 while 关键字后面直接写上该对象即可。

常见的真值为False的情况:

  • 常量:None and False.

  • 数值0值: 0, 0.0, 0j

  • 序列或者集合为空:'', (), [], {}, set(), range(0)

# 对于布尔对象,建议这样写
x = True
if x:pass
# 不建议这样写
if x == True:passlst = []
# 对于列表对象,建议这样写
if lst:pass
# 不建议这样写
if len(lst) != 0:pass

 

 

这篇关于让你的Python代码更加Pythonic的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!


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

相关文章

使用Python删除Excel中的行列和单元格示例详解

《使用Python删除Excel中的行列和单元格示例详解》在处理Excel数据时,删除不需要的行、列或单元格是一项常见且必要的操作,本文将使用Python脚本实现对Excel表格的高效自动化处理,感兴... 目录开发环境准备使用 python 删除 Excphpel 表格中的行删除特定行删除空白行删除含指定

Python通用唯一标识符模块uuid使用案例详解

《Python通用唯一标识符模块uuid使用案例详解》Pythonuuid模块用于生成128位全局唯一标识符,支持UUID1-5版本,适用于分布式系统、数据库主键等场景,需注意隐私、碰撞概率及存储优... 目录简介核心功能1. UUID版本2. UUID属性3. 命名空间使用场景1. 生成唯一标识符2. 数

Python办公自动化实战之打造智能邮件发送工具

《Python办公自动化实战之打造智能邮件发送工具》在数字化办公场景中,邮件自动化是提升工作效率的关键技能,本文将演示如何使用Python的smtplib和email库构建一个支持图文混排,多附件,多... 目录前言一、基础配置:搭建邮件发送框架1.1 邮箱服务准备1.2 核心库导入1.3 基础发送函数二、

Python包管理工具pip的升级指南

《Python包管理工具pip的升级指南》本文全面探讨Python包管理工具pip的升级策略,从基础升级方法到高级技巧,涵盖不同操作系统环境下的最佳实践,我们将深入分析pip的工作原理,介绍多种升级方... 目录1. 背景介绍1.1 目的和范围1.2 预期读者1.3 文档结构概述1.4 术语表1.4.1 核

基于Python实现一个图片拆分工具

《基于Python实现一个图片拆分工具》这篇文章主要为大家详细介绍了如何基于Python实现一个图片拆分工具,可以根据需要的行数和列数进行拆分,感兴趣的小伙伴可以跟随小编一起学习一下... 简单介绍先自己选择输入的图片,默认是输出到项目文件夹中,可以自己选择其他的文件夹,选择需要拆分的行数和列数,可以通过

Python中反转字符串的常见方法小结

《Python中反转字符串的常见方法小结》在Python中,字符串对象没有内置的反转方法,然而,在实际开发中,我们经常会遇到需要反转字符串的场景,比如处理回文字符串、文本加密等,因此,掌握如何在Pyt... 目录python中反转字符串的方法技术背景实现步骤1. 使用切片2. 使用 reversed() 函

Python中将嵌套列表扁平化的多种实现方法

《Python中将嵌套列表扁平化的多种实现方法》在Python编程中,我们常常会遇到需要将嵌套列表(即列表中包含列表)转换为一个一维的扁平列表的需求,本文将给大家介绍了多种实现这一目标的方法,需要的朋... 目录python中将嵌套列表扁平化的方法技术背景实现步骤1. 使用嵌套列表推导式2. 使用itert

使用Docker构建Python Flask程序的详细教程

《使用Docker构建PythonFlask程序的详细教程》在当今的软件开发领域,容器化技术正变得越来越流行,而Docker无疑是其中的佼佼者,本文我们就来聊聊如何使用Docker构建一个简单的Py... 目录引言一、准备工作二、创建 Flask 应用程序三、创建 dockerfile四、构建 Docker

Python使用vllm处理多模态数据的预处理技巧

《Python使用vllm处理多模态数据的预处理技巧》本文深入探讨了在Python环境下使用vLLM处理多模态数据的预处理技巧,我们将从基础概念出发,详细讲解文本、图像、音频等多模态数据的预处理方法,... 目录1. 背景介绍1.1 目的和范围1.2 预期读者1.3 文档结构概述1.4 术语表1.4.1 核

Python使用pip工具实现包自动更新的多种方法

《Python使用pip工具实现包自动更新的多种方法》本文深入探讨了使用Python的pip工具实现包自动更新的各种方法和技术,我们将从基础概念开始,逐步介绍手动更新方法、自动化脚本编写、结合CI/C... 目录1. 背景介绍1.1 目的和范围1.2 预期读者1.3 文档结构概述1.4 术语表1.4.1 核