Python学习12:函数的返回值和作用域

笔者:风起怨江南 出处:https://blog.csdn.net/JackMengJin 笔者原创,文章转载需注明,如果喜欢请点赞+关注,感谢支持!

Python函数学习系列第二篇,函数返回值和作用域,函数参数相关内容请点击=>传送门,所有函数相关的练习我会放到Python实战训练里,敬请期待。

 

目录

函数的返回值和作用域

一、函数的返回值

1.1 return语句

1.2 return和print的区别

1.3 遇到return会终止

1.4 return语句总结

二、函数的作用域

2.1 局部变量

2.2 全局变量

2.3 作用域里的坑

2.4 global关键字


 

函数的返回值和作用域

前面讲了函数的定义、调用和函数参数的相关内容,本文主要说明Python函数的返回值和作用域。

一、函数的返回值

1.1 return语句

函数返回值的定义:函数里面的return语句 + 值,表示函数的返回值,可以在调用函数之后通过变量进行接收。

不带参数值的return语句返回None。

举例,自定义一个相加函数,返回最后的值:

def add_plus(a,b):
    '''添加 '''
    c = a + b
    return c

如果没有return会怎样?

def add_plus(a,b):
    '''添加 '''
    c = a + b
def add_plus(a,b):
    '''添加 '''
    c = a + b

print(add_plus(2,6))
None

没有return会返回None。

1.2 return和print的区别

其实区别很简单,print()是python的一个内置函数(内置函数专题会在后面讲解),作用就是打印。

而return是将函数中运行后的一个值返回,具体这个值是多少,要看return的值是谁。

def add_plus(a,b):
    '''添加 '''
    c = a + b
    print(c)

add_plus(1,8)
print(add_plus(1,8))
9
None

可以看到直接调用函数运算会得到打印值的结果,但去打印函数的返回值结果是None,更一步说明没有return的函数返回值为None。这也是为什么去获取append时返回是None。
 

my_list1 = ['1','2']
a = my_list1.append('4')
print(a)
None

可以看到append这里没有返回值。

而字符串方法strip()是有返回值的,返回的是列表类型的值。

1.3 遇到return会终止

函数遇到return,就会终止运行。函数的return,相当于循环里的break,看到就终止。

def add(a,b):
    if a > 100:
        return a + b
    elif a == 100:
        return a * b
    else:
        return a - b

print(add(120,300))
420

可以看到当函数里有if语句时,没有执行的return不会终止函数,直到遇到return时才会终止,并返回值。

1.4 return语句总结

  • 函数遇到return就终止,不再执行后面的程序。
  • 函数的返回值return,函数调用以后可以通过变量接收return的值。
  • 函数的输出数据,是由return决定。

所以对于函数来说,return语句是控制函数具体的执行,遇到return就终止函数下面的程序。

 

二、函数的作用域

一个程序的所有的变量并不是在哪个位置都可以访问的。访问权限决定于这个变量是在哪里赋值的。

变量的作用域决定了在哪一部分程序你可以访问哪个特定的变量名称。

可以把作用域这么去理解:函数相当于一个盒子,盒子里面的和盒子外面是两个世界。通过作用域的概念可以把变量分为两种:

一种就是局部变量(盒子里面的),另一种就是全局变量(盒子外面的)。

2.1 局部变量

局部变量:函数里面的变量。

def add_plus(a,b):
    '''添加 '''
    c = a + b
    print(c)

这里的c、a、d都在函数里面,所以都称为局部变量。

2.2 全局变量

全局变量:函数外面的变量。

c = 3
def add_plus(a,b):
    '''添加 '''
    c = a + b
    print(c)

print(c)

虽然c都是c,但表示的是不一样的。除了名字一样,其他都不一样。这里打印的c就是全局变量的c。

2.3 作用域里的坑

局部变量和全局变量获取和修改:

  •  全局能不能获取局部变量?         不能
  • 局部作用域能获取全局变量吗?  能
  • 全局能修改局部变量么?             不能
  • 局部变量能修改全局变量么?      不能

既然局部作用域能获取全局变量,不能修改全局变量,那如何才能在局部变量中修改全局变量呢?

2.4 global关键字

globa语句就是用来局部变量修改全局变量,global就是声明是全局变量。

c = 3
def add_plus(a,b):
    '''添加 '''
    global c
    c = c + a + b
    return c

print(c)
print(add_plus(1,2))
print(c)
3
6
6

global c 就是声明c是全局变量,可以在函数里修改全局变量c。

如果不加global关键字是不能在函数里修改的:

UnboundLocalError: local variable 'c' referenced before assignment

global关键字注意事项 —— 不要轻易使用global关键字

其实不难理解,这是因为当一个文件里函数特别多的话(10个,20个或更多的函数),某个函数里加global关键字修改了全局变

量后,会不清楚哪个函数造成的,导致代码维护起来很麻烦。

所以如果非要用要global关键字,一定要确保能够控制它,知道在哪里修改才行,否则最好轻易不要使用。

 


下一篇内容为Python常用的内置函数,敬请期待。

以上是《Python学习12:Python学习12:函数的返回值和作用域》的所有内容,原创不易,转载请注明。如果喜欢请点赞和关注,谢谢大家的支持!

想获得免费的学习资料请添加微信公众号——风起怨江南,非常感谢大家的关注和支持!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值