Python语法糖大全

本文汇集了一些常用的Python语法糖,供大家查询使用。

1. 集合与序列操作

  • 列表推导式:创建列表。
    [x**2 for x in range(10)]
    
  • 字典推导式:创建字典。
    {x: x**2 for x in range(10)}
    
  • 集合推导式:创建集合。
    {x**2 for x in range(10)}
    
  • 条件列表推导:在列表推导中使用条件表达式。
    [x for x in range(10) if x % 2 == 0]
    
  • 条件字典推导:在字典推导中使用条件表达式。
    {x: x**2 for x in range(10) if x % 2 != 0}
    
  • 生成器表达式:创建迭代器。
    (x**2 for x in range(10))
    
  • 字符串字面量:单引号或双引号表示的字符串。
    s = "This is a string in double quotes."
    
  • 原始字符串:使用 r 前缀表示,忽略转义字符。
    raw_str = r"New line is represented as \n"
    
  • 多行字符串:使用三个引号表示。
    multi_line_str = """This is a multi-linestring with two lines."""
    

2. 赋值与解包

  • 多重赋值:一次性赋值多个变量。
    a, b = 1, 2
    
  • 扩展的可迭代解包:函数调用中解包可迭代对象。
    *a, b = [1, 2, 3, 4]
    
  • 解包赋值:从序列中解包值赋给多个变量。
    a, *b, c = [0, 1, 2, 3, 4]
    

3. 函数与Lambda

  • 装饰器:修改函数或方法的行为。
    @my_decorator
    def say_hello():print("Hello!")
    
  • lambda 函数:创建匿名函数。
    add = lambda x, y: x + y
    
  • 关键字参数:使用 **kwargs 接受任意数量的关键字参数。
    def print_kwargs(**kwargs):for key, value in kwargs.items():print(f"{key}: {value}")
    

4. 控制流

  • 条件表达式:一行 if-else 逻辑。
    max_value = a if a > b else b
    
  • 异常处理:使用 try…except 语句处理错误。
    try:x = int(input("Please enter a number: "))
    except ValueError:print("That's not a valid number!")
    
  • 断言:调试目的的检查。
    assert x == y, "x does not equal y"
    

5. 上下文管理

  • with 语句:资源管理。
    with open('file.txt') as f:content = f.read()
    

6. 类和对象

  • 属性装饰器:创建管理对象属性的方法。
    class MyClass:@propertydef value(self):return self._value@value.setterdef value(self, new_value):self._value = new_value
    
  • 命名元组:创建带有命名字段的元组子类。
    from collections import namedtuple
    Point = namedtuple('Point', ['x', 'y'])
    

7. 模块和包

  • 相对与绝对导入:模块的相对或绝对导入。
    from . import my_module  # 相对导入
    from mypackage import my_module  # 绝对导入
    

8. 类型提示

  • 类型注解:指定变量的预期类型。
    def get_addition_result(a: int, b: int) -> int:return a + b
    

9. 异步编程

  • 异步函数:使用 asyncawait 编写异步代码。
import asyncio# 定义一个异步函数,模拟异步数据获取
async def fetch_data():# 模拟异步操作,例如网络请求await asyncio.sleep(1)return {"data": 1}# 定义主协程,调用异步函数并打印结果
async def main():data = await fetch_data()print(data)# 使用 asyncio.run() 运行主协程,适用于 Python 3.7 及以上版本
asyncio.run(main())

10. 其他

  • 表达式末尾的逗号:在表达式末尾使用逗号,方便添加或删除元素。
    my_list = [1, 2, 3, ]
    
  • 星号参数和双星号参数:在函数定义中收集任意数量的参数。
    def func(*args, **kwargs):print(args, kwargs)
    
  • 异常的 as 用法:捕获异常的实例。
    try:1 / 0
    except ZeroDivisionError as e:print(f"Caught an exception: {e}")
    
  • 海象运算符:在表达式中进行赋值(Python 3.8+)。
    # Python 3.8+
    (element) = [1, 2, 3]
    
  • 使用 __slots__:限制实例属性,优化内存使用。
    class MyClass:__slots__ = ('name', 'age')
    

