富富猪猪 发表于 2020-8-29 15:49:21

我又来提问了-关于全局变量上概念的不理解

我觉得我对全局变量和局部变量的理解可能不是很到位,希望各位能看看我理解是否有问题。
局部变量是只能之作用在函数内的变量,在函数外不能使用。
局部变量和全局变量的区别是,如果要设置全局变量就在函数内部重复定义一个函数外的变量(?)--这个是我看书对比得出的···不太理解
然后全局变量是可以在函数内外任意打印都可以出现结果的(?)
GLOBAL关键字是为了让修改全局变量时不生成局部变量

Twilight6 发表于 2020-8-29 16:04:55



局部变量和全局变量的区别是,如果要设置全局变量就在函数内部重复定义一个函数外的变量(?)--这个是我看书对比得出的···不太理解

这样说吧,局部变量第一次赋值是在函数内部进行赋值的,而全局变量的第一次赋值是在所有函数或者类对象外部赋值的

然后全局变量是可以在函数内外任意打印都可以出现结果的(?)

全局变量在所有函数都可以那来使用,局部变量只能在赋值的函数内部进行使用,也就是一个是全局的,一个只有在局部的使用范围

GLOBAL关键字是为了让修改全局变量时不生成局部变量

global 是声明这个变量是全局变量,所以在这个函数内部你直接对这个变量进行更改,就是对全局变量进行更改

你可以看看课后习题的解析来辅助理解具局部变量、全局变量、屏蔽机制的知识:https://fishc.com.cn/forum.php?mod=viewthread&tid=175453&page=1#pid4848159


富富猪猪 发表于 2020-8-29 16:11:31

Twilight6 发表于 2020-8-29 16:04
这样说吧,局部变量第一次赋值是在函数内部进行赋值的,而全局变量的第一次赋值是在所有函数或者类 ...

不好意思···我还是不是很懂全局变量,您能举个例子吗?

Twilight6 发表于 2020-8-29 16:18:45

富富猪猪 发表于 2020-8-29 16:11
不好意思···我还是不是很懂全局变量,您能举个例子吗?


就是全局变量就是大家都可以拿来使用的

局部变量就只有在一小块区域内使用

看看这个代码:

y = 'Y'       # 全局变量,因为是在所有函数外
def func1():
    x = 'X'   # 局部变量,在函数内部进行赋值
    print(y)# 这里打印了全局变量说明成功使用了全局变量
   
def func2():
    z = 'Z'   # 局部变量,在函数内部进行赋值
    print(x)# 这里打印第一个定义的变量,报错,因为局部变量只在自己定义的作用域才能使用
   
print(y)      # 成功打印全局变量
func1()       # 调用 func1 函数
func2()       # 调用 func2 函数,会报错
# print(z)      # 这里打印 z 变量会报错,因为 z 在函数 fun2 内部,所以是局部变量,打印失败

富富猪猪 发表于 2020-8-29 16:27:31

Twilight6 发表于 2020-8-29 16:18
就是全局变量就是大家都可以拿来使用的

局部变量就只有在一小块区域内使用


所以就是全局变量就是不在函数内的就是了对吧?只要是函数内的变量在函数外都不可以调用出来对吧?

富富猪猪 发表于 2020-8-29 16:30:58

Twilight6 发表于 2020-8-29 16:18
就是全局变量就是大家都可以拿来使用的

局部变量就只有在一小块区域内使用


你可以顺便告诉我这个代码的意义吗?我总是不知道END在这里啥意思,我知道END‘XX’是在末尾加上XX字符串,但在这‘’里没东西呀?而且1314是怎么和520搞在一起的呢?而且这里VAR是局部变量吧?VAR=1314,他们是怎么加在一起的呢?
def fun(var):
    var = 1314
    print(var, end='')

var = 520
fun(var)
print(var)

Twilight6 发表于 2020-8-29 16:39:13

富富猪猪 发表于 2020-8-29 16:30
你可以顺便告诉我这个代码的意义吗?我总是不知道END在这里啥意思,我知道END‘XX’是在末尾加上XX字符串 ...



对呀end 是在 print 函数打印完成后追加打印 end 参数,而且没有赋值之前默认为\n换行符,这也是 print 函数为什么能够换行的原因

所以这里 end = '' 也就是覆盖了之前 \n 的效果,也就打印不会换行,追加打印一个空字符串,所以 1314 可以 和 520 在同一行

富富猪猪 发表于 2020-8-29 16:56:36

Twilight6 发表于 2020-8-29 16:39
对呀end 是在 print 函数打印完成后追加打印 end 参数,而且没有赋值之前默认为\n换行符,这也 ...

end''是不换行的吗?那也就是说fun(var)的结果是print(var,end='')但应该要换行才能和重新赋值的var合并在一起呀

Twilight6 发表于 2020-8-29 17:17:04

富富猪猪 发表于 2020-8-29 16:56
end''是不换行的吗?那也就是说fun(var)的结果是print(var,end='')但应该要换行才能和重新赋值的var合 ...

。。。你是怎么理解换行的?

不换行所以打印在一行,换行就打印在两行了

富富猪猪 发表于 2020-8-29 17:21:36

Twilight6 发表于 2020-8-29 17:17
。。。你是怎么理解换行的?

不换行所以打印在一行,换行就打印在两行了

可是FUN在上面PRINT在下面呀···不是这样理解吗

Twilight6 发表于 2020-8-29 19:57:24

富富猪猪 发表于 2020-8-29 17:21
可是FUN在上面PRINT在下面呀···不是这样理解吗

fun 函数里面有个 print

而且先调用 fun 函数的,所以是先执行 print(var, end='') ,这里 var = 1314,所以打印了 1314 ,且 end = '' 所以不换行

然后 执行 print(var) ,此时 var =520 所以打印 520所以最好结果是 1314520
页: [1]
查看完整版本: 我又来提问了-关于全局变量上概念的不理解