read code and make summer (python)

read code and make summer

    • ==标题==:语法
      • ==标题==:类的定义
      • ==标题==:继承
      • ==标题==:多态
      • ==标题==:__all__ = ['create_dataset', 'create_dataloader']
      • ==标题==:yield
      • ==标题==: f-string(格式化字符串)
      • ==标题==:getattr()
      • ==标题==:logging
      • ==标题==:seed
      • ==标题==:slice
      • ==标题==:assert
      • ==标题==:iter()
      • ==标题==:isinstance
    • ==标题== :torch
      • ==标题==:torch.Generator()
    • ==标题== :numpy
      • ==标题==:numpy.random
    • ==标题== :importlib
      • ==标题==:importlib.import_module(f'basicsr.data.{file_name}')
    • ==标题==:os
      • ==标题==:osp.dirname(osp.abspath(__file__))
      • ==标题==:osp.relpath(entry.path, root)
      • ==标题==:osp.splitext(osp.basename(v))[0]
    • ==标题==: 异常
      • ==标题==:raise TypeError('"suffix" must be a string or tuple of strings')
    • ==标题==:random
      • ==标题==:math.ceil
    • ==标题==:工具包
      • ==标题==:获取指定的目录下包含指定内容的文件或者目录的名字

标题:语法

标题:类的定义

在 Python 中,定义一个类的语法非常简洁和灵活。下面是一个典型的类定义的基本语法:

class ClassName:# 类的属性和方法pass

详细解释

  • class: 关键字用于声明一个类。
  • ClassName: 类的名称,遵循标识符命名规则。
  • :: 冒号表示类定义的开始。
  • 类的主体部分缩进,通常是四个空格。
  • pass: 是一个占位符,表示在类主体中没有任何内容。你可以在这里定义类的属性和方法。

示例

class Person:# 类的属性species = "Homo sapiens"# 类的方法def __init__(self, name, age):self.name = nameself.age = agedef greet(self):print(f"Hello, my name is {self.name} and I am {self.age} years old.")# 实例化对象
john = Person("John", 30)
john.greet()  # 输出: Hello, my name is John and I am 30 years old.

在这个示例中,Person 类有一个类属性 species 和两个方法 __init__greet__init__ 方法是类的构造函数,在创建对象时调用。greet 方法用于打印问候语。

类的构造函数 __init__

类的构造函数 __init__ 是一个特殊的方法,用于初始化新创建的对象。在类实例化时,构造函数会自动调用,并传递参数给对象的属性。

class Person:def __init__(self, name, age):self.name = nameself.age = age# 实例化对象并传递参数
john = Person("John", 30)
print(john.name)  # 输出: John
print(john.age)   # 输出: 30

self 参数

在类的方法中,第一个参数通常是 self,它表示当前对象实例本身。通过 self,你可以访问对象的属性和方法。

class MyClass:def __init__(self, x):self.x = xdef print_value(self):print(self.x)obj = MyClass(10)
obj.print_value()  # 输出: 10

类的继承

Python 支持类的继承,一个类可以继承另一个类的属性和方法。语法如下:

class ChildClass(ParentClass):# 子类的属性和方法pass

示例

class Animal:def speak(self):print("Animal speaks")class Dog(Animal):def bark(self):print("Dog barks")dog = Dog()
dog.speak()  # 输出: Animal speaks
dog.bark()   # 输出: Dog barks

在这个示例中,Dog 类继承了 Animal 类的 speak 方法,并添加了自己的 bark 方法。

总结

在 Python 中,类的定义通过简洁的语法实现了面向对象编程的基本特性。通过定义类和实例化对象,可以创建具有属性和方法的对象,实现代码的组织、复用和扩展。

标题:继承

在 Python 中,继承是面向对象编程的重要概念之一,允许一个类(子类)基于另一个类(父类)定义新的类。子类继承了父类的属性和方法,同时可以添加自己的属性和方法,或者重写父类的方法。

基本语法

class ParentClass:# 父类的属性和方法class ChildClass(ParentClass):# 子类的属性和方法

示例

# 定义一个父类
class Animal:def __init__(self, name):self.name = namedef speak(self):print(f"{self.name} makes a sound")# 定义一个子类,继承自父类 Animal
class Dog(Animal):def speak(self):print(f"{self.name} barks")# 实例化子类对象
dog = Dog("Buddy")
dog.speak()  # 输出: Buddy barks

