设置之类的全局访问器。这可以跨应用程序和模块共享数据。
pyglobal的Python项目详细描述
全局访问器的设置。这可以跨应用程序和模块共享数据。在
此实用程序有助于在多个模块和库之间轻松共享值,而无需传递值。在
示例
简单的例子。在
# settings.pyimportpyglobalpyglobal.set('abc',123)pyglobal.default('qwerty','')pyglobal.set('Hello','World!')pyglobal.default('SECRET_KEY','!!!CHANGE!!!')# Warning: Any library using pyglobal could then look for this value.pyglobal.set('DATABASE_URL','http://')# Warning: Any library using pyglobal could then look for this value.
然后使用项目另一部分中的设置
^{pr2}$子模块数据库不需要知道设置.py并且可以嵌套在包中。在
# db.pyimportpyglobaldb=Database(pyglobal.get('DATABASE_URL'))
避免与其他项目发生冲突
避免冲突,并在应用程序中添加少量的安全性
# settings.pyimportpyglobalimportuuidapp_scope='MYAPP='+str(uuid.uuid4())defscope_get(key,default=None):returnpyglobal.get(key,default,app_scope)defscope_set(key,value)returnpyglobal.set(key,value,app_scope)pyglobal.scope_get=scope_getpyglobal.scope_set=scope_setpyglobal.set('SECRET_KEY','!! Change !!',scope=app_scope)scope_set('DATABASE_URL','http://')
同样,您可以在其他文件中使用,但您也需要访问范围。在
# main.pyimportpyglobalimportsettingssecret=pyglobal.scope_get('SECRET_KEY')db_url=pyglobal.get('DATABASE_URL',scope=settings.app_scope)
在某些情况下,代码总是可以反汇编的,所以这并不是真正安全的。 所有作用域都是另一个层次的混淆,也是避免全局名称与其他项目冲突的一种方法。在
- 项目
标签: