润木 发表于 2020-6-16 23:08:37

关于局部变量和全局变量(第二天)


今天测试有两个问题:1、第一张图片里的func2函数为啥不能声明全局变量var啊?2、第二张图片里面的fun1函数没有返回值,有打印命令,然后我调用的时候结果出现两个值,一个是函数内部打印的结果,另外一个是因为没有返回值打印的None,有人能稍微解释下为啥是这样的结果吗?

Stubborn 发表于 2020-6-16 23:12:46

本帖最后由 Stubborn 于 2020-6-16 23:15 编辑

我要一楼

1、第一张图片里的func2函数为啥不能声明全局变量var啊?

应该是函数的传参导致的,你把函数的参数名字修改一下,不要是var


2、第二张图片里面的fun1函数没有返回值,有打印命令,然后我调用的时候结果出现两个值,一个是函数内部打印的结果,另外一个是因为没有返回值打印的None,有人能稍微解释下为啥是这样的结果吗?

在没有出现return其他的时候,默认返回一个None

Twilight6 发表于 2020-6-16 23:31:08

本帖最后由 Twilight6 于 2020-6-16 23:32 编辑

1、第一张图片里的func2函数为啥不能声明全局变量var啊?

因为第二个函数 你声明的是他的参数,而参数本身就是局部变量不属于全局变量滴呀~ 本身不是全局变量就不能通过 global 来声明~

你可以这样:
var = ' Hi '

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

def fun2():
    global var
    var += 'I love you'
    return var

print(fun1())

2、第二张图片里面的fun1函数没有返回值,有打印命令,然后我调用的时候结果出现两个值,一个是函数内部打印的结果,另外一个是因为没有返回值打印的None,有人能稍微解释下为啥是这样的结果吗?

因为在 Python 函数中如果没有设置返回值 那么都会默认返回的 None,你没有打印就不会打印出这个 None 返回值,但在交互界面和控制台Python 会自动帮你打印返回值


润木 发表于 2020-6-17 19:56:21

Twilight6 发表于 2020-6-16 23:31
因为第二个函数 你声明的是他的参数,而参数本身就是局部变量不属于全局变量滴呀~ 本身不是全局变量就 ...

对于第一条你的意思是我函数内部如果声明全局变量,这个变量必须要在全局程序里面出现过是吧?
对于第二条我其实主要是想问print(函数),如果函数里面本身有print()函数,那么就会照常执行函数里面的print()函数内容是吧?我一开始理解的是print(函数)的话,只会打印函数里面的返回值的

Twilight6 发表于 2020-6-17 20:04:55

第一条差不多就你的意思

对于第二条我其实主要是想问print(函数),如果函数里面本身有print()函数,那么就会照常执行函数里面的print()函数内容是吧?我一开始理解的是print(函数)的话,只会打印函数里面的返回值的

print(函数) 只会打印这个函数的 返回值 , 和函数里面的print 没有关联,所以照常打印没错~,函数里面的 print 打印他的 ,我们 print(函数) 打印我们函数的返回值,互不影响~

润木 发表于 2020-6-17 22:38:47

Twilight6 发表于 2020-6-17 20:04
第一条差不多就你的意思




ok
页: [1]
查看完整版本: 关于局部变量和全局变量(第二天)