python 个人学习笔记

ops/2025/1/12 9:20:51/

个人学习笔记

关键字

if __name__ == '__main__

if __name__ == '__main__': 是 Python 中一个常用的代码结构,它的作用是判断当前脚本是否作为主程序直接运行,还是被作为模块导入到其他脚本中使用。 以下详细解释:

__name__ 是 Python 中的一个内置变量,它表示当前模块的名称。

当一个 Python 脚本被直接运行时,__name__ 的值会被设置为 '__main__';

而当这个脚本被作为模块导入到其他脚本中时,__name__ 的值会是这个模块的名字(也就是脚本的文件名,不包

含 .py 后缀)。 以下是代码示例:

python">def main():print("This is the main function.")if __name__ == '__main__':main()

在上述代码中: 定义了一个 main 函数,函数内打印一句话。

接着使用 if __name__ == '__main__': 判断,当脚本直接运行时,__name__ 等于 '__main__',条件成立,会执行 main() 函数。

假设我们有另一个脚本 test.py,内容如下:

python">import module  # 假设上面代码保存为module.py# 这里并不会执行module.py中的main函数

在 test.py 中导入了 module 模块,由于 module 模块是被导入使用,此时 module 模块中的 __name__ 是 'module',不等于 '__main__',所以 module 模块中 if __name__ == '__main__': 块内的代码不会执行。

if __name__ == '__main__': 的好处主要有:

代码组织清晰:将主程序逻辑放在 if __name__ == '__main__': 块内,可以使代码结构更清晰,便于区分哪些代码是在模块被导入时执行,哪些是在模块直接运行时执行。

便于测试:在开发模块时,可以在 if __name__ == '__main__': 块内编写测试代码,这些测试代码在模块被导入时不会执行,只有在直接运行该模块时才会执行,方便对模块进行功能测试。

__init__

  1. 定义
    • 在 Python 中,__init__是一个特殊方法(也称为魔法方法或双下划线方法)。它是类中的构造函数,用于初始化类的实例对象。当创建一个类的新实例时,__init__方法会被自动调用。
  2. 语法和参数
    • 它的第一个参数总是self,代表类的实例本身。在__init__方法内部,可以通过self来定义和初始化实例的属性。除了self之外,还可以有其他参数,这些参数用于接收在创建实例时传递的值。例如:
python">class MyClass:def __init__(self, parameter1, parameter2):self.attribute1 = parameter1self.attribute2 = parameter2
  • 这里的parameter1parameter2是在创建MyClass的实例时需要传递的参数,通过__init__方法,它们被赋值给了实例的属性self.attribute1self.attribute2

用途举例

  • 初始化实例属性:假设要创建一个表示矩形的类Rectangle,可以在__init__方法中初始化矩形的长和宽这两个属性。
python">class Rectangle:def __init__(self, length, width):self.length = lengthself.width = width
  • 当创建Rectangle类的实例时,就可以传入长和宽的值,这些值会被用来初始化实例的属性。例如rect = Rectangle(5, 3),这里5被赋值给rect.length3被赋值给rect.width
  • 执行其他初始化操作:除了初始化属性,__init__方法还可以用于执行其他一些在实例创建时需要完成的任务,比如打开文件、建立数据库连接等。不过需要注意的是,在__init__方法中尽量保持简洁,复杂的操作可以放在其他方法中。

python">class ProductData:def __init__(self, price, quantity):self.price = priceself.quantity = quantityself.highest_price = priceself.lowest_price = pricedef update_price(self, new_price):self.price = new_priceif new_price > self.highest_price:self.highest_price = new_priceelif new_price < self.lowest_price:self.lowest_price = new_pricedef get_total_value(self):return self.price * self.quantity# 示例使用
product = ProductData(10, 5)
print(f"初始价格: {product.price}")
print(f"初始数量: {product.quantity}")
print(f"初始最高价: {product.highest_price}")
print(f"初始最低价: {product.lowest_price}")product.update_price(15)
print(f"\n更新后的价格: {product.price}")
print(f"更新后的最高价: {product.highest_price}")
print(f"更新后的最低价: {product.lowest_price}")total_value = product.get_total_value()
print(f"\n总价值: {total_value}")


