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)
当我运行它时,它出现了" q"当我希望它与" r" 我做错了什么,我需要做些什么才能使它发挥作用?
答案 0 :(得分:6)
您需要将chan()
函数的返回值分配回let
变量:
let = chan(ref, let,"k")
答案 1 :(得分:0)
当您将变量传递给python函数时,它会将指针的副本传递给与传递给函数的函数参数相同的内存位置。这意味着如果更改传递给函数的对象的属性,那么这些更改将在函数外部持续存在(假设对象是可变的)。但是在函数内部重新分配该指针不会影响函数外部的参数,因为您只是将指针复制(在函数内部)指向不同的内存,这不会影响原始变量。在其他语言执行此操作的意义上,Python既不传递值也不传递引用。有许多文章详细说明了这一点,例如:
http://stupidpythonideas.blogspot.com/2013/11/does-python-pass-by-value-or-by.html
因此,上面的代码不会改变,因为您正在修改函数内的let指针的副本,而不是更改原始指针本身。