相关疑难解决方法(0)

如何复制字典并仅编辑副本

有人可以向我解释一下吗?这对我没有任何意义.

我将字典复制到另一个字典中并编辑第二个字典,然后更改两个字典 为什么会这样?

>>> dict1 = {"key1": "value1", "key2": "value2"}
>>> dict2 = dict1
>>> dict2
{'key2': 'value2', 'key1': 'value1'}
>>> dict2["key2"] = "WHY?!"
>>> dict1
{'key2': 'WHY?!', 'key1': 'value1'}
Run Code Online (Sandbox Code Playgroud)

python dictionary reference python-3.x

737
推荐指数
15
解决办法
52万
查看次数

使用"设置"模块创建常量?

我已经在谷歌和Stackoverflow上进行了搜索,但找不到我想要的内容.

我对Python比较陌生.我希望创建一个"设置"模块,其中将存储各种特定于应用程序的常量.

这是我想要设置我的代码的方式

settings.py

CONSTANT = 'value'
Run Code Online (Sandbox Code Playgroud)

script.py

import settings

def func():
    var = CONSTANT
    # do some more coding
    return var
Run Code Online (Sandbox Code Playgroud)

我收到一条Python错误说明:"全局名称'CONSTANT'未定义.

我注意到Django的源代码,他们的settings.py文件有像我一样命名的常量.我对如何将它们导入脚本并通过应用程序引用感到困惑.

编辑

谢谢你的所有答案!我尝试了以下方法:

import settings

print settings.CONSTANT
Run Code Online (Sandbox Code Playgroud)

我得到相同的错误:ImportError:无法导入名称CONSTANT

python

75
推荐指数
3
解决办法
9万
查看次数

将一长串常量导入Python文件

在Python中,是否存在C预处理器语句的类似物,例如?:

#define MY_CONSTANT 50

另外,我有一个很大的常量列表,我想导入几个类.是否有类似的方法将常量声明为.py文件中的上述长序列语句并将其导入另一个.py文件?

编辑.

该文件Constants.py为:

#!/usr/bin/env python
# encoding: utf-8
"""
Constants.py
"""

MY_CONSTANT_ONE = 50
MY_CONSTANT_TWO = 51
Run Code Online (Sandbox Code Playgroud)

myExample.py读:

#!/usr/bin/env python
# encoding: utf-8
"""
myExample.py
"""

import sys
import os

import Constants

class myExample:
    def __init__(self):
        self.someValueOne = Constants.MY_CONSTANT_ONE + 1
        self.someValueTwo = Constants.MY_CONSTANT_TWO + 1

if __name__ == '__main__':
    x = MyClass()
Run Code Online (Sandbox Code Playgroud)

编辑.

从编译器,

NameError:"未定义全局名称'MY_CONSTANT_ONE'"

第13行的myExample中的函数init self.someValueOne = Constants.MY_CONSTANT_ONE + 1复制输出程序在0.06秒后退出代码#1.

python constants python-import

72
推荐指数
6
解决办法
8万
查看次数

在Python类中初始化和使用常量的最佳方法是什么?

这是我如何声明常量并在不同的Python类中使用它们:

# project/constants.py
GOOD = 1
BAD = 2
AWFUL = 3

# project/question.py
from constants import AWFUL, BAD, GOOD

class Question:
    def __init__(self):
        ...
Run Code Online (Sandbox Code Playgroud)

以上是存储和使用含有值的好方法吗?我意识到,经过一段时间后,常量文件会变得非常大,我可以明确地在任何给定文件中导入10个以上的常量.

python

32
推荐指数
2
解决办法
4万
查看次数

为什么在赋值给sys.modules [__ name__]后__name__的值会发生变化?

在尝试做类似于Alex Martelli 的ActiveState配方标题为Python中Constants时,我遇到了意外的副作用(在Python 2.7中),它将类实例分配给sys.moduleshas中的一个条目- 即显然这样做更改__name__to 的值,None如下面的代码片段所示(它会破坏配方中的部分代码):

class _test(object): pass

import sys
print '# __name__: %r' % __name__
# __name__: '__main__'
sys.modules[__name__] = _test()
print '# __name__: %r' % __name__
# __name__: None

if __name__ == '__main__': # never executes...
    import test
    print "done"
Run Code Online (Sandbox Code Playgroud)

我想知道为什么会这样.我不相信它在Python 2.6和早期版本中是这样的,因为我有一些较旧的代码,显然if __name__ == '__main__':条件在赋值后按预期工作(但不再有).

FWIW,我也注意到这个名字在分配后也会_test从一个类对象反弹None回来.我觉得很奇怪他们正在反弹None而不是完全消失......

更新:

我想补充一点,任何实现效果的变通办法if __name__ == '__main__':都会受到高度赞赏.TIA!

python module

18
推荐指数
1
解决办法
6523
查看次数

Python常量声明

如果我声明一个包含变量的const类:

例如

class const:
    MASTER_CLIENT_CONNECTED = 0
    CLIENT_CONNECTED = 1        
    GET_SERVER_QUEUE = 9998    
    ERROR = 9999
Run Code Online (Sandbox Code Playgroud)

有没有办法在不创建新类的情况下达到这个变量(常量).

像这样:

import const
const.MASTER_CLIENT_CONNECTED 
Run Code Online (Sandbox Code Playgroud)

要么

import const
if(i==MASTER_CLIENT_CONNECTED):
Run Code Online (Sandbox Code Playgroud)

python constants

9
推荐指数
2
解决办法
3万
查看次数

使用命名元组作为事实上的常量——聪明还是愚蠢?

我有 C# 背景,但现在使用 Python 3.x 进行大量科学计算工作,因此我想了解一下我的风格或口音按照 Python 标准有多“奇怪”。

特别是,Python 中没有这样的东西,这让我非常恼火const。我的用例是这样的:我正在保存*.npz文件(numpy 序列化数据字典)、传递字典、写入文件等,并且字典键、文件名等需要具有一致、可靠的命名模式。

很明显,在 8 个地方输入相同的神奇愚蠢字符串是错误的。

所以在我的模块根目录中,我有一个通常调用的文件base.py

import os
from collections import namedtuple
from os import path

# This is the tuple that contains operational constants
RuntimeConstants = namedtuple("Const", " ModelDirectoryLabelName \
                                  DefaultModelOutputDirectoryRoot \
                                  ResultDirectoryNameFormat \
                                  PeripheryOutputFilePrefix \
                                  NCOutputFilePrefix \
                                  SummaryPlotFileName \
                                  PeripheryConfigurationName \
                                  ResourceDirectoryName \
                                  StimulusTemplateName")

runtime_consts = RuntimeConstants(ModelDirectoryLabelName=".model-output-root",
                                  DefaultModelOutputDirectoryRoot="model-output",
                                  ResultDirectoryNameFormat="%d %b %y - %H%M",
                                  PeripheryOutputFilePrefix="periphery-output-",
                                  NCOutputFilePrefix="nc-output-",
                                  PeripheryConfigurationName="simulation-configuration.yaml",
                                  SummaryPlotFileName="summary-plots.pdf",
                                  ResourceDirectoryName="resources",
                                  StimulusTemplateName="default_stimulus.yaml"
                                  )
# This is …
Run Code Online (Sandbox Code Playgroud)

python coding-style constants

9
推荐指数
1
解决办法
1583
查看次数