local和global的使用区别

type
status
date
slug
summary
tags
category
icon
password
网址
作者
标签
文章链接
发布时间
来源
在 Stata 中,localglobal 都用于定义宏(macros),也就是存储文本或数字字符串的变量。它们最主要的区别在于作用域(scope)

local

local 宏的作用域是局部的,这意味着它们只在定义它们的特定上下文中有效。
  • 定义: 使用 local macro_name = "text"local macro_name "text" 来定义。
  • 引用: 使用反引号和单引号(`macro_name')来引用。
  • 作用域:
    • 在 do-file 中定义的 local 宏只在该 do-file 运行期间有效,并且在 do-file 结束后会自动清除。
    • 在一个 do-file 内的循环(如 foreachforvalues)或程序(program)中定义的 local 宏,只在该循环或程序内部有效,一旦循环或程序结束,该 local 宏也会被清除。
    • 这意味着不同的 do-file、程序或循环可以使用相同的 local 宏名称而不会相互冲突。
  • 使用场景: 适用于临时存储值,例如循环变量、中间计算结果、文件名的一部分等,这些值不需要在整个 Stata 会话或跨多个 do-file 保持。
示例:

global

global 宏的作用域是全局的,这意味着它们一旦定义,就会在整个 Stata 会话中保持有效,直到你明确地清除它们或者关闭 Stata。
  • 定义: 使用 global macro_name = "text"global macro_name "text" 来定义。
  • 引用: 使用美元符号($macro_name)来引用。
  • 作用域:
    • 在任何地方(do-file、命令行、程序内部)定义的 global 宏都可以在任何其他地方访问和使用。
    • 它们会一直存在,直到你使用 macro drop _allmacro drop global macro_name 来清除它们,或者退出 Stata。
  • 使用场景: 适用于需要在多个 do-file、程序之间共享的常量、路径、通用设置等。
示例:

总结区别

特性
local
global
作用域
局部(仅在定义它们的上下文/块中有效)
全局(在整个 Stata 会话中有效)
生命周期
运行完上下文/块后自动清除
除非手动清除或关闭 Stata,否则一直存在
定义方式
local macro_name = "text"
global macro_name = "text"
引用方式
`macro_name'
$macro_name
冲突风险
较低(名称可以重复使用)
较高(名称必须唯一,否则会被覆盖)
用途
临时变量、循环变量、程序内部参数
共享路径、通用设置、跨 do-file 的常量
选择使用 local 还是 global 取决于你变量的生命周期和共享需求。通常,建议优先使用 local 宏,因为它能更好地管理内存并避免不必要的宏名称冲突,只有当你确实需要在多个 do-file 或程序之间共享信息时,才考虑使用 global 宏。
Prev
如何开展边际效应分析?
Next
避开Cloudflare检测:Undetected ChromeDriver
Loading...
Article List
Practice makes perfect
文献集锦
如何理论创新?
管理学理论集锦
Python实际应用
聚类标准误与固定效应
巫师3:狂猎
Stata应用技巧
Python知识与技巧
双重差分法(DID)
创新文献阅读与摘要
计量经济学
Python绘图相关