在这个示例中,Dog 类继承了 Animal 类的属性和方法,并且重写了 speak() 方法,使其输出狗的声音。

方法重写(Override)

子类可以重写(Override)父类的方法,即在子类中重新定义父类中已有的方法。

class Cat(Animal):def speak(self):print(f"{self.name} meows")cat = Cat("Whiskers")
cat.speak()  # 输出: Whiskers meows

调用父类方法

子类可以通过 super() 函数调用父类的方法。

class Fish(Animal):def speak(self):super().speak()print("But fishes don't make sounds")fish = Fish("Nemo")
fish.speak()  # 输出: Nemo makes a sound \n But fishes don't make sounds

多重继承

Python 支持多重继承,即一个类可以同时继承自多个父类。

class A:def method(self):print("A method")class B:def method(self):print("B method")class C(A, B):passobj = C()
obj.method()  # 输出: A method

在多重继承中,Python 使用方法解析顺序(Method Resolution Order,MRO)来确定方法调用的优先顺序。

继承与组合

继承是一种"is-a"(是一个)关系,表示一个对象是另一个对象的一种类型。而组合是一种"has-a"(有一个)关系,表示一个对象包含另一个对象作为其一部分。

class Engine:def start(self):print("Engine started")class Car:def __init__(self):self.engine = Engine()def start(self):self.engine.start()print("Car started")my_car = Car()
my_car.start()  # 输出: Engine started \n Car started

在这个示例中,Car 类使用组合来包含一个 Engine 对象,而不是继承自 Engine 类。

使用继承的优点

  • 代码重用:避免了重复编写相同的代码。
  • 可扩展性:子类可以在不改变父类的情况下添加新功能。
  • 代码组织:将相似的类归为一类,使代码更易于理解和维护。

总结

继承是 Python 中实现代码重用、扩展和组织的重要机制之一。通过继承,可以构建具有层次结构的类,使代码更加清晰、灵活和可维护。

标题:多态

多态是面向对象编程的一个重要概念,它允许不同类的对象对同一消息做出不同的响应。简而言之,多态性允许不同类的对象对同一个方法具有不同的实现,从而使得代码更加灵活和可扩展。

多态的实现方式

多态性主要通过继承和方法重写来实现。

  1. 继承和方法重写:子类可以重写父类的方法,从而使得不同的子类对象在调用相同方法时表现出不同的行为。
class Animal:def speak(self):print("Animal speaks")class Dog(Animal):def speak(self):print("Dog barks")class Cat(Animal):def speak(self):print("Cat meows")# 多态性的体现
animals = [Dog(), Cat()]
for animal in animals:animal.speak()

在这个示例中,Dog 类和 Cat 类都继承了 Animal 类,并且分别重写了 speak 方法。当我们将 Dog 对象和 Cat 对象放入同一个列表中,并且遍历调用它们的 speak 方法时,它们表现出了不同的行为。

  1. 鸭子类型:不依赖继承,而是依赖于对象的实现。
class Duck:def speak(self):print("Duck quacks")class Human:def speak(self):print("Human talks")# 多态性的体现
def make_sound(entity):entity.speak()duck = Duck()
human = Human()make_sound(duck)   # 输出: Duck quacks
make_sound(human)  # 输出: Human talks

在这个示例中,Duck 类和 Human 类都实现了 speak 方法,尽管它们没有共同的父类,但是它们都可以作为参数传递给 make_sound 函数,并且根据对象的实际类型调用相应的方法,这就是多态性的体现。

多态的优点

  1. 代码重用:多态性可以使得不同类的对象对同一消息做出不同的响应,从而避免了重复编写相似的代码。
  2. 可扩展性:通过添加新的子类并重写父类的方法,可以很容易地扩展现有的代码功能。
  3. 简化代码:多态性使得代码更加简洁、灵活和易于理解。

总结

多态是面向对象编程中的一个重要概念,通过继承和方法重写实现,使得不同类的对象可以对同一个消息做出不同的响应。多态性使得代码更加灵活、可扩展和易于理解,是面向对象编程的核心之一。
标题:[new_element for element in iterable if condition]

[new_element for element in iterable if condition]

