当前位置: 首页 > news >正文

【Python】Python中一些有趣的用法

Python是一种非常灵活和强大的编程语言,它有很多有趣的用法,以下是一些例子:

  1. 一行代码实现FizzBuzz

    print('\n'.join(['FizzBuzz'[i%3*4:i%5*8:-1] or str(i) for i in range(1, 101)]))
    
  2. 使用列表推导式生成斐波那契数列

    fib = [0, 1]
    [fib.append(fib[-2] + fib[-1]) for _ in range(10)]
    print(fib)
    
  3. 交换变量

    a, b = b, a
    
  4. 使用字符串的格式化方法打印图案

    print('\n'.join([''.join(['{:4}'.format(i*j) for i in range(1, 10)]) for j in range(1, 10)]))
    
  5. 递归计算阶乘

    def factorial(n):return 1 if n == 0 else n * factorial(n-1)
    print(factorial(5))
    
  6. 使用lambda表达式创建一个简单的计算器

    calc = {'+': lambda x, y: x + y,'-': lambda x, y: x - y,'*': lambda x, y: x * y,'/': lambda x, y: x / y
    }
    print(calc['*'](10, 2))
    
  7. 使用内置的dis模块查看字节码

    import dis
    dis.dis(lambda x: x**2)
    
  8. 使用reduce函数实现累加

    from functools import reduce
    print(reduce(lambda x, y: x + y, range(1, 101)))
    
  9. 利用字典实现switch-case结构

    def switch_case(case_value):return {'a': 'apple','b': 'banana','c': 'cherry'}.get(case_value, 'default')
    print(switch_case('b'))
    
  10. 生成器表达式

    squares = (x**2 for x in range(10))
    print(list(squares))
    
  11. 使用切片操作进行字符串反转

    original_string = "Hello, World!"
    reversed_string = original_string[::-1]
    print(reversed_string)
    
  12. 使用*操作符来解包列表

    list1 = [1, 2, 3]
    list2 = [4, 5, 6]
    combined_list = [*list1, *list2]
    print(combined_list)
    
  13. 使用map函数来应用函数到每个元素

    numbers = [1, 2, 3, 4, 5]
    squared = list(map(lambda x: x**2, numbers))
    print(squared)
    
  14. 使用filter函数来筛选元素

    numbers = range(10)
    even_numbers = list(filter(lambda x: x % 2 == 0, numbers))
    print(even_numbers)
    
  15. 使用itertools模块进行迭代操作

    from itertools import chain, combinations
    def powerset(iterable):"powerset([1,2,3]) --> () (1,) (2,) (3,) (1,2) (1,3) (2,3) (1,2,3)"s = list(iterable)return chain.from_iterable(combinations(s, r) for r in range(len(s)+1))
    print(list(powerset([1, 2, 3])))
    
  16. 使用with语句管理资源

    with open('example.txt', 'r') as file:content = file.read()
    print(content)
    
  17. 使用装饰器添加函数功能

def my_decorator(func):def wrapper():print("Something is happening before the function is called.")func()print("Something is happening after the function is called.")return wrapper@my_decoratordef say_hello():print("Hello!")say_hello()
  1. 使用类装饰器记录函数调用次数

    class CallCounter:def __init__(self, func):self.func = funcself.calls = 0def __call__(self, *args, **kwargs):self.calls += 1return self.func(*args, **kwargs)
    @CallCounter
    def say_hello():print("Hello!")
    say_hello()
    say_hello()
    print(say_hello.calls)  # Output will be 2
  2. 使用evalexec执行字符串中的代码

    code = "print('Hello from eval!')"
    eval(code)exec_code = """
    for i in range(3):print(f'Hello from exec {i}!')
    """
    exec(exec_code)
    
  3. 使用contextlib简化上下文管理器

    from contextlib import contextmanager
    @contextmanager
    def managed_resource(*args, **kwargs):# Set up the resourceresource = acquire_resource(*args, **kwargs)try:yield resourcefinally:# Clean up the resourcerelease_resource(resource)
    with managed_resource() as resource:# Use the resourcepass
    

