鱼C论坛

 找回密码
 立即注册
查看: 1882|回复: 8

[已解决]函数问题

[复制链接]
发表于 2021-9-30 21:34:42 | 显示全部楼层 |阅读模式

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

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

x
def fun(var):
    var = 1314
    print(var, end='')

var = 520
fun(var)
print(var)

<<< '1314520'

请问 全局变量var =520 是作为函数 中var的参数输入进去,----> 就先打印出1314,那print(var)这一步骤为什么不是另起一行打印520  
我原本想打印的是 >>>1314
                          >>>520

这个520是怎么在局部变量里打印出来的?
print(var,end='')这个步骤 var既打印了局部变量里的var=1314同时又访问了全局变量var=520 能解释一下吗?
           
最佳答案
2021-10-1 08:23:04
範例 1:
def func(var): # 參數是全局變量的值,不是全局變量本身
    var = 1314 # 局部變量
    print(var) # 這裡打印的是局部變量

var = 520 # 全局變量
func(var) # 打印局部變量
print(var) # 打印全局變量
1314
520
範例 2:
def func(): # 沒有參數
    # var = 1314 也沒有局部變量
    print(var) # 這裡打印的就是全局變量

var = 520 # 全局變量
func() # 打印全局變量
print(var) # 打印全局變量
520
520
範例 3:
def func(): # 沒有參數
    global var # 定義全局變量(意思就是現在這個 var 是全局變量)
    var = 1314 # 已經改變全局變量的值了
    print(var) # 這裡打印的就是全局變量

var = 520 # 全局變量
func() # 打印全局變量,全局變量的值由 520 變成 1314
print(var) # 打印全局變量
1314
1314
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-9-30 21:40:28 | 显示全部楼层
你不是end=''了吗,就说明你打印1234后不换行
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-9-30 21:42:35 | 显示全部楼层
寄安 发表于 2021-9-30 21:40
你不是end=''了吗,就说明你打印1234后不换行

我想问最后的print(var)为什么会通过函数里打印出来呢,为什么不是一个单独打印全局变量的行为
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-9-30 21:42:54 | 显示全部楼层
为啥要用两个一样的变量名,你是在深究全局变量和局部变量的问题吗
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-9-30 21:44:25 | 显示全部楼层
寄安 发表于 2021-9-30 21:42
为啥要用两个一样的变量名,你是在深究全局变量和局部变量的问题吗

这是课后题目,没搞懂这个答案
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-9-30 21:45:18 | 显示全部楼层
luck78 发表于 2021-9-30 21:42
我想问最后的print(var)为什么会通过函数里打印出来呢,为什么不是一个单独打印全局变量的行为

你定义的函数里有一个print
后边还有一个print
so就打印了两次
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-9-30 21:46:06 | 显示全部楼层
luck78 发表于 2021-9-30 21:44
这是课后题目,没搞懂这个答案

问题不大,我也才是 初学者,共同进步
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-9-30 22:17:08 | 显示全部楼层
你的函数参数在内部被重新赋值了, 任何参数传进来都是打印1314, 520没有在函数内部被打印出来, 你在全局有一个print(var)输出了520
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-10-1 08:23:04 | 显示全部楼层    本楼为最佳答案   
範例 1:
def func(var): # 參數是全局變量的值,不是全局變量本身
    var = 1314 # 局部變量
    print(var) # 這裡打印的是局部變量

var = 520 # 全局變量
func(var) # 打印局部變量
print(var) # 打印全局變量
1314
520
範例 2:
def func(): # 沒有參數
    # var = 1314 也沒有局部變量
    print(var) # 這裡打印的就是全局變量

var = 520 # 全局變量
func() # 打印全局變量
print(var) # 打印全局變量
520
520
範例 3:
def func(): # 沒有參數
    global var # 定義全局變量(意思就是現在這個 var 是全局變量)
    var = 1314 # 已經改變全局變量的值了
    print(var) # 這裡打印的就是全局變量

var = 520 # 全局變量
func() # 打印全局變量,全局變量的值由 520 變成 1314
print(var) # 打印全局變量
1314
1314
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-13 07:33

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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