Python中那些简单又好用的特性和用法
Python作为我的主力语言帮助我开发了许多DevOps运维自动化系统,这篇文章总结几个我在编写Python代码过程中用到的几个简单又好用的特性和用法,这些特性和用法可以帮助我们更高效地编写Python代码
1.链式比较
x = 5
y = 10
z = 15
if x < y < z:
print("x is less than y and y is less than z")
2.链式赋值
total_regions = region_total_instances = total_instances = 0
3.三元运算符
x = 10
result = "Greater than 10" if x > 10 else "Less than or equal to 10"
4.使用args和kwargs传递多个位置参数或关键字参数给函数
def example_function(*args, **kwargs):
for arg in args:
# 执行相关操作
for key, value in kwargs.items():
# 执行相关操作
5.使用enumerate函数同时获取索引和值
my_list = ['apple', 'banana', 'orange']
for index, value in enumerate(my_list):
print(f"Index: {index}, Value: {value}")
6.使用zip函数同时迭代多个可迭代对象
list1 = [1, 2, 3]
list2 = ['a', 'b', 'c']
for item1, item2 in zip(list1, list2):
print(f"Item from list1: {item1}, Item from list2: {item2}")
7.使用itertools模块进行迭代器和循环的高级操作
import itertools
for item in itertools.chain([1, 2, 3], ['a', 'b', 'c']):
print(item)
8.使用collections.Counter进行计数
from collections import Counter
my_list = ['apple', 'banana', 'apple', 'orange', 'banana', 'apple']
counter = Counter(my_list)
print(counter) # 输出为Counter({'apple': 3, 'banana': 2, 'orange': 1})
9.使用any和all函数对可迭代对象中的元素进行逻辑判断
my_list = [True, False, True, True]
print(any(my_list)) # 输出为True
print(all(my_list)) # 输出为False
10.使用sorted函数对可迭代对象进行排序
my_list = [3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5]
sorted_list = sorted(my_list)
print(sorted_list) # 输出为[1, 1, 2, 3, 3, 4, 5, 5, 5, 6, 9]
11.使用set进行集合操作
set1 = {1, 2, 3, 4, 5}
set2 = {3, 4, 5, 6, 7}
print(set1.union(set2)) # 输出为{1, 2, 3, 4, 5, 6, 7}
print(set1.intersection(set2)) # 输出为{3, 4, 5}
12.上下文管理器
class CustomContextManager:
def __enter__(self):
# 在代码块执行之前执行的操作
# 可以返回一个值,该值将被赋值给as子句中的变量
def __exit__(self, exc_type, exc_val, exc_tb):
# 在代码块执行之后执行的操作
# 可以处理异常,返回True表示异常被处理,False则会重新抛出异常
# 使用自定义上下文管理器
with CustomContextManager() as obj:
# 在这里执行一些操作
13.生成器表达式
# 使用生成器表达式计算1到10的平方和
squared_sum = sum(x**2 for x in range(1, 11))
print(squared_sum)
14.使用str.endswith()方法来检查字符串是否以元组中的任何一个字符串结尾
filename = "example.csv"
if filename.endswith((".csv", ".xls", ".xlsx")):
# 执行相关操作
同样的用法还有str.startswith()来检查字符串是否以元组中的任何一个字符串开头
15.else语句与for和while循环结合使用
for item in some_list:
if condition:
# 执行相关操作
break
else:
# 如果循环自然结束,执行相关操作
16.静态类型检查
# 使用mypy进行静态类型检查
def add_numbers(a: int, b: int) -> int:
return a + b
result = add_numbers(5, 10)
print(result)
先总结这么多,欢迎补充
Python中那些简单又好用的特性和用法的更多相关文章
- python中一个简单的webserver
python中一个简单的webserver 2013-02-24 15:37:49 分类: Python/Ruby 支持多线程的webserver 1 2 3 4 5 6 7 8 9 10 11 ...
- python中的filter、map、reduce、apply用法
1. filter 功能: filter的功能是过滤掉序列中不符合函数条件的元素,当序列中要删减的元素可以用某些函数描述时,就应该想起filter函数. 调用: filter(function,seq ...
- Python 中lambda 简单介绍
转自:https://www.cnblogs.com/AlwaysWIN/p/6202320.html 在学习python的过程中,lambda的语法经常出现,现在将它整理一下,以备日后查看. 1.l ...
- MD5在Python中的简单使用
MD5不是加密 https://draveness.me/whys-the-design-password-with-md5/ 参考为什么这么设计 Message-Digest Algorithm 5 ...
- 正则表达式在python中的简单使用
正则表达式独立与编程语言,基本上所有的编程语言都实现了正则表达式的相关操作.在Python中正则表达式的表现为re模块: import re 其操作有三个方法: my_string = "h ...
- python中 Lambda,Map,Filter,Itertools,Generator高级函数的用法
Lambda 函数 Lambda 函数是一种比较小的匿名函数--匿名是指它实际上没有函数名. Python 函数通常使用 def a_function_name() 样式来定义,但对于 lambda ...
- python中使用 C 类型的数组以及ctypes 的用法
Python 在 ctypes 中为我们提供了类似C语言的数据类型, 它的用途(我理解的)可能是: (1) 与 其他语言(如 C.Delphi 等)写的动态连接库DLL 进行交换数据,因为 pytho ...
- python中os.path.isdir()等函数的作用和用法
一 用法和概念: Python中的os模块用于和系统进行交互,其中: 1 os.listdir()用于返回一个由文件名和目录名组成的列表,需要注意的是它接收的参数需要是一个绝对的路径. 2 os.pa ...
- python 中进制转换及format(),int()函数用法
python中数值型变量好像只能是十进制形式表示,其他类型变量只能以字符串形式存在,可以通过format函数将int类型变量转换成其他进制字符串,如下所示: v_code=15 # 2进制 x=for ...
- Python中实现简单的插件框架
在系统设计中,经常我们希望设计一套插件机制,在不修改程序主体情况下,动态去加载附能. 我设想的插件系统: 1.通过类来实现 2.自动查找和导入 我们假设需要实现一个简单的插件系统,插件可以接收一个参数 ...
随机推荐
- CF676C 题解
使用尺取法(双指针法). 由于字符种类只有 \(2\) 种,答案一定是全 a 或全 b. 情况 \(1\):全 a 快指针循环移动,并统计字符 b 的数量 \(cntb\),直到 \(cntb\) 即 ...
- python快速入门【三】-----For 循环、While 循环
python入门合集: python快速入门[一]-----基础语法 python快速入门[二]----常见的数据结构 python快速入门[三]-----For 循环.While 循环 python ...
- Celery Worker log 中记录 task_id
import inspect import logging import threading from logging import Logger as Logger, LogRecord from ...
- 面试官:你能简单聊聊MyBatis执行流程
本文分享自华为云社区<面试必问|聊聊MyBatis执行流程?>,作者: 冰 河. MyBatis源码解析 大家应该都知道Mybatis源码也是对Jbdc的再一次封装,不管怎么进行包装,还是 ...
- 理论与实战:一篇看懂Python词云
理论与实战:一篇看懂Python词云 后宫王镇贴 前言:本文初编辑于2024年2月2日 该项目代码的仓库地址:https://github.com/A-Piece-Of-Maple/WordCloud ...
- 零基础入门学习Java课堂笔记 ——day04
Java数组 1.数组概述 定义:数组是相同类型的有序集合,同一组同一类型的数据可以按照先后次序排列组合在一起,其中一个数据可以称为元素,每个数组元素可以通过一个下表访问它们 2.数组声明创建 dat ...
- Linux使用wget命令下载网络资源
之前接触的Linux环境大多是内网,一般都是采用传统的FTP服务器统一存放常用资源,有人需要时从FTP直接下载,若公司FTP没有想要的资源,还需联系管理维护人员下载上传对应的介质. 而目前随着云ECS ...
- 域名解析迟迟不生效,刷新本地DNS的方法
ipconfig /flushdns 刷新后,再ping 发生域名解析 的指向就对了.!
- Linux中如何查找特定的数据是否在目录或文件中
一个很简单的方式就是使用grep命令,grep命令是一个强大有效可靠并且很流行的命令行工具,用于查找对应的数据包含文件或者目录中在Linux环境中. 为了便于学习,我们准备了以下文件,具体想要查找以实 ...
- JS模块化系统
随着 JavaScript 开发变得越来越广泛,命名空间和依赖关系变得越来越难以处理.人们已经开发出不同的解决方案以模块系统的形式来解决这个问题. CommonJS(CJS) CommonJS 是一种 ...