gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-03 16:57:56 26 4
gpt4 key购买 nike

在代码中 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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com