new_element: 新列表中的元素,可以是对 element 的某种变换。
element: 迭代中的每个元素。
iterable: 可迭代对象(如列表、字符串、range 等)。
condition: 条件表达式,只有满足该条件的元素才会被包含在新列表中。

生成一个包含所有偶数的列表:

even_numbers = [x for x in range(10) if x % 2 == 0]
print(even_numbers)  # 输出: [0, 2, 4, 6, 8]

生成一个包含所有字符串长度大于3的单词的列表:

words = ["apple", "banana", "cherry", "date"]
long_words = [word for word in words if len(word) > 3]
print(long_words)  # 输出: ['apple', 'banana', 'cherry']

生成一个字典,其中键为数字,值为数字的平方,只包含偶数:

squares = {x: x**2 for x in range(10) if x % 2 == 0}
print(squares)  # 输出: {0: 0, 2: 4, 4: 16, 6: 36, 8: 64}

生成一个集合,包含所有字符串长度大于3的单词:

words = {"apple", "banana", "cherry", "date"}
long_words_set = {word for word in words if len(word) > 3}
print(long_words_set)  # 输出: {'banana', 'apple', 'cherry'}

生成一个生成器对象,包含所有偶数:

even_numbers_gen = (x for x in range(10) if x % 2 == 0)
print(list(even_numbers_gen))  # 输出: [0, 2, 4, 6, 8]

创建一个嵌套列表,其中包含从1到9的所有数,但排除掉5:

