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

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

  1. 一行代码实现FizzBuzz

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

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

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

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

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

    python 复制代码
    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模块查看字节码

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

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

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

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

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

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

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

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

    python 复制代码
    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语句管理资源

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

python 复制代码
 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_decorator
 def say_hello():
     print("Hello!")
 say_hello()
 
  1. 使用类装饰器记录函数调用次数

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

    python 复制代码
    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简化上下文管理器

    python 复制代码
    from contextlib import contextmanager
    @contextmanager
    def managed_resource(*args, **kwargs):
        # Set up the resource
        resource = acquire_resource(*args, **kwargs)
        try:
            yield resource
        finally:
            # Clean up the resource
            release_resource(resource)
    with managed_resource() as resource:
        # Use the resource
        pass

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

相关推荐
Gu Gu Study6 分钟前
枚举与lambda表达式,枚举实现单例模式为什么是安全的,lambda表达式与函数式接口的小九九~
java·开发语言
时光の尘20 分钟前
C语言菜鸟入门·关键字·float以及double的用法
运维·服务器·c语言·开发语言·stm32·单片机·c
以后不吃煲仔饭34 分钟前
Java基础夯实——2.7 线程上下文切换
java·开发语言
进阶的架构师35 分钟前
2024年Java面试题及答案整理(1000+面试题附答案解析)
java·开发语言
前端拾光者39 分钟前
利用D3.js实现数据可视化的简单示例
开发语言·javascript·信息可视化
程序猿阿伟41 分钟前
《C++ 实现区块链:区块时间戳的存储与验证机制解析》
开发语言·c++·区块链
傻啦嘿哟1 小时前
如何使用 Python 开发一个简单的文本数据转换为 Excel 工具
开发语言·python·excel
大数据编程之光1 小时前
Flink Standalone集群模式安装部署全攻略
java·大数据·开发语言·面试·flink
初九之潜龙勿用1 小时前
C#校验画布签名图片是否为空白
开发语言·ui·c#·.net
B站计算机毕业设计超人1 小时前
计算机毕业设计SparkStreaming+Kafka旅游推荐系统 旅游景点客流量预测 旅游可视化 旅游大数据 Hive数据仓库 机器学习 深度学习
大数据·数据仓库·hadoop·python·kafka·课程设计·数据可视化