Python教程,函数的返回值和作用域,助你学以致用,一步起飞

前言

Python函数的学习内容,咱们更新了很多,今天我们继续带来Python函数的返回值和作用域,深化大家的函数理解,如果有什么不准确的地方,请大佬批评指正,咱们共同进步。

Python函数的返回值

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。

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
 
def append(self, *args, *kwargs): # real signature unknow Append object to the end of the list. pass

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

def strip(self,*args, *kwargs): # real signature unknown Return a copy of the string with leading and trailing whitespace remored. If chars is given and not None, remove characters in chars instead. pass

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

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时才会终止,并返回值。

4.return语句总结

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

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

函数的作用域

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

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

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

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

1.局部变量

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

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

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

2.全局变量

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

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

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

3.作用域里的坑

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

  1. 全局能不能获取局部变量? 不能
  2. 局部作用域能获取全局变量吗? 能
  3. 全局能修改局部变量么? 不能
  4. 局部变量能修改全局变量么? 不能

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

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函数返回值和作用域的学习资料,需要的小伙伴们赶紧行动了啊,老规矩,转发+关注后私信并回复【学习】来免费领取吧~~~

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值