相关疑难解决方法(0)

如何克隆或复制列表?

在Python中克隆或复制列表有哪些选项?

在使用时new_list = my_list,每次都会对new_list更改进行任何修改my_list.为什么是这样?

python clone copy list

2289
推荐指数
16
解决办法
149万
查看次数

为什么函数可以修改调用者所感知的某些参数,而不是其他参数?

我正在尝试理解Python的变量范围方法.在这个例子中,为什么f()能够改变x内部感知main()的价值,而不是价值n

def f(n, x):
    n = 2
    x.append(4)
    print('In f():', n, x)

def main():
    n = 1
    x = [0,1,2,3]
    print('Before:', n, x)
    f(n, x)
    print('After: ', n, x)

main()
Run Code Online (Sandbox Code Playgroud)

输出:

Before: 1 [0, 1, 2, 3]
In f(): 2 [0, 1, 2, 3, 4]
After:  1 [0, 1, 2, 3, 4]
Run Code Online (Sandbox Code Playgroud)

python

167
推荐指数
5
解决办法
12万
查看次数

python变量是指针?

据我所知,Python中的变量只是指针.

基于此规则,我可以假设此代码段的结果:

i = 5
j = i
j = 3 
print(i)
Run Code Online (Sandbox Code Playgroud)

会的3.但是我得到了一个意想不到的结果,是的5.

此外,我的Python书确实涵盖了这个例子:

i = [1,2,3]
j = i
i[0] = 5
print(j)
Run Code Online (Sandbox Code Playgroud)

结果将是[5,2,3].

我理解错了什么?

python variables pointers identifier

66
推荐指数
5
解决办法
6万
查看次数

说一个类型是"盒装"是什么意思?

我听说在某些语言中被称为"盒装"的类型.

在Java中,我听说过"autoboxing".这是什么?它是否有类型的包装类?如果我使用盒装或非盒装类型,我的代码会如何变化?

java autoboxing types type-systems terminology

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

当对原始类型变量执行"="时,CPython实际上做了什么?

例如:

a = some_process_that_generates_integer_result()
b = a
Run Code Online (Sandbox Code Playgroud)

有人告诉我,ba将指向同一块整数对象,因此b将修改该对象的引用计数.代码PyObject* ast2obj_expr(void* _o)Python-ast.c中执行:

static PyObject* ast2obj_object(void *o)
{
    if (!o)
        o = Py_None;
    Py_INCREF((PyObject*)o);
    return (PyObject*)o;
}

......

case Num_kind:
    result = PyType_GenericNew(Num_type, NULL, NULL);
    if (!result) goto failed;
    value = ast2obj_object(o->v.Num.n);
    if (!value) goto failed;
    if (PyObject_SetAttrString(result, "n", value) == -1)
            goto failed;
    Py_DECREF(value);
    break;
Run Code Online (Sandbox Code Playgroud)

但是,我认为修改引用计数而不更改所有权实际上是徒劳的.我期望的是每个包含原始值(浮点数,整数等)的变量总是有自己的值,而不是引用同一个对象.

在执行我的简单测试代码时,我发现上面的Num_kind分支中的断点永远不会到达:

def some_function(x, y):
    return (x+y)*?x-y)

a = some_function(666666,66666)
print a

b = a …
Run Code Online (Sandbox Code Playgroud)

python cpython reference-counting

4
推荐指数
1
解决办法
145
查看次数