鱼C论坛

 找回密码
 立即注册
查看: 2452|回复: 4

课后练习疑惑求助

[复制链接]
发表于 2016-11-19 23:41:49 From FishC Mobile | 显示全部楼层 |阅读模式

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

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

x
0: 目测以下程序会打印什么内容:
def fun(var):
    var = 1314
    print(var, end='')
var = 520
fun(var)
print(var)
请问一下,这个思路是什么样的,全局变量和局部变量学的有点懵逼。

1:目测以下程序会打印什么内容?
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())
请问一下,这个最后一个函数是返回一个空值的原因吗,所以没值。
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2016-11-20 16:34:17 | 显示全部楼层
一般,定义在函数外部的变量是全局变量,定义在内部的是局部变量;若在函数内部使用global关键字声明,则此变量为全局变量。
0. fun(var)这条语句,没有引用全局变量的值,因此这条语句运行结果是1314,print(var)打印的是全局变量的值520,因为局部变量的作用域在函数内部
    补充:如果,函数名在函数内部第一次出现,并出现在‘=’后面,且该变量在全局域中已定义,则会引用全局变量,例如
  1.     >>> num=100
  2.     >>> def func():
  3.                     x=num+10
  4.                     print(x)

  5.                   
  6.     >>> func()
  7.     110
复制代码


1. 定义在函数内部的var被声明为全局变量,fun1中var的内容变为baby,fun2中var的内容变为baby I love you ,fun3中没有任何返回值,所以最后的打印内容为baby I love you
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-11-20 16:51:13 | 显示全部楼层
weiyang__ 发表于 2016-11-20 16:34
一般,定义在函数外部的变量是全局变量,定义在内部的是局部变量;若在函数内部使用global关键字声明,则此 ...

理解了 谢谢·
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-11-20 22:41:57 | 显示全部楼层
weiyang__ 发表于 2016-11-20 16:34
一般,定义在函数外部的变量是全局变量,定义在内部的是局部变量;若在函数内部使用global关键字声明,则此 ...

借楼主宝地问个问题:
“定义在函数内部的var被声明为全局变量,fun1中var的内容变为baby,fun2中var的内容变为baby I love you ,fun3中没有任何返回值,所以最后的打印内容为baby I love you ”
问题:
fun3中没有任何返回值,但是var =' 小甲鱼 ',前面说了var已经被全局变量了,这里重新赋值,为什么最后不是输出新的var??
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-11-21 10:00:52 | 显示全部楼层
人zai旅途 发表于 2016-11-20 22:41
借楼主宝地问个问题:
“定义在函数内部的var被声明为全局变量,fun1中var的内容变为baby,fun2中var的 ...

fun2和fun3中的var均为局部变量,fun3运行完毕后变量var的值被python自动从内存中清除,所以fun2中返回的var没有被fun3改变,即使fun3有返回值,最后的输出结果也不变。例如:
  1. >>> def fun3(va):
  2.         va = ' 小甲鱼 '
  3. >>> print(va)
  4. Traceback (most recent call last):
  5.   File "<pyshell#5>", line 1, in <module>
  6.     print(va)
  7. NameError: name 'va' is not defined
  8. >>>
复制代码

va在函数外部调用,就会报错
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-2-24 01:32

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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