Python 为什么这个代码不能工作?

Python 为什么这个代码不能工作?,python,Python,当我运行这个程序时,当我希望它显示为“r”时,它会显示为“q” 我做错了什么?我需要做什么才能使它工作?您需要将chan()函数的返回值赋回到let变量: def chan(ref, let, mode): if mode[0]=="d": ref=-ref a=ord(let) a=a+ref let=chr(a) return let ref=1 let="q" chan(ref, let,"k") print(let) 您需要将ch

当我运行这个程序时,当我希望它显示为“r”时,它会显示为“q”
我做错了什么?我需要做什么才能使它工作?

您需要将
chan()
函数的返回值赋回到
let
变量:

def chan(ref, let, mode):
    if mode[0]=="d":
        ref=-ref
    a=ord(let)
    a=a+ref
    let=chr(a)
    return let
ref=1
let="q"
chan(ref, let,"k")
print(let)

您需要将
chan()
函数的返回值分配回
let
变量:

def chan(ref, let, mode):
    if mode[0]=="d":
        ref=-ref
    a=ord(let)
    a=a+ref
    let=chr(a)
    return let
ref=1
let="q"
chan(ref, let,"k")
print(let)

当您将变量传递给python函数时,它会将指针的副本传递给与传递给函数的函数参数相同的内存位置。这意味着,如果更改传递给函数的对象的属性,这些更改将在函数外部持续(前提是对象是可变的)。但是在函数内部重新分配指针不会影响函数外部的参数,因为您只是将指针副本(在函数内部)指向不同的内存块,这不会影响原始变量。Python既不按值传递,也不按引用传递,因为其他语言都这样做。有许多文章对此进行了详细介绍,例如:


因此,当您在函数中修改let指针的副本时,上面的代码不会更改let,而不会更改原始指针本身。

当您将变量传递给python函数时,它会将指针副本传递到与传递给函数的函数参数相同的内存位置。这意味着,如果更改传递给函数的对象的属性,这些更改将在函数外部持续(前提是对象是可变的)。但是在函数内部重新分配指针不会影响函数外部的参数,因为您只是将指针副本(在函数内部)指向不同的内存块,这不会影响原始变量。Python既不按值传递,也不按引用传递,因为其他语言都这样做。有许多文章对此进行了详细介绍,例如:


因此,当您在函数中修改let指针的副本时,上面的代码不会更改let,而不会更改原始指针本身。

为什么人们不会编写更好的问题标题?旁白:
chan(1,“z”,“k”)
给出了
{'
。这就是你想要的吗?为什么人们不写更好的题目?旁白:
chan(1,“z”,“k”)
给出了
{'
。这就是你想要的吗?