python - 如何确定 python 中的整型变量是否具有超出范围的隐藏值?

标签 python

在代码中 How do I force static methods to use local not global variables in Python?

除了问题中的变量之外,我还有一个在方法之间传递的变量。变量是current_line

def line_tocsv(csv_dict={}, line={}, current_line=0):
    csv_line, current_line = LineHandler.create_csv(current_line, kline)
    if current_line in csv_dict:
        csv_dict[current_line].update(csv_line)
    else:
        csv_dict[current_line] = csv_line 
    return csv_dict

运行此代码时,它会生成与此类似的输出

>>> a={0:{"aa":1,"bb":"wasd"},1:{"aa":1,"bb":"wasd"}} 
>>> a
{0: {'aa': 1, 'bb': 'wasd'}, 1: {'aa': 1, 'bb': 'wasd'}}
>>> a[1].update({"cc":"foo"})
>>> a
{0: {'aa': 1, 'cc': 'foo' 'bb': 'wasd'}, 1: {'aa': 1, 'cc': 'foo', 'bb': 'wasd'}}

我该如何使 csv_line 字典仅输入到一个子字典中?! 更改变量名称不起作用,我怀疑这是因为只有引用在函数之间传递,但我不知道足够的Python来知道这些引用实际去哪里以及它们的操作顺序等是什么

最佳答案

首先,不要使用可变的默认参数

def line_tocsv(csv_dict=None, ....):
    if not csv_dict:
        csv_dict = {}
    ....

接下来,使用字典的副本,而不是指针:

csv_dict[current_line] = csv_line.copy()

编辑:

尝试这样做:

>>> a
{1: 2, 3: 4}
>>> b = {1:a,2:a}
>>> b
{1: {1: 2, 3: 4}, 2: {1: 2, 3: 4}}
>>> b[1][7] = 8
>>> b
{1: {1: 2, 3: 4, 7: 8}, 2: {1: 2, 3: 4, 7: 8}}

如果你想使用字典的值而不是指针:

>>> a
{1: 2, 3: 4}
>>> b = {1:a.copy(),2:a.copy()}
>>> b
{1: {1: 2, 3: 4}, 2: {1: 2, 3: 4}}
>>> b[1][7] = 8
>>> b
{1: {1: 2, 3: 4, 7: 8}, 2: {1: 2, 3: 4}}

关于python - 如何确定 python 中的整型变量是否具有超出范围的隐藏值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35264792/

相关文章:

Python删除额外的特殊unicode字符

python - 我可以向内置 Python 类型添加自定义方法/属性吗?

python /Django : How to render user-submitted videos code fragments as embedded videos?

python - pygame mouse.get_pos() 不工作

python - sqlalchemy 寻找字符串形式的服务器版本,而不是类似字节的对象

python - Mariadb docker容器无法使用Python连接到主机上的MySQL服务器(111连接被拒绝)

python - 使用 Django-Haystack 添加到 solr 索引时出现问题

python - numpy 有条件地用数组替换标量/ bool 值

python - 类中的可订阅对象

python - 交换字典中的两个随机值