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

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:passclass Child1(Parent):passclass 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 = {}@classmethoddef register_model(cls, name):def decorator(model_cls):cls._registry[name] = model_clsreturn model_clsreturn 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 ThreadPoolExecutorwith 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 timedef 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")

相关文章:

python 基础知识100问

目录 1 Python中函数的输入参数类型‌&#xff1a; 2 python 第一个方法参数 selt cls 3 类和面向对象 4 Python 中__init__.py 作用 5 python 元类与装饰器 元类与装饰器https://blog.csdn.net/qq_52213943/article/details/145175689?spm1001.2014.3001.5506 6 设…...

Linux入侵检查流程

1. 初步信息收集 1.1 系统信息 • 目的&#xff1a;了解当前系统的基本情况&#xff0c;包括操作系统版本、内核版本等。 • 命令&#xff1a; # 查看操作系统发行版信息 cat /etc/os-release # 查看内核版本 uname -r 1.2 网络信息 • 目的&#xff1a;查看网络连接状态、…...

pg_sql关于时间的函数

1、时间戳和日期之间的相互转换 时间戳转日期&#xff08;时间戳为数值类型&#xff0c;若为字符型需进行转换&#xff09; # 保留到秒&#xff1a;2025-10-02 04:46:40 &#xff08;字符型转换数值型&#xff09; select to_timestamp(1759351600::bigint)# 保留到日&#x…...

如何使用 DeepSeek R1 构建开源 ChatGPT Operator 替代方案

开源大型语言模型&#xff08;LLMs&#xff09;的兴起使得创建 AI 驱动的工具比以往任何时候都更容易&#xff0c;这些工具可以与 OpenAI 的 ChatGPT Operator 等专有解决方案相媲美。在这些开源模型中&#xff0c;DeepSeek R1 以其强大的推理能力、自由的可访问性和适应性而脱…...

【教程】MySQL数据库学习笔记(七)——多表操作(持续更新)

写在前面&#xff1a; 如果文章对你有帮助&#xff0c;记得点赞关注加收藏一波&#xff0c;利于以后需要的时候复习&#xff0c;多谢支持&#xff01; 【MySQL数据库学习】系列文章 第一章 《认识与环境搭建》 第二章 《数据类型》 第三章 《数据定义语言DDL》 第四章 《数据操…...

Word 公式转 CSDN 插件 发布

经过几个月的苦修&#xff0c;这款插件终于面世了。 从Word复制公式到CSDN粘贴&#xff0c;总是出现公式中的文字被单独提出来&#xff0c;而公式作为一个图片被粘贴的情况。公式多了的时候还会导致CSDN禁止进一步的上传公式。 经过对CSDN公式的研究&#xff0c;发现在粘贴公…...

【设计模式】 建造者模式和原型模式

建造者模式&#xff08;Builder Pattern&#xff09; 概述 建造者模式是一种创建型设计模式&#xff0c;它允许逐步构建复杂对象。通过将构造过程与表示分离&#xff0c;使得同样的构建过程可以创建不同的表示。这种模式非常适合用于创建那些具有很多属性的对象&#xff0c;尤…...

win7误删注册表文件夹导致exe无法执行

今天在装某个软件的时候报错 “不是有效的Win32应用程序”&#xff0c;找一篇文章于是按文章删除了注册表上的好多文件&#xff0c;之后就发现所有的exe文件都打不开了&#xff0c;更糟糕的是中间还弹出来一个“是否将IE设置为所有程度的默认执行程序”&#xff0c;没思考就点击…...

【ESP32接入国产大模型之Deepseek】

【ESP32接入国产大模型之Deepseek】 1. Deepseek大模型1.1 了解Deepseek api1.2 Http接口鉴权1.3. 接口参数说明1.3.1 请求体(request)参数1.3.2 模型推理 2. 先决条件2.1 环境配置2.2 所需零件 3. 核心代码3.1 源码分享3.2 源码解析3.3 连续对话修改后的代码代码说明示例输出注…...

C语言蓝桥杯1003: [编程入门]密码破译

要将"China"译成密码&#xff0c;译码规律是&#xff1a;用原来字母后面的第4个字母代替原来的字母&#xff0e; 例如&#xff0c;字母"A"后面第4个字母是"E"&#xff0e;"E"代替"A"。因此&#xff0c;"China"应译…...