11. 内建函数和操作

  • 内建函数:如 len(), range(), min(), max(), sum() 等。
    len([1, 2, 3])
    
  • 序列字面量:创建列表、元组、集合。
    [1, 2, 3], (1, 2, 3), {1, 2, 3}
    
  • 字典字面量:创建字典。
    {'key': 'value'}
    
  • 条件表达式:简化 if-else 语句。
    'active' if is_active else 'inactive'
    
  • 迭代器解包:在函数调用中解包迭代器。
    [a, b] = iter_range
    
  • 参数解包:在函数调用中解包序列或字典。
    def func(a, b, c): pass
    func(*args, **kwargs)
    
  • 链式比较:简化多重比较。
    a < b < c
    
  • 内建序列方法:如 .append(), .extend(), .insert(), .remove(), .pop() 等。
    my_list.append('new item')
    
  • 内建字典方法:如 .get(), .keys(), .values(), .items() 等。
    my_dict.get('key')
    
  • 内建集合操作:如 .union(), .difference(), .intersection(), .symmetric_difference() 等。
    set_a.union(set_b)
    
  • 内建迭代器:如 enumerate(), zip(), filter(), map() 等。
    enumerate(['a', 'b', 'c'])
    
  • 内建类型转换:如 int(), float(), str(), bytes() 等。
    int('123')
    
  • 内建逻辑操作:如 and, or, not
    x and y or z
    
  • 内建身份操作:如 is, is not
    x is not None
    
  • 内建比较:比较运算符 ==, !=, >, <, >=, <=
    x > y
    
  • 内建数学运算:如 +, -, *, /, //, **
    x + y
    

12. 特殊方法

  • 特殊方法:如 __init__(), __str__(), __repr__(), __len__() 等。
    class MyClass:def __init__(self, value):self.value = value
    

13. 元类和类创建

  • 使用 type 作为元类:创建类的类。
    class MyClass(type):pass
    

14. 模块属性和包

  • 模块属性:如 __all__ 定义可导入的模块成员。
    __all__ = ['func1', 'func2']
    
  • 命名空间包:使用 __path__ 属性。
    __import__('pkgutil').extend_path(__path__, __name__)
    

15. 协程与异步IO

  • 异步上下文管理器:使用 async with
    async def async_func():async with aiohttp.ClientSession() as session:pass
    

16. 格式化字符串字面量

  • f-strings:格式化字符串。
    name = 'Kimi'
    f"Hello, {name}!"
    

17. 文件操作

  • 文件上下文管理器:使用 with open() 管理文件。
    with open('file.txt', 'r') as f:content = f.read()
    

18. 警告与反射

  • 警告机制:使用 warnings 模块发出警告。
    import warnings
    warnings.warn("This is a warning message.")
    
  • 反射:使用 getattr(), setattr(), delattr() 动态操作对象属性。
    getattr(obj, 'attr')
    

19. 垃圾回收与循环引用

  • 垃圾回收机制:自动管理内存。
    # Python's garbage collector takes care of objects
    
  • 循环引用处理:自动解除循环引用的 WeakRef
    import weakref
    weakref.ref(obj)
    

20. 内建数据类型操作

  • 序列操作:如 +, *, in, not in
    [1, 2] + [3, 4]
    
  • 字典操作:如 dict.pop(), dict.setdefault()
    my_dict.pop('key', 'default')
    
  • 集合操作:如 set.add(), set.remove()
    my_set.add('new item')
    

21. 内建迭代与循环控制

  • 迭代器:使用 iter() 创建迭代器。
    iter([1, 2, 3])
    
  • 循环控制:使用 breakcontinue 控制循环流程。
    for element in iterable:if some_condition:break  # Exit the loopelse:continue  # Skip to the next iteration
    

22. 内建比较与逻辑运算

  • 比较运算符==, !=, >, <, >=, <=
    x == y
    
  • 逻辑运算符and, or, not
    x and y or z
    