nested_list = [[x for x in range

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/29798.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

必看!!! 2024 最新 PG 硬核干货大盘点(上)

PGConf.dev(原名PGCon,从2007年至2023年)首次在风景如画的加拿大温哥华市举办。此次重新定位的会议带来了全新的视角和多项新的内容,参会体验再次升级。尽管 PGCon 历来更侧重于开发者,吸引来自世界各地的资深开发者、…

Nginx常用配置、反向代理

目录 1. 常用配置 基本设置 HTTP配置 虚拟主机配置 2. 高级配置 反向代理配置 SSL/TLS配置 负载均衡配置 1. 常用配置 基本设置 user nginx; worker_processes auto; error_log /var/log/nginx/error.log warn; pid /var/run/nginx.pid;user nginx;: 指定Nginx worker…

深入理解并打败C语言难关之一————指针(5)(最终篇)

前言: 仔细一想,小编已经把指针的大部分内容都说了一遍了,小编目前有点灵感枯竭了,今天决定就结束指针这一大山,可能很多小编并没有提到过,如果有些没说的小编会在后续博客进行补充道,不多废话了…

服务器数据恢复—NTFS文件系统下双循环riad5数据恢复案例

服务器存储数据恢复环境: EMC CX4-480存储,该存储中有10块硬盘,其中有3块磁盘为掉线磁盘,另外7块磁盘组成一组RAID5磁盘阵列。运维人员在处理掉线磁盘时只添加新的硬盘做rebuild,并没有将掉线的硬盘拔掉,所…

ARCGIS 如何对河流等线条图形进行Smooth处理——具有多个断点高阶版

1.线转点折点(注意!很重要,不是线转点) 2.点转线步骤 ## 3 线的融合 2.1 新建Filed 》短精度类型》利用选择工具的 线文件。全选同一条河流点,进入Tabel的选择界面。给同一条河赋值同一个值。 大功告成!…

文章解读与仿真程序复现思路——电网技术EI\CSCD\北大核心《计及多类型储能调频容量动态申报的电能量与调频市场联合出清方法研究》

本专栏栏目提供文章与程序复现思路,具体已有的论文与论文源程序可翻阅本博主免费的专栏栏目《论文与完整程序》 论文与完整源程序_电网论文源程序的博客-CSDN博客https://blog.csdn.net/liang674027206/category_12531414.html 电网论文源程序-CSDN博客电网论文源…

深入探究RTOS的任务调度

阅读引言: 此文将会从一个工程文件, 一步一步的分析RTOS的任务调度实现, 这里选用FreeRTOS分析, 别的也差不多的, 可能在细节上有少许不一样。 目录 1, 常见嵌入式实时操作系统 2, 任务调度的…

HDFS 面试题(一)

1. 简述什么是HDFS,以及HDFS作用 ? HDFS,全称为Hadoop Distributed File System,即Hadoop分布式文件系统,是一个分布式文件系统,由Apache Hadoop项目的一部分。它被设计用来在廉价的硬件上运行&#xff0c…

练习题-18 计算两个积分

计算积分 I ∫ R e − t 4 d t . I\int_{\mathbb{R}} e^{-t^4} dt. I∫R​e−t4dt. 解:令 x t 4 xt^4 xt4. 则 I 2 ∫ 0 ∞ e − x ⋅ 1 4 ⋅ x − 3 / 4 d x 1 2 Γ ( 1 4 ) I 2\int_0^\infty e^{-x} \cdot \frac{1}{4}\cdot x^{-3/4} dx\frac{1}{2} \Gamma(…

SQLite Delete 语句

SQLite Delete 语句 SQLite 的 DELETE 语句用于从表中删除数据。它是 SQL 数据库管理中非常基础且重要的操作之一。在使用 DELETE 语句时,可以删除表中的特定行,也可以删除整个表的数据。本文将详细介绍 SQLite 中的 DELETE 语句,包括其语法…

【机器学习】第11章 神经网络与深度学习(重中之重)

一、概念 1.神经元模型 (1)神经网络的基本组成单位 (2)生物上,每个神经元通过树突接受来自其他被激活神经元的信息,通过轴突释放出来的化学递质改变当前神经元内的电位。当神经元内的电位累计到一个水平时…

Linux虚拟化技术概览:从KVM到Docker

Linux虚拟化技术是现代数据中心和云基础设施的核心组成部分,它允许在同一台物理服务器上运行多个独立的操作系统实例,从而提高资源利用率、灵活性和安全性。从KVM到Docker,Linux虚拟化经历了从传统虚拟机到轻量级容器的演进,下面是…

时间戳转时间格式小记——个位数月份 如何去掉补位0的情况

工作中遇到的问题小记一下 时间戳:1710172800 时间格式:2024-03-12 00:00:00 在无要求的情况下这种情况很OK 当我们需要时间格式为:2024-3-12 00:00:00 那常规情况就不适用 解决: import time sjc 1710172800 # Windows 环境…

Kubernetes Dashboard

Dashboard Dashboard 的项目网站,可以查看说明文档和基本的使用情况。 下载yaml wget https://raw.githubusercontent.com/kubernetes/dashboard/v2.6.0/aio/deploy/recommended.yaml注意需要修改镜像,不然可能会拉去不下来镜像 cat recommended.yaml…

人工智能--自然语言处理NLP概述

欢迎来到 Papicatch的博客 目录 🍉引言 🍈基本概念 🍈核心技术 🍈常用模型和方法 🍈应用领域 🍈挑战和未来发展 🍉案例分析 🍈机器翻译中的BERT模型 🍈情感分析在…

【C++】编程核心概念——核心特征

C编程核心概念 在C中,封装、继承和多态是面向对象编程的三大核心概念(特征)。这些特性为程序员提供了一种创建和管理复杂系统的方法,同时保持了代码的模块化、可重用性和可扩展性。下面分别解释这三个概念的作用: 封装…

java kotlin 命令行解析

在 Java 中解析命令行字符串可以使用以下几种方法: 1. 使用 args 参数 当程序启动时,主方法(main 方法)会接收一个 String 数组作为参数,即 args。这些参数就是从命令行传递过来的。 示例代码: object …

Ansible——template模块

目录 基本参数 选项参数 高级参数 基本用法 示例: 示例一:Nginx 配置 1. 目录结构 2. 模板文件:nginx.conf.j2 3. Playbook 文件:deploy_nginx.yml 4. 执行 Playbook 示例二:MySQL 配置 1. 目录结构 2. …

LLM大语言模型(GPT)的分布式预训练与微调及部署

LLM大语言模型(GPT)的分布式预训练与微调及部署 实现方案:设计并实现了一个大规模语言模型(GPT)的分布式预训练,结合RAG(文档、MySQL)、Agent、LLM连网等技术在基座上微调,以提高模型在特定领域任务上的性能和效率。 …

函数(下) C语言

函数下 嵌套调用和链式访问1. 嵌套调用2. 链式访问 函数的声明和定义1. 单个文件2. 多个文件3. static 和 extern3.1 static 嵌套调用和链式访问 1. 嵌套调用 嵌套调用就是函数之间的互相调用,每个函数就像⼀个乐高零件,正是因为多个乐高的零件互相无缝…