New Game--(单调队列)

I - New Game 有一种新的游戏&#xff0c;Monocarp 想要玩。这个游戏使用一副包含 n 张牌的牌堆&#xff0c;其中第 i 张牌上写有一个整数 a_i。 在游戏开始时&#xff0c;Monocarp 可以在第一轮选择牌堆中的任意一张牌。在接下来的每一轮中&#xff0c;Monocarp 可以选择一张…...

什么是偏光环形光源

偏光环形光源是一种特殊的光源&#xff0c;常用于机器视觉、光学检测和工业自动化等领域。它结合了环形光源和偏光技术&#xff0c;能够有效减少反射、增强对比度&#xff0c;特别适用于检测高反光或表面复杂的物体。 主要特点&#xff1a; 环形设计&#xff1a;光线均匀照射物…...

SolidWorks速成教程P3-3【零件 | 第三节】——草图绘制面实线与构造线的区别

经过了前面的特征学习后,是不是感觉对 SolidWorks越来越熟悉了?不过发现, SolidWorks速成这套教程,对于一些基础问题,还是需要解释得更详细一些,所以在这节再补充一下草图绘制面&实线与构造线的区别。 目录 1.草图绘制面 2.实线与构造线的区别 1.草图绘制面 之前…...

win10中mstsc远程Centos-Stream 9图形化界面

文章目录 1 前置状态2 安装配置XRDP3 关闭SELinux3.1 查看selinux状态3.2 关闭selinux 4 启动XRDP5 Win10远程连接测试 1 前置状态 已安装CentOS9桌面版&#xff1b;Windows10。 2 安装配置XRDP sudo yum install epel-release sudo yum install xrdp sudo yum install tige…...

中国AI“拥抱开源”给世界的启示——Anko

事实证明&#xff0c;中国AI企业“拥抱开源”&#xff0c;不仅为自身发展开拓了新路径&#xff0c;也带动AI企业跨国合作的需求&#xff0c;并推动全球AI生态向“开源普惠”转型。Anko通过免费开放部分模型功能&#xff0c;将AI时代的数字红利公平地派发到每一位网民手中&#…...

DeepSeek处理自有业务的案例:让AI给你写一份小众编辑器(EverEdit)的语法着色文件

1 DeepSeek处理自有业务的案例&#xff1a;让AI给你写一份小众编辑器(EverEdit)的语法着色文件 1.1 背景 AI能力再强&#xff0c;如果不能在企业的自有业务上产生助益&#xff0c;那基本也是一无是处。将企业的自有业务上传到线上训练&#xff0c;那是脑子进水的做法&#xff…...

Jenkins 配置 Git Parameter 四

Jenkins 配置 Git Parameter 四 一、开启 项目参数设置 勾选 This project is parameterised 二、添加 Git Parameter 如果此处不显示 Git Parameter 说明 Jenkins 还没有安装 Git Parameter plugin 插件&#xff0c;请先安装插件 Jenkins 安装插件 三、设置基本参数 点击…...

力扣-二叉树-110 平衡二叉树

思路 用后序分别求出每一个节点的左子树和右子树高度&#xff0c;然后判断是否符合定义&#xff0c;再判断两个子树是否符合定义 代码 class Solution { public:int getDepth(TreeNode* node){if(node nullptr) return 0;return max( getDepth(node->left), getDepth(no…...

Linux 查看磁盘中的大文件

在 Linux 系统中&#xff0c;你可以使用以下方法来查看磁盘中的大文件信息&#xff1a; 1. 使用 find 命令 find 命令可以递归查找指定目录下的大文件。 find /path/to/directory -type f -size 100M -exec ls -lh {} \;/path/to/directory&#xff1a;要查找的目录路径&…...

网络工程师 (38)流量和差错控制

一、流量控制 流量控制是一种协调发送站和接收站工作步调的技术。它的主要目的是防止发送端发送数据过快&#xff0c;导致接收端缓冲区溢出&#xff0c;从而造成数据丢失。流量控制机制通过调整发送速率来匹配接收端的处理能力。 基本原理 发送站每发出一帧数据&#xff0c;就进…...

