python初学者知识点笔记更新

文章目录

  • 1.main函数入口
  • 2.__init__.py 文件作用
  • 3.from .applications import server解释
  • 4.变量没有修饰,直接创建使用
    • 1. 内置数据类型和函数
    • 2. 类和对象
    • 3.总结
  • 5.mod = app.__module__
  • 6.集合对比区分
    • 集合类型:
    • 混合集合类型
  • 7.安装包失败

1.main函数入口

老程序员欢迎加入扣扣组织,783092701

if __name__ == '__main__':

这段代码是Python的程序入口,它会在程序运行时自动执行。在Python中,如果想让一个文件作为程序运行,需要在文件的第一行添加__name__ == '__main__'这行代码。这行代码的作用是让Python知道该文件是否是程序的入口文件,如果是,则执行文件中的代码。

2.init.py 文件作用

init.py 文件是一个特殊文件,它的存在告诉Python解释器这个目录应该被视为一个Python包(package)。这个文件可以是空的,但它必须存在(在Python 3.3及以后的版本中,对于纯Python包来说,init.py 文件不再是必需的,但如果你希望包在旧版本的Python中也能工作,或者你的包包含了一些需要在包被导入时执行的初始化代码,那么仍然需要这个文件)。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在__init__函数中,可以定义该类的属性和成员变量,并对它们进行初始化。例如:

class Person:
    def __init__(self, name, age):
        self.name = name
        self.age = age

这段代码是Python类的构造函数,它用于初始化类的对象。

3.from .applications import server解释

从当前包(即包含这个导入语句的文件的包)中导入名为 applications 的子包或模块,并从这个子包或模块中进一步导入名为 server 的内容

对比 from fastapi import FastAPI
从fastapi这个包中导入FastAPI类

4.变量没有修饰,直接创建使用

函数式编程,有些东西都不知道哪里来的就用起来了
直接创建变量使用,这个名可以不叫response
在这里插入图片描述
分析,response = await call_next(request) 这行代码之所以不需要对 response 进行额外的修饰(比如使用 async 关键字),是因为 await 已经处理了异步调用的等待和结果接收。这里的 response 变量简单地用于存储 await call_next(request) 执行完成后的结果,这个结果通常是下一个中间件或路由处理函数返回的响应对象。

1. 内置数据类型和函数

对于Python的内置数据类型(如整数、浮点数、字符串、列表、元组、字典、集合等)和内置函数,你通常不需要显式地定义对象来使用它们。这些类型和函数已经存在于Python的内置命名空间中,你可以直接使用它们。

# 使用内置数据类型  
num = 10  # 整数  
text = "Hello, World!"  # 字符串  
lst = [1, 2, 3]  # 列表  
  
# 使用内置函数  
result = len(lst)  # 调用内置函数len来获取列表的长度

2. 类和对象

当你使用Python的类(class)来定义自己的数据结构或行为时,你需要创建(或“实例化”)类的对象来使用它。这是因为类是用于创建对象的蓝图或模板,而对象则是根据这个蓝图创建的具体实例。

class MyClass:  
    def __init__(self, name):  
        self.name = name  
  
    def greet(self):  
        print(f"Hello, {self.name}!")  
  
# 实例化MyClass类  
my_object = MyClass("Alice")  
  
# 使用对象的方法  
my_object.greet()  # 输出: Hello, Alice!

在这个例子中,MyClass 是一个类定义,它包含了一个构造函数 init 和一个方法 greet。要使用这个类,我们首先必须实例化它,创建一个对象 my_object,然后我们可以通过这个对象来调用 greet 方法。

3.总结

虽然Python是一种面向对象的语言,但它也支持函数式编程。在函数式编程中,你更倾向于使用函数而不是对象,但这并不意味着你不需要定义函数就可以直接使用它(因为你还是需要知道函数名才能调用它)。

5.mod = app.module

