鱼C论坛

 找回密码
 立即注册
查看: 1440|回复: 10

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

[复制链接]
发表于 2020-8-29 15:49:21 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
我觉得我对全局变量和局部变量的理解可能不是很到位,希望各位能看看我理解是否有问题。
局部变量是只能之作用在函数内的变量,在函数外不能使用。
局部变量和全局变量的区别是,如果要设置全局变量就在函数内部重复定义一个函数外的变量(?)--这个是我看书对比得出的···不太理解
然后全局变量是可以在函数内外任意打印都可以出现结果的(?)
GLOBAL关键字是为了让修改全局变量时不生成局部变量
最佳答案
2020-8-29 16:18:45
富富猪猪 发表于 2020-8-29 16:11
不好意思···我还是不是很懂全局变量,您能举个例子吗?


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

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

看看这个代码:

  1. y = 'Y'       # 全局变量,因为是在所有函数外
  2. def func1():
  3.     x = 'X'   # 局部变量,在函数内部进行赋值
  4.     print(y)  # 这里打印了全局变量说明成功使用了全局变量
  5.    
  6. def func2():
  7.     z = 'Z'   # 局部变量,在函数内部进行赋值
  8.     print(x)  # 这里打印第一个定义的变量,报错,因为局部变量只在自己定义的作用域才能使用
  9.    
  10. print(y)      # 成功打印全局变量
  11. func1()       # 调用 func1 函数
  12. func2()       # 调用 func2 函数,会报错
  13. # print(z)      # 这里打印 z 变量会报错,因为 z 在函数 fun2 内部,所以是局部变量,打印失败
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-8-29 16:04:55 | 显示全部楼层


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


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

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


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

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


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

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


想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

不好意思···我还是不是很懂全局变量,您能举个例子吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-8-29 16:18:45 | 显示全部楼层    本楼为最佳答案   
富富猪猪 发表于 2020-8-29 16:11
不好意思···我还是不是很懂全局变量,您能举个例子吗?


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

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

看看这个代码:

  1. y = 'Y'       # 全局变量,因为是在所有函数外
  2. def func1():
  3.     x = 'X'   # 局部变量,在函数内部进行赋值
  4.     print(y)  # 这里打印了全局变量说明成功使用了全局变量
  5.    
  6. def func2():
  7.     z = 'Z'   # 局部变量,在函数内部进行赋值
  8.     print(x)  # 这里打印第一个定义的变量,报错,因为局部变量只在自己定义的作用域才能使用
  9.    
  10. print(y)      # 成功打印全局变量
  11. func1()       # 调用 func1 函数
  12. func2()       # 调用 func2 函数,会报错
  13. # print(z)      # 这里打印 z 变量会报错,因为 z 在函数 fun2 内部,所以是局部变量,打印失败
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-8-29 16:27:31 | 显示全部楼层
Twilight6 发表于 2020-8-29 16:18
就是全局变量就是大家都可以拿来使用的

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

所以就是全局变量就是不在函数内的就是了对吧?只要是函数内的变量在函数外都不可以调用出来对吧?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 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)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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



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

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

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

end''是不换行的吗?那也就是说fun(var)的结果是print(var,end='')但应该要换行才能和重新赋值的var合并在一起呀
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

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

不换行所以打印在一行,换行就打印在两行了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-8-29 17:21:36 | 显示全部楼层
Twilight6 发表于 2020-8-29 17:17
。。。你是怎么理解换行的?

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

可是FUN在上面PRINT在下面呀···不是这样理解吗
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 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
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-5-7 14:21

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表