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.自动查找和导入 我们假设需要实现一个简单的插件系统,插件可以接收一个参数 ...
随机推荐
- fbx查看软件
对于3D的模型资源,比如fbx文件,除了使用专业的软件查看外,比如Unity3D,vs2015及更高版本,maya,3DMax等等,有没有更加轻量的软件可以查看fbx的内容呢? win10自带 win ...
- 【Java 进阶】详细探究 Spring 框架中的注解与反射
[进阶]Spring中的注解与反射 目录 [进阶]Spring中的注解与反射 前言 一.内置(常用)注解 1.1@Overrode 1.2@RequestMapping 1.3@RequestBody ...
- 知识蒸馏相关技术【模型蒸馏、数据蒸馏】以ERNIE-Tiny为例
1.任务简介 基于ERNIE预训练模型效果上达到业界领先,但是由于模型比较大,预测性能可能无法满足上线需求. 直接使用ERNIE-Tiny系列轻量模型fine-tune,效果可能不够理想.如果采用数据 ...
- 8.3 Windows驱动开发:内核遍历文件或目录
在笔者前一篇文章<内核文件读写系列函数>简单的介绍了内核中如何对文件进行基本的读写操作,本章我们将实现内核下遍历文件或目录这一功能,该功能的实现需要依赖于ZwQueryDirectoryF ...
- C# 实现对网站Get与Post请求
C# 是一种面向对象的编程语言,提供了强大的Web请求库和API来执行 HTTP GET 和 POST 请求.在C#中,我们可以使用 System.Net 命名空间下的 WebRequest 和 We ...
- 【链表】链表OJ-力扣2074. 反转偶数长度组的节点【超详细的算法解释】
说在前面 今天博主给大家带来的是力扣上的一道链表OJ,完成这道题后,博主感觉这题覆盖了很多链表的解题思想,另外,这道题对指针的控制也是比较高的.在这里博主将这道好题分享给大家! 另外,对于链表等数据结 ...
- opcache导致的RCE复现
前言 RCE得搭配着文件上传的点来进行利用 环境搭建 用docker搭个php7的环境,作者用的php7.0 docker run -itd --name php7 -p 8083:80 php:7. ...
- KB0003.申请和加载DoraCloud的软件许可
KB0003.申请和加载DoraCloud的软件许可 DoraCloud安装后,默认处于30天试用状态.如果您购买了软件授权,可以申请许可证. 在[系统][License管理][获取License文件 ...
- ElasticSearch7.3学习(三十四)----生产环境集群部署总结
1.集群部署 2.结点的三个角色 主结点:master节点主要用于集群的管理及索引 比如新增结点.分片分配.索引的新增和删除等. 数据结点:data 节点上保存了数据分片,它负责索引和搜索操作. 客户 ...
- .NET Core开发实战(第3课:.NET Core的现状、未来以及环境搭建)--学习笔记
03 | .NET Core的现状.未来以及环境搭建 .NET Core的现状 .NET Core 的应用场景:桌面端.Web端.云端.移动端.游戏.IOT 和 AI 云端指的是 .NET Core ...