解释:

  • 它执行了一个特定的操作来获取与app对象相关联的模块(module)的名称。这里,app可以是一个类、函数、变量或者任何定义在某个模块中的对象。__module__是一个特殊的属性,它存在于几乎所有的Python对象中(除了内建类型和一些特殊情况),用于指示该对象是在哪个模块中定义的。
  • app.__module__返回的是一个字符串,表示app对象所在模块的名称。这个名称通常包括模块的文件名和(如果模块是包的一部分)其包的路径。

举例

  • 如果app是在名为myapp.py的文件中定义的,并且该文件位于Python的搜索路径中的某个目录下,那么app.__module__的值可能就是’myapp’(如果myapp.py位于顶层目录)或者是一个更长的路径,比如’mypackage.subpackage.myapp’(如果myapp.py是mypackage.subpackage包的一部分)。

使用场景

  • 这个特性在动态编程、调试、日志记录或任何需要知道对象来源模块的场景中都非常有用。例如,你可能想要记录一个函数或方法被调用的模块,以便更好地理解程序的执行流程或调试问题。

注意bug:
需要注意的是,对于内建类型(如int、list等)和一些特殊情况(如使用exec或eval动态创建的对象),__module__属性可能不存在或返回的值可能不是你期望的。在这些情况下,尝试访问__module__属性可能会引发AttributeError异常。

6.集合对比区分

集合类型:

列表(List),集合(Set),元组(Tuple),字典(Dictionary)

  • 有序:列表(List),元组(Tuple)
  • 不可重复:集合(Set)
  • key-value:字典(Dictionary),元组列表
  • 不可更改:元组(Tuple)
  • 大小中括号:
    {}:集合(Set),字典(Dictionary)
    []:列表(List)
    ():元组(Tuple)

混合集合类型

元组列表,元组嵌套,深嵌套,字典列表等等

print("===============定义元组,遍历输出===============")
# 元组是一种有序且不可更改的集合
fruits = ('apple', 'banana', 'cherry')
for fruit in fruits:
    print(fruit)

print("===============定义字典,遍历输出===============")
# 字典一个无序的、可变的、有索引的集合
student_info = {
    'Tom': 95,
    'Jerry': 90,
    'Mary': 85,
    'Bob': 98}
for name, score in student_info.items():
    print(f"{name}: {score}")

print("===============定义列表,遍历输出================")
# 定义一个列表 一种有序且可更改的集合
students = ['Alice', 'Bob', 'Charlie']
for student in students:
    print(student)

print("===============定义set可变集合,遍历输出================")
# set集合,无序且不包含重复元素的集合
my_set = set()

# 添加元素到集合
my_set.add(1)
my_set.add(2)
my_set.add(3)

# 遍历输出集合中的元素
for item in my_set:
    print(item)
print("=====定义集合,遍历输出====")
# 定义一个集合,元素为字符串
names = {'Alice', 'Bob', 'Bob', 'Charlie'}

# 使用 for 循环遍历集合中的元素
for name in names:
    print(name)

# 创建一个不可变集合
fruits = frozenset(['apple', 'banana', 'cherry'])

# 使用 for 循环遍历集合中的元素
for fruit in fruits:
    print(fruit)

print("===============混合类型================")
print("===============定义元组列表,遍历输出================")
# 元组列表
names = [('John', 25), ('Alice', 30), ('Bob', 35)]

for _, member in names:
    print(f"Member: {member}")

# 遍历元组 set 集合
# 1. 创建一个元组 set 集合
student_scores = {'Alice': 95, 'Bob': 92, 'Charlie': 97}
# 2. 使用 for 循环遍历该集合
for student, score in student_scores.items():
    print(f'{student}: {score}')

# 遍历元组字典
# 首先定义一个元组字典
student_info = (
    ('Alice', 'Math', 95),
    ('Bob', 'English', 90),
    ('Charlie', 'Physics', 98)
)

