You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

区分局部变量与全局变量标识符的常见方法及规范咨询

区分Python局部变量与全局变量标识符的常见规范方法

针对你遇到的全局变量和函数参数(局部变量)同名导致阅读歧义的问题,下面是几种实用的命名规范和优化方法:

  • 基于作用域的前缀/后缀区分
    这是你已经想到的思路,可根据场景灵活调整前缀,不一定局限于global_。比如用模块缩写当前缀,或者用下划线后缀(注意Python中单下划线开头的变量约定为内部使用):

    def func(time_len, num_nodes):
        pass
    
    if __name__ == '__main__':
        # 假设模块名为data_process,用缩写dp当前缀
        dp_time_len, dp_num_nodes = input_arrs.shape
        func(time_len=dp_time_len, num_nodes=dp_num_nodes)
    
  • 全局常量用大写蛇形命名
    遵循PEP8规范,全局常量采用全大写、下划线分隔的命名,局部变量(含函数参数)用小写蛇形命名,两者视觉区分度极高:

    # 全局常量(不修改的固定值)
    TIME_LEN, NUM_NODES = input_arrs.shape
    
    def func(time_len, num_nodes):
        pass
    
    if __name__ == '__main__':
        func(time_len=TIME_LEN, num_nodes=NUM_NODES)
    

    这种方式更适合不会被修改的全局值,若为可变全局变量,建议结合其他方法。

  • 缩小全局变量作用域
    尽量减少模块级全局变量的使用,把变量封装到函数或类中。比如将原main代码封装成函数,变量变为函数局部,即使同名也因作用域清晰降低歧义:

    def func(time_len, num_nodes):
        pass
    
    def main():
        # 此处变量为main函数的局部变量,而非模块全局
        time_len, num_nodes = input_arrs.shape
        func(time_len=time_len, num_nodes=num_nodes)
    
    if __name__ == '__main__':
        main()
    
  • 按变量含义/来源命名
    抛弃单纯的作用域前缀,根据变量的实际含义或来源命名,既区分命名又增强可读性。比如input_arrs是时序数据,可命名为:

    def func(time_len, num_nodes):
        pass
    
    if __name__ == '__main__':
        seq_time_len, seq_num_nodes = input_arrs.shape
        func(time_len=seq_time_len, num_nodes=seq_num_nodes)
    

内容的提问来源于stack exchange,提问作者theabc50111

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.21 05:05:19