23. 内建身份与成员运算

  • 身份运算符is, is not
    x is y
    
  • 成员运算符in, not in
    'a' in ['a', 'b', 'c']
    

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C++(爬楼梯

我一开始&#xff0c;写了一个代码 class Solution { public:int climbStairs(int n) {vector<int> dp(n1);dp[1]1;dp[2]2;if(n1){return 1;}else if(n2){return 2;}else{for(int i3;i<n;i){dp[i]dp[i-1]dp[i-2];}return dp[n];}} }; 一直报错&#xff0c;找了半天终…

划分数据集2,详细说明

看完了这个之后划分数据集&#xff0c;训练自己的数据集。-CSDN博客 我再详细说一下自己标注的文件放在什么位置 我发的文件里有这几个文件 在dataset里面有 自己的数据集分为&#xff0c;图片部分和标注文件部分 打开VOCdevkit文件夹 里面有三个文件夹 自己的图片的话&…

商城数据库88张表结构完整示意图

36 CREATE TABLE operates (operateId int(11) NOT NULL AUTO_INCREMENT COMMENT 自增ID,staffId int(11) NOT NULL DEFAULT 0 COMMENT 职员ID,operateTime datetime NOT NULL COMMENT 操作时间,menuId int(11) NOT NULL COMMENT 所属菜单ID,operateDesc varchar(255) NOT NUL…

(C++) 内类生成智能指针shared_from_this介绍

文章目录 &#x1f601;介绍&#x1f914;类外操作&#x1f605;错误操作&#x1f602;正确操作 &#x1f914;类内操作&#x1f62e;std::enable_shared_from_this<>&#x1f62e;奇异递归模板 CRTP&#xff08;Curiously Recurring Template Pattern&#xff09;&#…

carrier开利触摸屏ICVC控制面板维修CEPL130445

开利离心机19XR空调ICVC显示面板维修CEPL130445-03-R/04-R/02-R 人机界面触摸维修故障有&#xff1a;花屏、白屏、按触摸屏无反应或反应慢(触摸不好)、内容错乱、无背光、背光暗、有背光无字符、不能通信、按键无反应等&#xff08;可更换液晶屏&#xff09;黑屏、对触摸屏触摸…

QML 中的状态

Qt hello – 专注于Qt的技术分享平台 状态描述了当前用户界面样子&#xff0c;QML中一个状态定义了一组属性的改变&#xff0c;并且会在一定条件下被触发。 假设有这么一个场景&#xff0c;红黄绿三个灯&#xff0c;用一个按钮&#xff0c;点击后依次切换三个灯亮起。使用QWi…

js如何获取对象的属性值

获取对象的属性值&#xff0c;有两种方式。 方式一&#xff1a; 对象.属性名 let obj {name:张三,age:23 }; console.log(obj.name); //张三方式二&#xff1a; 对象[属性名] let obj {name:张三,age:23 }; console.log(obj[name]); //张三 两种方式有什么不同&am…

AWR报告采集

一、windows下采集 自动负载信息库&#xff08;Automatic Workload Repository&#xff0c;AWR&#xff09;是在Oracle 10g中被引入的&#xff0c;缺省地被安装到Oracle10g数据库中&#xff0c;用于收集关于该特定数据库的操作统计信息和其他统计信息。AWR的采样工作由后台进程…

Linux-线程互斥和死锁

目录 一.线程互斥 1.1 进程线程间的互斥相关背景概念 1.2 互斥量mutex 二.互斥量的接口 2.1 初始化互斥量 2.2 销毁互斥量 2.3 互斥量加锁和解锁 2.4 改进后售票代码 三.死锁 3.1.什么是死锁&#xff1f; 3.2.死锁四个必要条件 3.3 避免死锁 一.线程互斥 1.1 进程…

吴恩达2022机器学习专项课程(一) 6.1 动机第三周课后实验:Lab1使用逻辑回归进行分类

问题预览/关键词 什么是逻辑回归&#xff1f;什么是二分类问题&#xff1f;二分类问题案例如何表达二分类的结果&#xff1f;逻辑回归通常用哪种表达形式&#xff1f;什么是正样本和负样本&#xff1f;什么是阈值&#xff1f;可视化线性回归解决二分类线性回归面对二分类产生的…

Android 跨进程通信

Android中常用的跨进程通信方法有以下几种&#xff1a; Intent、Binder、AIDL、Messenger、ContentProvider。 Intent 可以通过Intent传递数据和消息&#xff0c;但是只能传递一些简单的数据类型&#xff0c;比如字符串、整数等。 示例&#xff1a; 从一个应用程序发送一个字…

jmeter之跨线程关联

1&#xff09;_setproperty函数&#xff1a;将值保存成jmeter属性 2&#xff09;_property函数&#xff1a;在其他线程组中使用property函数读取属性 一、跨线程接口引用变量 1. 法一&#xff1a;jmeter自带函数_setProperty和_property 1. 1线程组 01 创建登录的【HTTP请求】…

1、k8s问题pod从service中剔除

一、起因 redis原来由两服务器的集群变为三服务器的集群&#xff0c;通过statefulset扩展了两节点&#xff0c;并把redis-app-0和redis-app-3从集群中去除&#xff0c;但是由于service路由后端不变&#xff0c;导致程序连接后端仍然可能到redis-app-0和redis-app-3 二、处理 …

常用的跨平台笔记软件OneNote, GTD

keywords: OneNote, GTD 快捷键 C --> Ctrl S --> Shift M --> Alt Cmd --> Command 调整文本格式 功能WindowsMac OS X高亮选中文本C-S-h 或 C-M-h插入超链接C-kCmd-k复制选中文本的格式&#xff08;格式刷&#xff09;C-S-cCmd-M-c应用格式刷到选中文本C-…

分类算法——决策树(五)

认识决策树 决策树思想的来源非常朴素&#xff0c;程序设计中的条件分支结构就是if-else结构&#xff0c;最早的决策树就是利用这类结构分割数据的一种分类学习方法。 决策树分类原理详解 为了更好理解决策树具体怎么分类的&#xff0c;通过一个问题例子&#xff1a; 问题…

C++入门----内联函数auto范围fornullptr指针

1.内联函数 顾名思义&#xff0c;内联函数也是函数的一种&#xff0c;我们在C语言的学习过程里面知道了函数和宏之间的区别和各自的优缺点&#xff1b; 函数的使用需要建立栈帧&#xff0c;宏的使用需要考虑各种符号的优先级问题&#xff0c;很容易出错&#xff0c;因为宏在使…

HarmonyOS开发案例:【闹钟】

介绍 使用后台代理提醒&#xff0c;实现一个简易闹钟。要求完成以下功能&#xff1a; 展示指针表盘或数字时间。添加、修改和删除闹钟。展示闹钟列表&#xff0c;并可打开和关闭单个闹钟。闹钟到设定的时间后弹出提醒。将闹钟的定时数据保存到轻量级数据库。 相关概念 [Canva…

MySQL创建表时添加约束

创建表时添加约束 ①列级约束 演示&#xff1a; CREATE TABLE students( id INT PRIMARY KEY,#主建约束&#xff08;唯一性&#xff0c;非空&#xff09; s_name VARCHAR(10) NOT NULL, #非空 s_sex CHAR(1) CHECK(s_sex男 OR s_sex女),#检查约束(Mysql无效) s_seat INT UNI…

数学建模完整版

模型与适用题型 微分方程传染病预测模型 神经网络 层次分析法 粒子群算法 matlab 优劣解距离法

如何为Postgres数据库设置安全的访问控制和权限管理

文章目录 解决方案1. 使用角色和权限管理2. 配置认证方法3. 使用网络访问控制4. 定期审查和更新权限 示例代码1. 创建角色并分配权限2. 配置密码认证3. 配置网络访问控制 总结 PostgreSQL是一个功能强大的开源关系型数据库系统&#xff0c;提供了丰富的权限和访问控制机制&…