以上这些例子展示了 Python 的许多有趣和强大的特性,如列表推导式、字典和集合的用法、lambda表达式、递归以及生成器、装饰器、上下文管理器、迭代器、生成器等,它们在编写高效和可读性强的代码时非常有用。这些特性使得 Python 在解决某些问题时显得格外简洁和高效。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • canal监听mysql增量数据发布到rabbitmq
  • JavaWeb—XML_Tomcat10_HTTP
  • PLSQL导入导出ORACLE数据提示失败问题修改PLSQL配置
  • 目标检测研究方向——开放域目标检测
  • 【docker】虚拟化与docker基础
  • Android SurfaceFlinger——Vsync信号发送(五十二)
  • Ant-Design-Vue快速上手 指南+排坑(上)
  • IDEA连接数据库
  • 谈对象系列:C++类和对象
  • WPF界面开发-C#单例模式实现 页面数据传输
  • C语言程序设计-[11] 循环结构嵌套
  • uniapp 对于scroll-view滑动和页面滑动的联动处理
  • 什么是前端微服务,有何优势
  • 解决戴尔台式电脑休眠后无法唤醒问题
  • JS中关于为什么调用构造函数要使用new的详细解读
  • [译]CSS 居中(Center)方法大合集
  • 【React系列】如何构建React应用程序
  •  D - 粉碎叛乱F - 其他起义
  • electron原来这么简单----打包你的react、VUE桌面应用程序
  • Invalidate和postInvalidate的区别
  • JavaScript设计模式与开发实践系列之策略模式
  • leetcode386. Lexicographical Numbers
  • windows下mongoDB的环境配置
  • 精益 React 学习指南 (Lean React)- 1.5 React 与 DOM
  • 开放才能进步!Angular和Wijmo一起走过的日子
  • 猫头鹰的深夜翻译:JDK9 NotNullOrElse方法
  • 世界编程语言排行榜2008年06月(ActionScript 挺进20强)
  • 算法之不定期更新(一)(2018-04-12)
  • 小程序开发中的那些坑
  • 一起来学SpringBoot | 第三篇:SpringBoot日志配置
  • 硬币翻转问题,区间操作
  • 用Python写一份独特的元宵节祝福
  • 中文输入法与React文本输入框的问题与解决方案
  • 你对linux中grep命令知道多少?
  • ​sqlite3 --- SQLite 数据库 DB-API 2.0 接口模块​
  • ​无人机石油管道巡检方案新亮点:灵活准确又高效
  • #常见电池型号介绍 常见电池尺寸是多少【详解】
  • (1)(1.11) SiK Radio v2(一)
  • (2024最新)CentOS 7上在线安装MySQL 5.7|喂饭级教程
  • (C#)获取字符编码的类
  • (Qt) 默认QtWidget应用包含什么?
  • (编译到47%失败)to be deleted
  • (附源码)计算机毕业设计ssm基于Internet快递柜管理系统
  • (三维重建学习)已有位姿放入colmap和3D Gaussian Splatting训练
  • (四)汇编语言——简单程序
  • ******之网络***——物理***
  • .apk文件,IIS不支持下载解决
  • .mysql secret在哪_MySQL如何使用索引
  • .net 7和core版 SignalR
  • .NET CF命令行调试器MDbg入门(二) 设备模拟器
  • .NET Standard 的管理策略
  • .net 简单实现MD5
  • .NET8 动态添加定时任务(CRON Expression, Whatever)
  • .netcore 如何获取系统中所有session_如何把百度推广中获取的线索(基木鱼,电话,百度商桥等)同步到企业微信或者企业CRM等企业营销系统中...
  • .NET国产化改造探索(三)、银河麒麟安装.NET 8环境