鱼C论坛

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

[已解决]第19讲第4题的瞎想

[复制链接]
发表于 2021-3-10 15:27:11 | 显示全部楼层 |阅读模式

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

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

x
以下两个代码的区别是什么??为什么一个结果是None一个是Baby??
def fun3(var):
     var = ' 小甲鱼 '

var = 'Baby'
fun3(var)
print(fun3(var))
def fun3(var):
     var = ' 小甲鱼 '

var = 'Baby'
fun3(var)
print(var)

至于为什么说是瞎想,是因为还是不太懂为什么 fun3(var)没用,查询了一大堆相关的,结果越搞越乱
var = ' Hi '

def fun1():
    global var
    var = ' Baby '
    return fun2(var)

def fun2(var):
    var += 'I love you'
    fun3(var)        #对,就是它
    return var

def fun3(var):
    var = ' 小甲鱼 '

print(fun1())
最佳答案
2021-3-10 15:36:08
本帖最后由 Daniel_Zhang 于 2021-3-10 15:40 编辑
# -*- coding: utf-8 -*-

def fun3(var):
    var = ' 小甲鱼 '

var = 'Baby'
fun3(var)
print(fun3(var))

print 出来的是 None 是因为 fun3 函数没有返回值

先定义了 var 为 Baby,var 传入 fun3 进行修改

但是 fun3(var) 运行之后,print 的是 fun3(var) 而不是 var


--------------------------------

但是第二个代码,
# -*- coding: utf-8 -*-

def fun3(var):
    var = ' 小甲鱼 '

var = 'Baby'
fun3(var)
print(var)

之所以是 Baby,因为 fun3 调用的时候,存在一个变量的作用域的问题

即,即使在 fun3 中对 var 进行了修改,也只是在 fun3 内部,var 才是 '小甲鱼'

如果需要使 fun3 中修改的 var 值 在后面的print 里面 打印出 '小甲鱼',可以如下修改:
# -*- coding: utf-8 -*-

def fun3(var):
    var = ' 小甲鱼 '
    return var

var = 'Baby'
var = fun3(var)
print(var)

或者
# -*- coding: utf-8 -*-

def fun3():
    global var  # 引用 全局变量 var 并修改这个全局变量
    var = ' 小甲鱼 '

var = 'Baby'
fun3()
print(var)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-3-10 15:36:08 | 显示全部楼层    本楼为最佳答案   
本帖最后由 Daniel_Zhang 于 2021-3-10 15:40 编辑
# -*- coding: utf-8 -*-

def fun3(var):
    var = ' 小甲鱼 '

var = 'Baby'
fun3(var)
print(fun3(var))

print 出来的是 None 是因为 fun3 函数没有返回值

先定义了 var 为 Baby,var 传入 fun3 进行修改

但是 fun3(var) 运行之后,print 的是 fun3(var) 而不是 var


--------------------------------

但是第二个代码,
# -*- coding: utf-8 -*-

def fun3(var):
    var = ' 小甲鱼 '

var = 'Baby'
fun3(var)
print(var)

之所以是 Baby,因为 fun3 调用的时候,存在一个变量的作用域的问题

即,即使在 fun3 中对 var 进行了修改,也只是在 fun3 内部,var 才是 '小甲鱼'

如果需要使 fun3 中修改的 var 值 在后面的print 里面 打印出 '小甲鱼',可以如下修改:
# -*- coding: utf-8 -*-

def fun3(var):
    var = ' 小甲鱼 '
    return var

var = 'Baby'
var = fun3(var)
print(var)

或者
# -*- coding: utf-8 -*-

def fun3():
    global var  # 引用 全局变量 var 并修改这个全局变量
    var = ' 小甲鱼 '

var = 'Baby'
fun3()
print(var)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-3-10 15:44:38 | 显示全部楼层
Daniel_Zhang 发表于 2021-3-10 15:36
print 出来的是 None 是因为 fun3 函数没有返回值

先定义了 var 为 Baby,var 传入 fun3 进行修改

那我如果想把print(fun3(var))运行出一个结果要怎么改?、
# -*- coding: utf-8 -*-

def fun3(var):
    var = ' 小甲鱼 '

var = 'Baby'
fun3(var)
print(fun3(var))
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-3-10 15:48:06 | 显示全部楼层
孤妓与酒 发表于 2021-3-10 15:44
那我如果想把print(fun3(var))运行出一个结果要怎么改?、

加上一个 return 不就好了?打印 fun3 的返回值
# -*- coding: utf-8 -*-

def fun3(var):
    var = ' 小甲鱼 '
    return var

var = 'Baby'
print(fun3(var))
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-3-10 15:50:07 | 显示全部楼层
Daniel_Zhang 发表于 2021-3-10 15:48
加上一个 return 不就好了?打印 fun3 的返回值

哭,搞来搞去还是return搞不懂
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-3-10 15:53:42 | 显示全部楼层
孤妓与酒 发表于 2021-3-10 15:50
哭,搞来搞去还是return搞不懂

哈哈哈,很正常

return 怎么说呢,个人感觉

就有点类似于,你调用了这个函数,如果你需要它当中生成的某一个结果,就 return 那个结果

用一个变量进行接收 return 的东西,或者直接 print 打印

具体的看你自己的需求
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2021-3-10 16:01:03 | 显示全部楼层
孤妓与酒 发表于 2021-3-10 15:50
哭,搞来搞去还是return搞不懂

def fun3(var):
    var = ' 小甲鱼 '#在函数fun3中定义了参数var,值为'小甲鱼'
    return var#使用return把定义的值返回给函数fun3中的var参数,所以这一步def fun3(var) 等于def fun3(var='小甲鱼')
    #fun3(var)中的var是形参, var = ' 小甲鱼 ' 这个var是实参,因为定义了值'小甲鱼'
var = 'Baby'#这个是在外部定义的var参数
print(fun3(var))#调用函数fun3,并打印参数var的值
#不知说的准不准确, 有误的话请大佬指正
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2021-3-10 16:07:06 | 显示全部楼层
本帖最后由 jackz007 于 2021-3-10 16:10 编辑
孤妓与酒 发表于 2021-3-10 15:50
哭,搞来搞去还是return搞不懂


        return 的作用主要有两个,其一,是结束函数调用,其二,是把函数的运算结果传递给函数调用者。
        高中应该学过三角函数 sin(30) = 1/2,tan(30) = sqrt(3) / 3,显然,在这里,sin() 、tan() 就是函数,那么,1/2、sqrt(3) / 3 就是函数值,这些函数就是通过 return 1/2,return sqrt(3) / 3 来传递函数值的。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-3-10 16:09:59 | 显示全部楼层
TC_DHL 发表于 2021-3-10 16:01
#不知说的准不准确, 有误的话请大佬指正

我不是大佬,你问上面的老哥,那才是真正的大佬
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-16 08:11

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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