# 遍历元组字典
for student in student_info:
    # 提取学生姓名、课程名称和成绩
    name, course, score = student
    # 打印学生信息
    print(f'Student name: {name}')
    print(f'Course: {course}')
    print(f'Score: {score}')
    print()

# 创建一个嵌套元组的例子
nested_tuple = (1, 2, (3, 4, 5), 6)

# 访问嵌套元组中的元素
print(nested_tuple)  # 输出: (1, 2, (3, 4, 5), 6)
print(nested_tuple[2])  # 输出: (3, 4, 5),这是嵌套元组
print(nested_tuple[2][1])  # 输出: 4,这是嵌套元组中的第二个元素

# 嵌套可以非常深
deep_nested_tuple = (1, (2, (3, (4, (5, 6)))), 7)
print(deep_nested_tuple)  # 输出: (1, (2, (3, (4, (5, 6)))), 7)
print(deep_nested_tuple[1][1])

print(deep_nested_tuple[1][1][1])
print(deep_nested_tuple[1][1][1][1])
# 大模型给出的错误答案
# print(deep_nested_tuple[1][1][2][1][0])

multi_nested_tuple = (1, (2, (3, (4, 5))))
print(multi_nested_tuple[1][1][1][0])


# 字典列表
# 实现一个字典列表,列表中每个元素是一个字典
# 字典的键是字符串,值可以是任意类型
# 实现函数:
# 创建一个空的字典列表
def create_dict_list():
    return []


# 添加一个元素到字典列表中
# 参数:
# dict_list - 字典列表
# key - 字典的键
# value - 字典的值
def add_element_to_dict_list(dict_list, key, value):
    dict_list.append({key: value})


# 返回字典列表的长度
# 参数:
# dict_list - 字典列表
def get_dict_list_length(dict_list):
    return len(dict_list)


# 返回第 index 个元素
# 参数:
# dict_list - 字典列表
# index - 元素的索引,从 0 开始计算
def get_element_from_dict_list(dict_list, index):
    return dict_list[index]


# 修改第 index 个元素
# 参数:
# dict_list - 字典列表
# index - 元素的索引,从 0 开始计算
# key - 字典的键
# value - 字典的值
def modify_element_in_dict_list(dict_list, index, key, value):
    dict_list[index][key] = value


# 删除第 index 个元素
# 参数:
# dict_list - 字典列表
# index - 元素的索引,从 0 开始计算
def delete_element_from_dict_list(dict_list, index):
    del dict_list[index]


# 判断字典列表中是否包含某个元素
# 参数:
# dict_list - 字典列表
# key - 字典的键
def contains_element_in_dict_list(dict_list, key):
    for element in dict_list:
        if key in element:
            return True
    return False


# 遍历字典列表
# 参数:
# dict_list - 字典列表
# 遍历函数的形式为:def visit_element(element):
def traverse_dict_list(dict_list, visit_element):
    for element in dict_list:
        visit_element(element)


# 示例:
dict_list = create_dict_list()
add_element_to_dict_list(dict_list, "name", "alice")
add_element_to_dict_list(dict_list, "age", 20)
print("长度:", get_dict_list_length(dict_list))
print("第 0 个元素:", get_element_from_dict_list(dict_list, 0))
modify_element_in_dict_list(dict_list, 0, "name", "alice2")
delete_element_from_dict_list(dict_list, 1)
print("长度:", get_dict_list_length(dict_list))
print("是否包含 name:", contains_element_in_dict_list(dict_list, "name"))
traverse_dict_list(dict_list, lambda x: print(x))


7.安装包失败

在这里插入图片描述

报错:
Try to run this command from the system terminal. Make sure that you use the correct version of ‘pip’ installed for your Python interpreter located at ‘F:\python-workspaces\TestEnv\venv\Scripts\python.exe’.

问题原因:

解决办法:

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【数学建模与优化】:解析与实践

目录 数学建模概述 1. 什么是数学模型 2. 数学模型的分类 2.1 按应用领域分类 2.2 按建模方法分类 2.3 按是否考虑随机因素分类 2.4 按变量的连续性分类 2.5 按对对象内部规律了解程度分类 2.6 按变量的基本关系分类 2.7 按是否考虑时间变化分类 3. 数学规划及优化模…

【学习笔记】min_25筛

背景 GDCPC2024 出题人:出这道 min25 筛是给大家增加过题数的 [呲牙][大哭][呲牙][大哭] min25筛是干啥的 快速求一个积性函数 F ( x ) F(x) F(x) 的前缀和 这个 F ( x ) F(x) F(x) 需要满足: F ( p ) ∑ i 0 a i p i F(p)\sum_{i0}a_ip^i F(p)∑…

React Element介绍

React Element是React中的核心概念之一,它代表了React应用中的UI元素。React Element并不是真实的DOM节点,而是一个轻量级的、不可变的、描述性的对象,它包含了创建UI所需的类型(type)、属性(props&#xf…

Docker 安装ros 使用rviz 等等图形化程序

Docker 安装ros 使用rviz 等等图形化程序 ubuntu 版本与ros 发行版本对应 如何安装其它版本ros 此时考虑使用docker 易于维护 地址: https://hub.docker.com/r/osrf/ros 我主机是 ubuntu22.04 使用这个标签 melodic-desktop-full 1 clone 镜像到本机 docker pu…

Pytorch使用Dataset加载数据

1、前言: 在阅读之前,需要配置好对应pytorch版本。 对于一般学习,使用cpu版本的即可。参考教程点我 导入pytorch包,使用如下命令即可。 import torch # 注意虽然叫pytorch,但是在引用时是引用torch2、神经网络获取…

鞭炮插画:成都亚恒丰创教育科技有限公司

鞭炮插画:年味里的绚烂记忆 在岁末年初的温柔时光里,总有一抹色彩,能瞬间唤醒沉睡的年味——那便是鞭炮插画中跃动的红与金,成都亚恒丰创教育科技有限公司 它们不仅仅是纸与墨的交织,更是情感与记忆的桥梁&#xff0c…

EI美国工程索引的使用方法及个人使用途径

Ei Compendex (美国工程索引)是全球最全面的工程索引数据库,涵盖了6大工科学科领域(电子通信、建筑环境、能源资源、化工化学、机械控制及通用工程),超过190个子学科领域(涉及核技术、生物工程、交通运输、化学和工艺工程、照明和…

科研绘图系列:R语言金字塔图(pyramid plot)

介绍 金字塔图(Pyramid chart)是一种用于展示人口统计数据的图表,特别是用于展示不同年龄段的人口数量。这种图表通常用于展示人口结构,比如性别和年龄的分布。 特点: 年龄分层:金字塔图按年龄分层,每一层代表一个年龄组。性别区分:通常,男性和女性的数据会被分别展…

[K8S]一、Flink on K8S

Kubernetes | Apache Flink 先编辑好这5个配置文件,然后再直接执行 kubectl create -f ./ kubectl get all kubectl get nodes kubectl get pods kubectl get pod -o wide kubectl get cm -- 获取所有的configmap 配置文件 kubectl logs pod_name -- 查看…

C语言 ——— 将一句英语短句中的单词进行倒置

目录 题目要求 代码实现 题目要求 将一句英语短句中的单词进行倒置&#xff0c;标点符号不倒置 如&#xff1a; 输入&#xff1a;"I like chongqing very much," 输出&#xff1a;"much, very chongqing like I" 代码实现 #include<stdio.h> #i…

ssh升级

文章目录 ssh升级一、解包ssh、ssl二、更新安装ssl三、手动更新手动复制库文件四、创建符号链接五、更新库路径六、验证库文件七、设置库路径环境变量八、配置、编译、安装OpenSSH&#xff1a;意外&#xff1a;缺少 zlib 的开发库解决方法&#xff1a; 九、刷新ssh服务、查看ss…

Nginx的访问限制与访问控制

访问限制 访问限制是一种防止恶意访问的常用手段&#xff0c;可以指定同一IP地址在固定时间内的访问次数&#xff0c;或者指定同一IP地址在固定时间内建立连接的次数&#xff0c;若超过网站指定的次数访问将不成功。 请求频率限制配置 请求频率限制是限制客户端固定时间内发…

2024年职业院校大数据实验室建设及大数据实训平台整体解决方案

随着大数据技术的飞速发展&#xff0c;职业院校的大数据实验室建设与实训平台的打造成为教育领域关注的焦点。为了培养适应时代需求的专业人才&#xff0c;2024年的职业院校大数据实验室建设将遵循以下原则与策略&#xff1a; 首要任务是明确实验室建设的学科定位&#xff0c;…

OpenCV:python图像旋转,cv2.getRotationMatrix2D 和 cv2.warpAffine 函数

前言 仅供个人学习用&#xff0c;如果对各位朋友有参考价值&#xff0c;给个赞或者收藏吧 ^_^ 一. cv2.getRotationMatrix2D(center, angle, scale) 1.1 参数说明 parameters center&#xff1a;旋转中心坐标&#xff0c;是一个元组参数(col, row) angle&#xff1a;旋转角度…

【权威发布】2024年互联网技术与信息工程国际会议(ITIEIC 2024)

2024年互联网技术与信息工程国际会议 2024 International Conference on Internet Technology and Information Engineering 【1】会议简介 2024年互联网技术与信息工程国际会议是一个集学术性、实践性和国际性于一体的盛会&#xff0c;将为全球互联网技术与信息工程领域的发展…

C判断一个点在三角形上

背景 鼠标操作时&#xff0c;经常要判断是否命中显示控件&#xff0c;特开发此算法快速判断。 原理 三角形三等分点定理是指在任意三角形ABC中&#xff0c;可以找到三个点D、E和F&#xff0c;使得线段AD、BE和CF均等分三角形ABC。 这意味着三个等分点分别位于三个边界上&…

图解PyTorch中的Transpose操作

在PyTorch中&#xff0c;我们时常会对张量进行转置操作。若张量是二维的&#xff0c;则非常容易理解。若张量维度更高&#xff0c;则会令人摸不到头脑。 高维张量究竟是怎么转置的&#xff1f;简单来说&#xff0c;就是将参与转置的维度抽出来&#xff0c;将内侧的子张量视为一…

EasyCVR视频技术:城市电力抢险的“千里眼”,助力抢险可视化

随着城市化进程的加速和电力需求的不断增长&#xff0c;电力系统的稳定运行对于城市的正常运转至关重要。然而&#xff0c;自然灾害、设备故障等因素常常导致电力中断&#xff0c;给城市居民的生活和企业的生产带来严重影响。在这种情况下&#xff0c;快速、高效的电力抢险工作…

Chromium CI/CD 之Jenkins实用指南2024-如何创建新节点(三)

1. 前言 在前一篇《Jenkins实用指南2024-系统基本配置&#xff08;二&#xff09;》中&#xff0c;我们详细介绍了如何对Jenkins进行基本配置&#xff0c;包括系统设置、安全配置、插件管理以及创建第一个Job。通过这些配置&#xff0c;您的Jenkins环境已经具备了基本的功能和…

昇思25天学习打卡营第09天|保存与加载

在训练网络模型的过程中&#xff0c;实际上我们希望保存中间和最后的结果&#xff0c;用于微调&#xff08;fine-tune&#xff09;和后续的模型推理与部署&#xff0c;本章节我们将介绍如何保存与加载模型。 import numpy as np import mindspore from mindspore import nn fr…