大家好,目前我们已经学习了函数,今天我们来进行学习return的使用和函数内的名称空间以及作用域的概念.
当我们使用print(函数名)
我们在函数中如果没用使用返回return返回任何值我们就会显示None
print和 return 的区别: print 仅仅是打印在控制台,而 return 则是将 return 后面的部分作为返回值作为函数的输出,可以用变量接走,继续使用该返回值做其它事。
函数需要先定义后调用,函数体中 return 语句的结果就是返回值。
return 语句的作用:结束函数调用、返回值
函数中的数据只能用来看,那就只能用print()进行输出,如果要使用这个数据,就需要把那个值return出来
函数的默认返回值就是None
我们通常可以把函数理解成一件事:
函数的代码—>过程
函数返回值---->结果
语法:
def fun()
return 数据
def add(num1,num2)
return num1+num2
我们在调用返回值可以直接用print()来进行调用.会自动输出返回值
我们可以直接将函数的调用返回值直接赋值给另外的一个变量
def fun():
return 1
a = fun()
print(a)
注意,返回值后面的代码是不会运行的,函数遇到return就会终止,类似于break
我们后面会详细学到闭包也会设计到返回值的问腿。
文档字符串就是在函数里的注释,看起来和注释一样而且,但是他能够被输出。
语法:
def 函数名():
''' 文档字符串 '''
代码
我们可以在文档字符串里面进行补充说明函数的功能,返回值,等等
文档字符串的输出:
函数名.__doc__
函数对象就是把函数当成一个普通的容器来进行使用
1,函数可以被引用,用函数来进行赋值
2,函数可以作为一个元素,放入到数据容器里充当一个数据
3,函数可以作为一个参数,传入到别的函数中
4,函数的返回值可以是一个函数
名称空间: 用于存放名字的内容区域
我们在一个程序中有一个转门的区域来存放对应的数据
名称空间–> 变量名.函数名.模块名字等等
内存空间—>变量值,函数中的代码 等等
生命周期:—>一个数据/函数从创建到运行再到结束的一个过程视为一个生命周期.
名称空间分为三层:
1.内建名称空间(用于存放内置函数)
生命周期: 随着python程序启动而生成,程序关闭时.回收/清除数据
加载顺序: 最先加载出来的
存放对象: print input type sum
使用权限:整个程序都可以使用
2.全局名称空间(用户在外层定义的名字)
生命周期:随着python程序启动而生成,程序关闭时.回收/清除数据
加载顺序: 第二个加载
存放对象: 用户自己声明的变量名/函数名
使用权限:整个程序都可以使用
3.局部名称空间(在函数里定义的名字)
生命周期: 随着函数的的调用生成,结束调用后销毁
加载顺序: 调用函数时加载数据
存放对象: 在函数里定义的变量名,函数名
使用权限: 在函数里才能使用
总之名称空间中的三种名称空间各自控制着各自的咱们编写程序时定义出的名字,但是控制权限却不同.
作用域:一个数据可以被使用的范围
提到作用域,作用域可以分为:
全局作用域: 整个程序里都可以使用
(内建/全局名称空间)
相当于没有密码的wifi.大家都可以用
局部名称空间: 只有部分位置才能使用(函数内)
(局部名称空间)
相当于有密码的wifi.只有知道密码的人才能使用
如果我们想给局部名称空间中作用域提高权限变成全局名称空间,这个时候我们用到—>global
语法:
def 函数名():
global 变量名
变量名 = 值
函数名() # 调用函数才会生成数据
这个时候那个变量就可以在全局调用.
但是在这里我们需要注意的是我们必须先调用函数我们才能够调用那个函数内部变量。
语法:
def fun1():
a = 520
def fun2():
nonlocal a # 私有化.把本来是大家的东西.变成我自己的东西
a = 70520
fun2()
print(a)
fun1()
今天我们学习了return的用法和文档字符串的用法还有名称空间这个概念,明白了名字的控制空间有哪三种,然后还清楚了作用域的概念,学习了提权操作和降权操作,希望大家多多复习.
讲的不好,多多见谅,我们下次再见!
更多优质文章点这里