winhero 发表于 2020-4-13 19:22:06

global 声明全局变量的问题

本帖最后由 winhero 于 2020-4-13 20:14 编辑

为什么在 func3() 函数里不能声明 var 是全局变量?

var = 'Hi'

def func1():
    var = 'Baby '
    return func2(var)

def func2(var):
   
   
    var += "I love you"
    print(var)
    func3(var)
    return var

def func3(var):
    global var
    var = '老污龟'

print(func1())

print(var)

运行后报错:name 'var' is pararmeter and global

为什么会报错

翻译:变量 'var' 在函数内既作为形参又作为全局变量

heidern0612 发表于 2020-4-13 19:25:49

你不是声明了么?

BngThea 发表于 2020-4-13 19:26:29

因为赋值会覆盖,而不是修改其原来的值

winhero 发表于 2020-4-13 19:49:27

heidern0612 发表于 2020-4-13 19:25
你不是声明了么?

声明不了,会报错

winhero 发表于 2020-4-13 19:50:17

BngThea 发表于 2020-4-13 19:26
因为赋值会覆盖,而不是修改其原来的值

不太明白

winhero 发表于 2020-4-13 19:51:01

本帖最后由 winhero 于 2020-4-13 20:03 编辑

报错:name 'var' is pararmeter and global

为什么会报错

翻译:变量 'var' 在函数内既作为形参又作为全局变量

winhero 发表于 2020-4-13 19:57:11

BngThea 发表于 2020-4-13 19:26
因为赋值会覆盖,而不是修改其原来的值

谁被赋值了?赋值了什么?会覆盖什么?var吗?哪里有修改?原来的值指什么?

BngThea 发表于 2020-4-13 20:19:53

winhero 发表于 2020-4-13 19:57
谁被赋值了?赋值了什么?会覆盖什么?var吗?哪里有修改?原来的值指什么?

你的函数形参中有var变量,在调用函数前必须有传递进来的值

永恒的蓝色梦想 发表于 2020-4-13 20:23:02

不能global形参

winhero 发表于 2020-4-13 20:33:36

永恒的蓝色梦想 发表于 2020-4-13 20:23
不能global形参

谢谢

永恒的蓝色梦想 发表于 2020-4-13 20:34:26

?????
你先不要发帖,你的回复被审核了
页: [1]
查看完整版本: global 声明全局变量的问题