蘑菇书(EasyRL)学习笔记(2)

1、序列决策

1.1、智能体和环境

        如下图所示,序列决策过程是智能体与环境之间的交互,智能体通过动作影响环境,环境则返回观测和奖励。智能体的目标是从这些反馈中学习出能最大化长期奖励的策略,这一过程通过不断试错和调整实现强化学习的核心。

1.2、奖励

        奖励是环境给予智能体的一种标量反馈信号,反映智能体在某一步策略选择的表现。强化学习的目标是最大化期望的累积奖励,不同环境中奖励的定义也各不相同。例如:

  • 在象棋中,赢得比赛时智能体获得正奖励,输则获得负奖励;
  • 在股票管理中,奖励基于股票的收益和损失;
  • 在雅达利游戏中,奖励体现在游戏分数的增减,稀疏奖励会增加游戏的难度。

        通过这些奖励机制,智能体可以评估并优化其策略。 

1.3、序列决策 

        在强化学习环境中,智能体的目标是通过选择一系列动作来最大化长期奖励。由于奖励通常是延迟的,智能体在采取某个动作后,可能要很久才能得知其实际影响。例如,如下图所示,在雅达利的Pong游戏中,智能体在游戏结束时才知道之前的动作是否有效。这个过程中,近期奖励与远期奖励的权衡成为一个重要课题,研究如何帮助智能体获得更多的远期奖励。

        智能体在与环境交互时会获得一系列的观测、动作和奖励,形成历史序列:

H_{t} = o_{0}, a_{1}, r_{1}, . . . , o_{t}, a_{t}, r_{t}

        在做出当前动作时,智能体会基于之前的历史数据进行决策,因此整个游戏状态可以视为关于历史的函数:

s_{t} = f(H_t) 

完全可观测环境

  • 定义:当智能体能够观察到环境的所有状态时,称为完全可观测环境。

  • 状态更新

    • 环境状态更新:s_{et} = f_e(H_t)

    • 智能体状态更新:s_{at} = f_a(H_t)

  • 马尔可夫决策过程(MDP):

    • 状态等价:o_t = s_{et} = s_{at}