http://www.ppmy.cn/ops/149407.html

相关文章

深入NLP核心技术:文本张量表示与词嵌入全面解析

系列文章目录 01-中文NLP入门必备&#xff1a;全面解析分词、命名实体识别与词性标注&#xff08;附详细实战案例&#xff09; 02-深入NLP核心技术&#xff1a;文本张量表示与词嵌入全面解析 文章目录 系列文章目录前言一、文本张量表示1.1 文本张量表示简介1.1.1 举例说明1.1…

运行.Net 7 Zr.Admin项目(后端)

1.下载Zr.Admin代码压缩包 https://codeload.github.com/izhaorui/Zr.Admin.NET/zip/refs/heads/main 2.打开项目 我这里装的是VS2022社区版 进入根目录&#xff0c;双击ZRAdmin.sln打开项目 3.安装.net7运行时 我当时下载的代码版本是.net7的 点击安装 点击安装&#xff0…

Java SpringBoot + Vue + Uniapp 集成JustAuth 最快实现多端三方登录!(QQ登录、微信登录、支付宝登录……)

注&#xff1a;本文基于 若依 集成just-auth实现第三方授权登录 修改完善&#xff0c;所有步骤仅代表本人如下环境亲测可用&#xff0c;其他环境需自辩或联系查看原因&#xff01; 系统环境 运行系统&#xff1a;Windows10专业版、Linux Centos7.6 Java 版本&#xff1a;1.8.0_…

开源库:jcon-cpp

说明 jcon-cpp 是一个用于 C 的 JSON-RPC 库&#xff0c;它允许开发者通过 JSON-RPC 协议进行进程间通信&#xff08;IPC&#xff09;。JSON-RPC 是一种轻量级的远程过程调用协议&#xff0c;基于 JSON 格式数据进行通信。基于MIT协议&#xff0c;最新代码基于Qt6实现。可通过…

一个基于Spring Boot的简单网吧管理系统

一个基于Spring Boot的简单网吧管理系统的案例代码。这个系统包括用户管理、电脑管理、上机记录管理等功能。代码结构清晰&#xff0c;适合初学者学习和参考。 1. 项目结构 src/main/java/com/example/netbarmanagement├── controller│ ├── ComputerController.jav…

[读书日志]从零开始学习Chisel 第十篇:Scala的模式匹配(敏捷硬件开发语言Chisel与数字系统设计)

7. Scala的模式匹配 7.1 样例类和对象 定义类时&#xff0c;如果在最前面加上关键字case&#xff0c;则这个类就被称为样例类。Scala的编译器自动对样例类添加一些语法便利&#xff1a; 添加一个与类同名的工厂方法&#xff0c;可以通过类名(参数)来构造对象&#xff0c;而不…

使用 Multer 上传图片到阿里云 OSS

文件上传到哪里更好&#xff1f; 上传到服务器本地 上传到服务器本地&#xff0c;这种方法在现今商业项目中&#xff0c;几乎已经见不到了。因为服务器带宽&#xff0c;磁盘 IO 都是非常有限的。将文件上传和读取放在自己服务器上&#xff0c;并不是明智的选择。 上传到云储存…

【ArcGIS Pro微课1000例】0065:制作千层饼多图层叠加效果

文章目录 一、新建场景工程并加载数据二、图层符号化1.dem图层2. TIN图层3. 等高线4. 影像三、设置高程偏移四、三维地形显示一、新建场景工程并加载数据 打开ArcGIS PRo,新建一个局部场景,命名为千层饼。 移除工程默认加载的图层。 点击【添加数据】。 添加配套实验数据包0…