cdsingle 发表于 2021-9-24 08:47:22

求住函数变更函数的内部变量问题

例如:执行函数a(),如何是b()成功修改c这个变量,print出来2
def a():
    c = 1
    b(c)
    print(c)

def b(c):
    c = c+1

leafu 发表于 2021-9-24 08:58:36

我大概看懂你要表达什么。。。。首先,你定义了b(c)这个函数,然后在a()里面调用,问题是,你b(c)这个函数的代码,只是内部给c+1了一下,你并没有保存或者返回操作后的c值(一顿操作猛如虎。。。)。所以,代码原本就错了,还强行涉及到局部变量与全局变量的问题。。。
修改的话,最简单的话就是把print(c)给b(c)函数

冬雪雪冬 发表于 2021-9-24 08:59:32

def a():
    def b():
      nonlocal c
      c = c+1
    c = 1
    b()
    print(c)

cdsingle 发表于 2021-9-24 09:38:51

leafu 发表于 2021-9-24 08:58
我大概看懂你要表达什么。。。。首先,你定义了b(c)这个函数,然后在a()里面调用,问题是,你b(c)这 ...

def a():
    c = 1
    c = b(c)
    print(c)

def b(c):
    c = c+1
    return c
当函数复杂的时候,修改成这样会有问题吗

leafu 发表于 2021-9-24 09:53:46

cdsingle 发表于 2021-9-24 09:38
def a():
    c = 1
    c = b(c)


不理解你所说的函数复杂是什么情况。。。。首先你要知道,a函数与b函数里面虽然都有c这个参数,但是实际上两个函数的c参数不是同一个东西,都是各自函数的局部变量,不会互相影响。一般怕混淆,会把两个函数的参数用不同的符号,而不是都是用c表示,那是让自己理解困难。。。优化的话,直接把b()函数里面的c参数换成其它的就行
页: [1]
查看完整版本: 求住函数变更函数的内部变量问题