Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 斯芬克斯透露我的(邮枪)密码_Python_Python Sphinx - Fatal编程技术网

Python 斯芬克斯透露我的(邮枪)密码

Python 斯芬克斯透露我的(邮枪)密码,python,python-sphinx,Python,Python Sphinx,我有一个简单的函数 import config def send_message(mailgunkey=config.MAILGUNKEY): """ send an email """ 它依赖于我的config.py文件中定义的变量。我从我所有机器上的本地文件中读取变量,因为我不想在任何存储库中保存我的密钥等。然而,我最近养成了使用斯芬克斯的习惯。生成html文档时,将计算表达式config.MAILGUNKEY,并在html文件中显示实际密钥。有没有办法停止这种

我有一个简单的函数

import config 

def send_message(mailgunkey=config.MAILGUNKEY):
    """
    send an email
    """

它依赖于我的config.py文件中定义的变量。我从我所有机器上的本地文件中读取变量,因为我不想在任何存储库中保存我的密钥等。然而,我最近养成了使用斯芬克斯的习惯。生成html文档时,将计算表达式config.MAILGUNKEY,并在html文件中显示实际密钥。有没有办法停止这种不必要的行为?

考虑使用这种方法:

import config 

def send_message(mailgunkey=None):
    """
    send an email
    """
    if mailgunkey is None:
        mailgunkey = config.MAILGUNKEY
一般来说,这种方法具有一些重要的优势:

  • 允许您的用户将
    None
    作为默认值传递
  • 允许更改
    config.MAILGUNKEY
    ,即使您的模块已经导入
  • 解决了可变默认参数的问题(不是您的情况,但仍然需要注意)

第二点,在我看来,是非常重要的,因为我会非常惊讶地看到在运行时对配置变量的更改不会产生任何影响。

顺便说一句,您不能通过配置Sphinx来避免这种情况;它导入代码来生成文档,此时参数默认值只是一个字符串。非常感谢。然而,我有点不喜欢Python中的这些特性。我非常喜欢不可变的参数。本质上,我必须在我的评论中解释,程序正在退回到存储在用户主目录中名为xyz.cfg的文件中的值。当然,我想我可以通过删除=None并强制用户在每次调用send_message时指定一个键(或者定义一个部分函数以简化他/她的生活)来避免这种把戏