部分可观测环境

  • 定义:当智能体的观测不能包含环境运作的所有状态时,称为部分可观测环境。

  • 示例

    • 在黑杰克游戏中,智能体只能看到牌面上的牌。

    • 在雅达利游戏中,智能体只能看到当前的电视画面。

  • 部分可观测马尔可夫决策过程(POMDP):

    • 描述:部分可观测马尔可夫决策过程是马尔可夫决策过程的一种泛化,具有马尔可夫性质,但智能体只能感知部分观测值。

    • 示例:在自动驾驶中,智能体只能感知传感器采集的有限环境信息。

  • 七元组描述:POMDP 可以用以下七元组描述:

    • (S, A, T, R, \Omega, O, \gamma)

      • S:状态空间(隐变量)

      • A:动作空间

      • T(s'|s, a) :状态转移概率

      • R:奖励函数

      • \Omega(o|s, a) :观测概率

      • O:观测空间

      • \gamma:折扣因子

Q: 状态和观测有什么关系?

A: 在深度强化学习中,状态是对环境的完整描述,包含所有决策所需的信息,而观测则是对状态的部分描述,可能遗漏关键信息。例如,在自动驾驶中,状态可能包括车辆的位置、速度和周围环境信息,而观测可能只是摄像头捕获的图像或激光雷达的距离数据,无法全面反映车辆的真实状态。

状态和观测通常用实值的向量、矩阵或更高阶的张量来表示。例如,视觉观测可以通过 RGB 像素值的矩阵表示,每个像素的颜色由三个值(红、绿、蓝)组成;而机器人的状态则可以用关节的角度和速度构成的向量表示,提供有关机器人的运动和位置的信息。这种表示方法使得算法能够有效地处理复杂数据,进行学习和决策。

2、动作空间

定义:有效动作的集合在给定的环境中被称为动作空间(action space)。

离散动作空间(Discrete Action Space)

  • 特征:智能体的动作数量是有限的。

  • 示例

    • 在雅达利游戏中,智能体可以选择的动作如“向左移动”、“向右移动”、“跳跃”、“射击”等,构成有限的动作集合。

    • 在围棋(Go)中,智能体可以选择的动作是有限的落子位置。

连续动作空间(Continuous Action Space)

  • 特征:动作是实值的向量,动作数量是无限的。

  • 示例

    • 在物理世界中控制一个智能体,例如一个走迷宫的机器人,如果它可以向任意角度(例如360°)进行移动,则其动作空间为连续动作空间。

    • 另一个例子是一个可以调节速度和方向的无人驾驶汽车,其动作空间也是连续的。

3、强化学习智能体的组成成分和类型

        对于一个强化学习智能体,它可能有一个或多个如下的组成成分。这些组成部分共同作用,使智能体能够在复杂的环境中进行学习和决策。

  1. 策略(Policy)

    • 定义:策略是智能体选择下一步动作的方法或规则。

    • 功能:策略可以是确定性的(给定状态下总是选择同一动作)或随机的(给定状态下以一定概率选择动作)。智能体通过策略来探索和利用环境,以最大化长期奖励。

  2. 价值函数(Value Function)

    1. 定义:价值函数用于评估当前状态的价值,即智能体进入某个状态后,未来奖励的期望总和。

    2. 功能

      1. 价值函数的值越大,说明智能体进入该状态后能够获得的奖励潜力越大。

      2. 通常有两种类型的价值函数:

        1. 状态价值函数(V(s)):表示从状态s开始的期望奖励。

        2. 动作价值函数(Q(s, a)):表示在状态s下采取动作a后的期望奖励。

  3. 模型(Model)

    1. 定义:模型是智能体对环境的理解,表示环境状态的转移和奖励结构。

    2. 功能

      1. 模型用于预测环境的行为,包括状态转移概率和奖励分布。

      2. 在某些强化学习方法中,智能体可以利用模型进行规划(如模拟未来状态和奖励),以制定更优的策略。

3.1、策略(Policy)

        策略是智能体的动作模型,它决定了智能体的动作。它其实是一个函数,用于把输入的状态变成动作。策略可分为两种:随机性策略和确定性策略。

        通常情况下,强化学习一般使用随机性策略,随机性策略有很多优点。比如,在学习时可以通过引入一定的随机性来更好地探索环境;随机性策略的动作具有多样性,这一点在多个智能体博弈时非常重要。采用确定性策略的智能体总是对同样的状态采取相同的动作,这会导致它的策略很容易被对手预测。

随机性策略(Stochastic Policy)

  • 表示:用 π 函数表示,即 \pi(a|s) = p(a_t = a | s_t = s)

  • 功能:输入一个状态 s,输出一个动作的概率分布。通过对该概率分布进行采样,智能体可以选择一个动作。

  • 示例:如果在某个状态下,智能体有 0.7 的概率选择“向左移动”,0.3 的概率选择“向右移动”,那么通过采样,智能体可能会选择“向左移动”或“向右移动”。

确定性策略(Deterministic Policy)

  • 表示:确定性策略直接选择最有可能的动作,即 a^* = \arg\max_a \pi(a | s)

  • 功能:在给定状态下,智能体始终选择使得价值最大的动作。

  • 示例:如下图所示,在雅达利游戏中,输入当前游戏的一帧图像,策略函数输出决定智能体是否向左或向右移动。

3.2、价值函数(Value Function)

  • 定义:价值函数用于评估状态的好坏,其值是对未来奖励的预测。我们希望在尽可能短的时间内获得尽可能多的奖励。

  • 折扣因子(Discount Factor):在价值函数中引入折扣因子 \gamma(取值范围 0 \leq \gamma < 1),反映了未来奖励的价值随着时间的推移而减少。

  • 数学表达V^\pi(s) = E_\pi[G_t | s_t = s] = E_\pi\left[\sum_{k=0}^{\infty} \gamma^k r_{t+k+1} | s_t = s\right]

示例

        假设在一个简单的迷宫游戏中,智能体在状态 s下获得的奖励序列为 [1, 2, 3]。如果我们选择 \gamma = 0.9,那么价值函数的计算为:

V^\pi(s) = 1 + 0.9 \cdot 2 + 0.9^2 \cdot 3 = 1 + 1.8 + 2.43 \approx 5.21

Q函数 

        我们还有一种价值函数:Q 函数。Q 函数里面包含两个变量:状态和动作。表示在特定状态下采取特定动作后,未来获得奖励的期望。其定义为:

Q^\pi(s, a) = E_\pi[G_t | s_t = s, a_t = a]=E_\pi\left[\sum_{k=0}^{\infty} \gamma^k r_{t+k+1} | s_t = s, a_t = a\right]

示例

假设在同一个迷宫游戏中,智能体在状态 s下选择动作 a1a_1a1​ 时获得的奖励序列为 [1, 2],选择动作 a_2​ 时获得的奖励序列为 [2, 3]。如果我们依然选择 \gamma = 0.9,那么 Q 函数的计算为:

  • 对于动作 a_1​:

Q^\pi(s, a_1) = 1 + 0.9 \cdot 2 = 1 + 1.8 = 2.8

  • 对于动作 a_2

Q^\pi(s, a_2) = 2 + 0.9 \cdot 3 = 2 + 2.7 = 4.7

优势

  • 使用 Q 函数:通过学习 Q 函数,智能体可以在特定状态下选择最优动作。具体来说,当我们得到 Q 函数后,进入某个状态要采取的最优动作可以通过选择最大 Q 值的动作得到:

a^* = \arg\max_a Q^\pi(s, a)

在这个例子中,智能体会选择动作 a_2,因为 Q^\pi(s, a_2) = 2 + 0.9 \cdot 3 = 2 + 2.7 = 4.7是最高的。

3.3、模型(Model)

        第 3 个组成部分是模型,模型决定了下一步的状态。下一步的状态取决于当前的状态以及当前采取的动作。它由状态转移概率和奖励函数两个部分组成。状态转移概率即: 

p_{a}^{ss'} = p(s_{t+1} = s' | s_t = s, a_t = a)

这个表达式表示在状态 s下采取动作 a后,转移到状态 s' 的概率。

奖励函数

  • 数学表达R(s, a) = E[r_{t+1} | s_t = s, a_t = a]

奖励函数表示在当前状态采取某个动作后,期望获得的奖励。

马尔可夫决策过程(MDP)

  • 当策略、价值函数和模型三个组成部分都确定后,就形成了一个马尔可夫决策过程。如下图所示,这个决策过程可视化了状态之间的转移以及采取的动作。

示例:走迷宫的例子

        假设我们有一个迷宫环境,如下图所示,智能体需要从起点(start)到达终点(goal)。每走一步,智能体会获得 −1 的奖励。智能体可以采取的动作是往上、下、左、右走,当前状态由智能体所在的位置描述。

基于策略的强化学习(Policy-Based RL)
  • 在这种方法下,经过学习后,智能体会在每个状态得到一个最佳动作。

  • 示例:如下图所示,在起点位置,最佳动作是往右走;在第二格,最佳动作是往上走;在第三格,最佳动作是往右走。通过这样的策略,智能体能够快速到达终点。

基于价值的强化学习(Value-Based RL)
  • 在这种方法下,智能体利用价值函数作为导向,每个状态返回一个价值。

  • 示例:如下图所示,在起点位置的价值是 −16,因为最快可以 16 步到达终点;当智能体接近终点时,价值逐渐增大。例如,第二格的价值是 −15,智能体比较上、下两格的价值,发现上面格子的价值变为 −14,而下面的价值是 −16,因此智能体会选择往上走。

        通过这两种不同的强化学习方法,智能体能够根据策略或价值评估来找到最佳路径,快速到达终点。这种结构化的学习方式使得智能体在复杂环境中能有效决策。

3.4、强化学习智能体类型

3.4.1、基于价值的智能体与基于策略的智能体

  • 基于价值的智能体(Value-Based Agent)
    • 定义:这种智能体显式地学习价值函数,并通过该价值函数隐式地学习策略。

    • 特点

      • 通过评估状态或状态-动作对的价值,智能体能够推导出最佳策略。

      • 通常使用 Q 函数或状态价值函数来指导决策。

    • 示例:Q-learning 算法就是一种典型的基于价值的学习方法,智能体通过学习 Q 值来选择最佳动作。

  • 基于策略的智能体(Policy-Based Agent)
    • 定义:这种智能体直接学习策略,给定一个状态时输出对应动作的概率。

    • 特点

      • 不学习价值函数,而是专注于优化策略本身。

      • 可以有效处理连续动作空间和高维状态空间。

    • 示例:策略梯度方法是基于策略的强化学习方法,智能体通过优化策略参数来提高预期奖励。 

演员-评论员智能体(Actor-Critic Agent)

  • 定义:这种智能体同时学习策略和价值函数,通过两者的交互来得到最佳动作。

  • 特点

    • “演员”(Actor)负责选择动作,即直接优化策略;“评论员”(Critic)则评估当前策略的价值,即学习价值函数。

    • 结合了基于价值和基于策略的优点,能够更高效地学习。

  • 示例:A3C(Asynchronous Actor-Critic)算法就是一种流行的演员-评论员方法,利用多个智能体并行学习来提高训练效率。

Q: 基于策略和基于价值的强化学习方法有什么区别?

A: 基于策略和基于价值的强化学习方法的主要区别在于它们如何做出决策和优化。

  1. 基于策略的方法:

    • 定义: 智能体直接学习一个策略,即在给定状态下选择动作的概率分布。

    • 优化方式: 通过试探和调整策略,以最大化预期奖励。

    • 例子: 想象一个迷宫,智能体通过不断尝试不同的路径(策略),学习哪条路径能更快到达出口。

    • 算法: 策略梯度(Policy Gradient)算法。

  2. 基于价值的方法:

    • 定义: 智能体维护一个价值函数,评估不同状态和动作的价值。

    • 优化方式: 通过选择具有最高价值的动作来决策,而不需要显式地定义策略。

    • 例子: 在同一个迷宫中,智能体评估每个位置(状态)的价值,并选择价值最高的方向前进。

    • 算法: Q学习(Q-learning)、Sarsa等。

Q: 可以给出一个简单的例子吗?

A: 

  • 基于策略的例子:

    • 假设有一个智能体在玩投篮游戏。它会尝试不同的投篮方式(例如跳投、站立投篮等),根据每种方式的成功率调整自己的投篮策略。最终,智能体会选择最有可能得分的投篮方式。

  • 基于价值的例子:

    • 同样是投篮游戏,智能体会记录每个位置的投篮成功率,并为每个位置计算一个价值。比如,离篮筐较近的位置价值高,离得较远的位置价值低。智能体会选择价值最高的位置进行投篮。

3.4.2、有模型强化学习智能体与免模型强化学习智能体

智能体分类
  • 有模型(model-based)强化学习:智能体通过学习状态转移函数和奖励函数来进行决策,能够构建虚拟世界进行规划。

  • 免模型(model-free)强化学习:智能体不对环境进行建模,通过学习价值函数和策略函数直接与真实环境交互。

 马尔可夫决策过程:                

        强化学习任务可以用四元组 <S, A, P, R> 定义:

  •                 S:状态集合
  •                 A:动作集合
  •                 P:状态转移函数
  •                 R:奖励函数

        如果这个四元组中所有元素均已知,且状态集合和动作集合在有限步数内是有限集,则智能体可以对真实环境进行建模,构建一个虚拟世界来模拟真实环境中的状态和交互反应。具体来说,当智能体知道状态转移函数P(s_{t+1} | s_t, a_t) 和奖励函数 R(s_t, a_t) 后,它就能知道在某一状态下执行某一动作后能带来的奖励和环境的下一状态,这样智能体就不需要在真实环境中采取动作,直接在虚拟世界中学习和规划策略即可。这种学习方法称为有模型强化学习。有模型强化学习的流程如下图所示。

        然而在实际应用中,智能体并不是那么容易就能知晓马尔可夫决策过程中的所有元素的。通常情况下,状态转移函数和奖励函数很难估计,甚至连环境中的状态都可能是未知的,这时就需要采用免模型强化学习。免模型强化学习没有对真实环境进行建模,智能体只能在真实环境中通过一定的策略来执行动作,等待奖励和状态迁移,然后根据这些反馈信息来更新动作策略,这样反复迭代直到学习到最优策略。

Q:有模型强化学习和免模型强化学习有什么区别?

A: 有模型强化学习和免模型强化学习的主要区别在于是否需要对真实环境进行建模。

  • 有模型强化学习:

    • 智能体通过学习环境的状态转移和奖励函数,构建一个虚拟世界。

    • 同时在真实环境和虚拟世界中进行学习。

  • 免模型强化学习:

    • 智能体不对环境进行建模。

    • 直接与真实环境交互,通过反馈信息来学习最优策略。

简单来说,有模型学习需要构建环境模型,而免模型学习则完全依赖于与环境的直接交互。

        有模型强化学习与免模型强化学习的主要区别在于前者需要对真实环境进行建模。具体来说,有模型强化学习能够在智能体执行动作之前预测下一步的状态和奖励,而免模型强化学习通常依赖大量的数据采样来估计状态、动作及奖励函数,从而优化策略。

        在实际应用中,如果能对环境进行建模,则可以使用有模型强化学习。例如,在《太空侵略者》游戏中,免模型深度强化学习需要约两亿帧的游戏画面才能达到理想效果,而有模型学习则可以通过在虚拟世界中进行训练来缓解数据不足的问题。

        然而,免模型学习的泛化性通常优于有模型学习,因为后者需要对真实环境建模,而模型与真实环境之间可能存在差异,这限制了其泛化能力。虽然有模型强化学习具有“想象能力”,可以在虚拟世界中预测未来事件并采取最优策略,但大多数深度强化学习方法还是采用免模型方法,因为其实现相对简单、直观且有丰富的开源资料支持。总体来说,免模型强化学习在许多静态、可描述的环境中表现良好,如雅达利游戏平台,因此在这些情况下直接使用免模型学习即可获得较好效果。

        如下图所示,我们可以把几类模型放到同一个图里面。图中有 3 个组成成分:价值函数、策略和模型。按一个智能体具有三者中的三者、两者或一者的情况可以把它分成很多类。

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

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

相关文章

SQL进阶技巧:如何利用三次指数平滑模型预测商品零售额?

目录 0 问题背景 1 数据准备 2 问题解决 2.1 模型构建 &#xff08;1&#xff09;符号规定 &#xff08;2&#xff09;基本假设 &#xff08;3&#xff09;模型的分析与建立 2.2 模型求解 3 小结 0 问题背景 1960年—1985年全国社会商品零售额如图1 所示 表1全国社…

Rsync远程同步详细介绍

一、rsync介绍 rsync是一款开源的、快速的、多功能的、可实现全量及增量的本地或远程数据同步备份的优秀工具。并且可以不进行改变原有数据的属性信息&#xff0c;实现数据的备份迁移特性。 rsync软件支持跨平台&#xff0c;适用于unix/ linux/windows等多种操作系统平台。rsyn…

无人机之自动控制原理篇

一、飞控系统 无人机飞控是指无人机的飞行控制系统&#xff0c;是无人机的大脑。飞控系统通过传感器、控制器和执行机构三部分实现对无人机的自动控制。 传感器&#xff1a;传感器负责收集无人机的姿态、速度、高度等信息。常见的传感器包括陀螺仪、加速度计、磁力计、气压计、…

得物App获评新奖项,正品保障夯实供应链创新水平

近日&#xff0c;得物App再度获评新奖项——“2024上海市供应链创新与应用优秀案例”。 本次奖项为上海市供应链领域最高奖项&#xff0c;旨在评选出在供应链创新成效上处于领先地位、拥有成功模式和经验的企业。今年以来&#xff0c;得物App已接连获得“上海市质量金奖”、“科…

STM32F103C8T6学习笔记3--按键控制LED灯

1、实验内容 S4、S5分别接PB12和PB13&#xff0c;实验要求&#xff0c;按下S4&#xff0c;D1亮&#xff0c;D2灭&#xff1b;按下S5&#xff0c;D2亮&#xff0c;D1灭。 由于按键学习的是GPIO口的输入功能&#xff0c;和输出功能的配置略有区别。本次通过按键触发相应功能没有…

10.27复习day —— 药销系统分页前(上)

登陆界面 1.auto 水平方向 —— 占据尽量多的空间 margin:auto —— 水平居中 2.块状&#xff1a;block main、div、p 特点&#xff1a; 独占一行 水平方向占满父元素可用空间&#xff08;所以得设置宽度&#xff09; 垂直方向占据空间由其内容大小决定 行内&#xff1a;inlin…

clickhouse运维篇(三):生产环境一键生成配置并快速部署ck集群

前提条件&#xff1a;先了解集群搭建流程是什么样&#xff0c;需要改哪些配置&#xff0c;有哪些环境&#xff0c;这个文章目的是简化部署。 clickhouse运维篇&#xff08;一&#xff09;&#xff1a;docker-compose 快速部署clickhouse集群 clickhouse运维篇&#xff08;二&am…

快速入门kotlin编程(精简但全面版)

注&#xff1a;本文章为个人学习记录&#xff0c;如有错误&#xff0c;欢迎留言指正。 目录 1. 变量 1.1 变量声明 1.2 数据类型 2. 函数 3. 判断语句 3.1 if 3.2 when语句 4. 循环语句 4.1 while 4.2 for-in 5. 类和对象 5.1 类的创建和对象的初始化 5.2 继承 5…

云原生Istio基础

一&#xff0e;Service Mesh 架构 Service Mesh&#xff08;服务网格&#xff09;是一种用于处理服务到服务通信的专用基础设施层。它的主要目的是将微服务之间复杂的通信和治理逻辑从微服务代码中分离出来&#xff0c;放到一个独立的层中进行管理。传统的微服务架构中&#x…

【网页布局技术】项目五 使用CSS设置导航栏

《CSSDIV网页样式与布局案例教程》 徐琴 目录 任务一 制作简单纵向导航栏支撑知识点1&#xff0e;合理利用display:block属性2&#xff0e;利用margin-bottom设置间隔效果3&#xff0e;利用border设置特殊边框 任务二 制作简单横向导航栏任务三 制作带图片效果的横向导航栏任务…

银河麒麟v10 xrdp安装

为了解决科技被卡脖子的问题&#xff0c;国家正在大力推进软硬件系统的信创替代&#xff0c;对于一些平时对Linux操作系统不太熟练的用户来讲提出了更高的挑战和要求。本文以银河麒麟v10 24.03为例带领大家配置kylin v10的远程桌面。 最近公司为了配置信创开发新购了几台银河麒…

什么是x86架构,什么是arm架构

什么是 x86 架构&#xff1f; x86 架构是一种经典的指令集架构&#xff08;ISA&#xff09;&#xff0c;最早由英特尔在 1978 年推出&#xff0c;主要用于 PC、服务器等领域。 它是一种复杂指令集计算&#xff08;CISC&#xff09;架构&#xff0c;支持大量的复杂指令和操作&…

客户的奇葩要求—在CAN网络的基础上加入了CAN_FD的节点

1&#xff1a;客户的奇葩要求 最近的工作中&#xff0c;遇到了一个有点奇葩的事&#xff0c;客户需要开发一个系统&#xff0c;我们负责其中的一个ECU&#xff0c;这个系统采取的是经典11bit ID的CAN网络。 今天突然提了一个要求&#xff0c;说要在网络中&#xff0c;加入支持…

4G 模组的 FTP 应用:技术科普

众所周知FTP协议包括两个组成部分&#xff0c;其一为FTP服务器&#xff0c;其二为FTP客户端&#xff0c;今天我将为大家带来一场4G 模组的 FTP 应用技术科普&#xff1a; 以低功耗模组Air780E核心板为例。 1、FTP 概述 FTP&#xff08;File Transfer Protocol&#xff0c;文件…

PAT甲级-1074 Reversing Linked List

题目 题目大意 给一个链表的头结点和总节点个数&#xff0c;以及k。每k个节点的链表都要翻转。 思路 链表可以用一个结构体数组来存储&#xff0c;先遍历一遍&#xff0c;过滤掉不在链表中的节点。然后将过滤好的节点放入res数组中&#xff0c;每k个元素用一次reverse()&…

44-RK3588s调试 camera-engine-rkaiq(rkaiq_3A_server)

在RK3588s平台上调试imx415 camera sensor 过程中&#xff0c;已经识别到了camera sensor ID&#xff0c;并且可以拿到raw图和isp处理后的图像&#xff0c;但是isp处理后的图像偏绿&#xff0c;来看查看后台服务发现rkaiq_3A_server没有运行&#xff0c;然后单独运行rkaiq_3A_s…

Python 变量在函数中的作用域

什么是局部变量&#xff1f; 作用范围在函数内部&#xff0c;在函数外部无法使用 什么是全局变量&#xff1f; 在函数内部和外部均可使用 如何将函数内定义的变量声明为全局变量&#xff1f; 使用global关键字&#xff0c; global变量 练习&#xff1a; 演示局部变量 #…

百数功能更新——表单提交支持跳转到外部链接并支持传参

百数的表单外链功能允许用户将表单以链接的形式分享给外部用户&#xff0c;外部用户无需登录或加入团队即可访问并填写表单。 本次更新的表单提交后跳转指定链接的功能&#xff0c;在支持跳转内部链接的基础上&#xff0c;支持用户在完成表单填写并提交后&#xff0c;自动跳转…

BSV区块链为供应链管理带来效率革命

​​发表时间&#xff1a;2024年10月10日 供应链管理是众多行业的重中之重&#xff0c;它确保了商品能够从制造商处顺畅地传递到消费者手中。然而&#xff0c;传统的供应链管理面临着许多挑战&#xff0c;包括缺乏透明度、延误、欺诈和协调上的低效率等等。 BSV区块链技术的出…

Linux基础(七):Linux文件与目录管理

Linux文件与目录管理 1.目录与路径1.1 cd1.2 pwd1.3 mkdir1.4 rmdir1.5 ls1.6 cp1.7 rm1.8 mv 2.可执行文件路径的变量&#xff1a;$PATH3.从字符串中获取目录名称和文件名称4.文件内容读取4.1 cat与tac4.2 nl4.3 more和less4.4 head与tail4.5 od 5 使用touch来改变文件的时间6…