vue3多个页面/组件,复用同一段render页面根据接口返回的数据动态渲染逻辑,使用setup+组合式API

组件reusableComponent是可供多个组件复用的 getData请求接口&#xff0c;render渲染数据 <template><render /> </template> <script setup> import operationService from "/views/operation/component/operationService.vue";const prop…...

从零开始:Django初学者的实战之旅

一、概念引入 要基于编程开发一个完整的企业项目不管什么样的项目&#xff0c;基本都有3种不同的开发模式&#xff0c;这几种开发模式&#xff0c;如果把项目类比成建造房子则有如下&#xff1a; 1.原生开发&#xff1a;类似从0开始造房子&#xff0c;从0开始构建项目&#xf…...

青果教务系统逆向(js逆向)

首先我们打开f12检查以下登录函数 可以看到登录函数在checkrand中&#xff0c;直接去全局搜索函数 在这里&#xff0c;打个断点直接跳进去 可以看到参数在这里形成 这是我们发起请求需要的参数&#xff0c;把这几个参数加进去直接登录就行 那就一个一个看呗&#xff0c;第一…...

在Linux中Redis不支持lua脚本的处理方法

redis安装在IP为x.x.x.x的服务器上 redis安装 第一步&#xff0c;安装前&#xff0c;检测系统是否安装了redis。若安装了redis&#xff0c;则需要删除redis&#xff1b;若没有安装redis&#xff0c;则需要安装2.6版本以上的redis。 # 确保Redis版本支持Lua脚本。从Redis 2.6…...

WPF进阶 | 深入 WPF 依赖项属性:理解其强大功能与应用场景

WPF进阶 | 深入 WPF 依赖项属性&#xff1a;理解其强大功能与应用场景 前言一、依赖项属性基础概念1.1 什么是依赖项属性1.2 依赖项属性与 CLR 属性的区别1.3 依赖项属性的定义与注册 二、依赖项属性的原理深入剖析2.1 依赖项属性系统的工作机制2.2 元数据&#xff08;Metadata…...

关于 IoT DC3 中设备(Device)的理解

在物联网系统中&#xff0c;设备&#xff08;Device&#xff09;是一个非常宽泛的概念&#xff0c;它可以指代任何能够接入系统并进行数据交互的实体。包括但不限于手机、电脑、服务器、网关、硬件设备甚至是某些软件程序等所有能接入到该平台的媒介。 内容 定义 目的 示例 …...

从 0 开始本地部署 DeepSeek:详细步骤 + 避坑指南 + 构建可视化(安装在D盘)

个人主页&#xff1a;chian-ocean 前言&#xff1a; 随着人工智能技术的迅速发展&#xff0c;大语言模型在各个行业中得到了广泛应用。DeepSeek 作为一个新兴的 AI 公司&#xff0c;凭借其高效的 AI 模型和开源的优势&#xff0c;吸引了越来越多的开发者和企业关注。为了更好地…...

Uniapp 获取定位详解:从申请Key到实现定位功能

文章目录 前言一、申请定位所需的 Key1.1 注册高德开发者账号1.2 创建应用1.3 添加 Key 二、在 Uniapp 中配置定位功能2.1 引入高德地图 SDK2.2 获取定位权限 三、实现定位功能3.1 使用 uni.getLocation 获取位置3.2 处理定位失败的情况3.3 持续定位3.4 停止持续定位 四、总结 …...

【6】阿里面试题整理

[1]. ThreadLocal原理 ThreadLocal提供了一种线程隔离的机制&#xff0c;使得每个线程拥有自己独立的变量副本。 它的底层实现是ThreadLocalMap&#xff0c;以ThreadLocal对象为键&#xff0c;变量副本为值的键值对。 为了避免内存泄漏&#xff0c;ThreadLocalMap的Key使用了…...

Spring系统学习——持续更新

spring概述 1.轻量级的开源的JAVAEE框架 2.解决企业应用开发的复杂性 3.两大核心 &#xff1a;IOC&#xff08;控制反转&#xff09;和AOP&#xff08;面向切面&#xff09; 4.Spring特点&#xff1a; 1.方便解耦&#xff0c;简化开发。2.Aop编程支持3.方便程序测试4.方便和其…...