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

python 基础知识100问

目录

1 Python中函数的输入参数类型‌:

2 python 第一个方法参数 selt cls

3 类和面向对象

4 Python 中__init__.py 作用

5 python 元类与装饰器    

元类与装饰器https://blog.csdn.net/qq_52213943/article/details/145175689?spm=1001.2014.3001.5506

6 设计模式

7  python 线程池


Python中函数的输入参数类型‌:

  1. 位置参数(Positional Arguments)‌:这是最常见的参数类型,按照顺序传递参数。例如,在函数定义中,第一个参数是a,第二个参数是b,调用时必须按照这个顺序传递值。如果调用时少传了一个参数,程序会报错‌12。

  2. 默认参数(Default Arguments)‌:在函数定义时可以为参数指定一个默认值。如果在调用函数时没有提供该参数的值,则使用默认值。例如,函数test(name, message='Boy')中,如果调用时没有提供message参数,则使用默认值'Boy'‌12。

  3. 关键字参数(Keyword Arguments)‌:这种参数通过名称传递,允许在调用函数时指定参数名,这使得参数的顺序可以与声明时不同,增加了代码的可读性。例如,function(a=2, b=3)即使ab的顺序与定义时不同,也能正确传递值‌24。

  4. 可变位置参数(Arbitrary Positional Arguments)‌:通过在参数前加一个星号*来实现,可以接收任意数量的位置参数。例如,def function(*args): return sum(args)可以接收任意数量的位置参数‌25。

  5. 可变关键字参数(Arbitrary Keyword Arguments)‌:通过在参数前加两个星号**来实现,可以接收任意数量的关键字参数。例如,def function(**‌kwargs): return kwargs可以接收任意数量的关键字参数‌25。

2 python 第一个方法参数 selt cls

  • 类方法使用@classmethod并接收cls参数。

  • 静态方法使用@staticmethod并不接收clsself参数。

  • 实例方法自动接收self参数,用于访问实例属性和方法。

3 类和面向对象

1. __init__构造方法

构造方法是一个特殊方法,用于在对象创建时自动调用,通常用于初始化实例变量。

2. __str__:定义对象的字符串表示

当使用 print() 或 str() 输出对象时,会调用 __str__ 方法,返回人类可读的字符串。

3. __eq__ 用于比较两个对象是否相等。

.__repr__ 返回对象的详细信息,主要用于调试。

5. 类方法 和 静态方法 是与普通方法不同的两种方法类型:类方法(@classmethod):操作类级别的数据,接收 cls 参数表示类本身。静态方法(@staticmethod):不依赖类或对象,只是与类相关的工具函数。

6 .__subclasses__根据父类获取所有子类

在Python中,如果你想从父类获取所有子类,可以通过使用__subclasses__()方法。这个方法会返回一个列表,其中包含了该类的所有直接子类。但是,如果你想获取所有子类,包括间接子类(即孙子类、重孙子类等),你需要递归地调用这个方法。

class Parent:
    pass
 
class Child1(Parent):
    pass
 
class Child2(Parent):
    pass
 
# 获取Parent的直接子类,注意 孙子类,还需要继续迭代
print(Parent.__subclasses__())  # 输出: [<class '__main__.Child1'>, <class '__main__.Child2'>]

4 Python 中__init__.py 作用

在 Python 中,__init__.py 文件是用于定义 包(Package) 的特殊文件。它的存在告诉 Python 解释器,该目录应被视为一个包。__init__.py 文件可以是空的,也可以包含初始化代码或定义包的属性和方法。

__init__.py 的作用
标识包:

如果一个目录中包含 __init__.py 文件,Python 会将其视为一个包。

没有 __init__.py 的目录会被视为普通目录,无法通过包的方式导入。

初始化包:

__init__.py 文件在包被导入时自动执行,可以用于初始化包或设置包级别的变量。

定义包的接口:

可以在 __init__.py 中导入模块或子包,简化用户导入包时的操作。

控制包的导入行为:

通过 __all__ 变量,可以控制使用 from package import * 时导入哪些模块。
 

5 python 元类与装饰器    

元类与装饰器https://blog.csdn.net/qq_52213943/article/details/145175689?spm=1001.2014.3001.5506

class ModelRegistry:
    _registry = {}
 
    @classmethod
    def register_model(cls, name):
        def decorator(model_cls):
            cls._registry[name] = model_cls
            return model_cls
        return decorator
 
# 使用装饰器注册模型
@ModelRegistry.register_model(name='resnet')
class ResNet:
    pass
 
@ModelRegistry.register_model(name='densenet')
class DenseNet:
    pass

6 设计模式

 23种设计模式,注解一般是用装饰器模式实现

7  python 线程池

在Python中,线程池是一种用于管理和复用线程的机制,可以有效地执行并发任务。`concurrent.futures` 模块提供了 `ThreadPoolExecutor` 类,用于创建和管理线程池。

   from concurrent.futures import ThreadPoolExecutor
   with ThreadPoolExecutor(max_workers=5) as executor:
   future = executor.submit(function, *args, **kwargs)
   #`function` 是要执行的函数,`*args` 和 `**kwargs` 是传递给函数的参数。
   result = future.result()

### 示例代码

以下是一个简单的示例,展示了如何使用 `ThreadPoolExecutor` 来并发执行多个任务:

from concurrent.futures import ThreadPoolExecutor
import time

def task(name):
    print(f"Task {name} started")
    time.sleep(2)  # 模拟耗时操作
    print(f"Task {name} finished")
    return f"Result from {name}"

# 创建线程池,最多同时运行3个线程
with ThreadPoolExecutor(max_workers=3) as executor:
    # 提交任务到线程池
    futures = [executor.submit(task, f"Task-{i}") for i in range(5)]

    # 获取任务结果
    for future in futures:
        print(future.result())

print("All tasks completed")

相关文章:

  • 第一章嵌入式系统概论考点02嵌入式系统的组成
  • ASP.NET Core 如何使用 C# 向端点发出 POST 请求
  • HTTP相关面试题
  • 利用MATLAB的linkaxes函数实现子图频率轴同步缩放
  • DateConverter does not support default String to ‘Date‘ conversion.
  • HARCT 2025 分论坛9:专用设备和机器人系统
  • WebGL 导入 OBJ 文件全解析
  • jenkins-获取当前时间戳
  • 买卖股票的最佳时机II(力扣122)
  • Python使用Flask结合DeepSeek开发
  • 2D 游戏艺术、动画和光照
  • Vue 2 — 配置请求转发
  • 【第5章:深度生成模型— 5.4 深度生成模型前沿全景:从Diffusion到多模态,揭秘AI生成技术的未来】
  • $ npx electron-forge import 一直报权限问题 resource busy or locked,
  • EasyRTC嵌入式WebRTC视频通话SDK支持Web浏览器、Linux、ARM、Android、iOS
  • win10右键使用IDEA打开
  • 日志2025.2.14
  • 深入浅出 Python Logging:从基础到进阶日志管理
  • Vue笔记(九)
  • ADC入门准备(九):信号与系统知识回顾
  • 苏州网站建设哪家做得好/游戏推广员骗局
  • 微网站开发建设/苏州百度快照优化排名
  • java网站开发经验/短视频优化
  • wordpress 网站投票/百度总部
  • 怎么把淘宝店放到自己做的网站去/seoul是什么国家
  • 什么网站程序适合做seo/seo如何挖掘关键词