第19讲第4题的瞎想
以下两个代码的区别是什么??为什么一个结果是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())
本帖最后由 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)
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))
孤妓与酒 发表于 2021-3-10 15:44
那我如果想把print(fun3(var))运行出一个结果要怎么改?、
加上一个 return 不就好了?打印 fun3 的返回值
# -*- coding: utf-8 -*-
def fun3(var):
var = ' 小甲鱼 '
return var
var = 'Baby'
print(fun3(var)) Daniel_Zhang 发表于 2021-3-10 15:48
加上一个 return 不就好了?打印 fun3 的返回值
哭,搞来搞去还是return搞不懂{:10_269:} 孤妓与酒 发表于 2021-3-10 15:50
哭,搞来搞去还是return搞不懂
哈哈哈,很正常
return 怎么说呢,个人感觉
就有点类似于,你调用了这个函数,如果你需要它当中生成的某一个结果,就 return 那个结果
用一个变量进行接收 return 的东西,或者直接 print 打印
具体的看你自己的需求 孤妓与酒 发表于 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的值
#不知说的准不准确, 有误的话请大佬指正{:5_94:} 本帖最后由 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 来传递函数值的。 TC_DHL 发表于 2021-3-10 16:01
#不知说的准不准确, 有误的话请大佬指正
我不是大佬,你问上面的老哥,那才是真正的大佬
页:
[1]