codecamp

Python 全局变量规范 | Google 官方避坑指南

全局变量

Tip

避免全局变量。

定义:

在程序运行时可以发生变化的模块级变量和类属性 (class attribute)。

优点:

偶尔有用。

缺点:

  1. 破坏封装:这种设计会阻碍一些有用的目标。例如,如果用全局变量来管理数据库连接,那就难以同时连接两个数据库 (比如为了在数据迁移时比较差异)。全局注册表也有类似的问题。
  2. 导入模块时可能改变模块的行为,因为首次导入模块时会对全局变量赋值。

结论:

避免使用全局变量。

在特殊情况下需要用到全局变量时,应将全局变量声明为模块级变量或者类属性,并在名称前加 _ 以示为内部状态。如需从外部访问全局变量,必须通过公有函数或类方法实现。详见 命名规则 章节。 请用注释或文档链接解释这些全局变量的设计思想。

我们允许并鼓励使用模块级常量,例如 _MAX_HOLY_HANDGRENADE_COUNT = 3 表示内部常量,SIR_LANCELOTS_FAVORITE_COLOR = "blue" 表示公开API的常量。注意常量名必须全部大写,用下划线分隔单词。详见 命名规则 章节。Python 全局变量规范 |

Python 异常处理规范 | Google 官方最佳实践
Python 嵌套函数与内部类规范 | Google 官方指南
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }