python学习笔记之函数
python学习笔记之函数
昨日内容回顾
函数的定义与调用
函数必须先定义后调用
调用函数时,函数名后面必须带上括号
函数的分类
内置函数:python解释器提前定义好的
自定义函数:
- 无参函数 括号内没有参数
- 有参函数 括号内有参数
- 空函数 函数体代码用pass占位
函数的返回值
获取函数的返回值需要用一个变量名接收
return后面是什么,就会返回什么。
return会结束掉函数的运行
函数的参数
形式参数
函数定义阶段括号内写入的参数
实际参数
函数调用阶段,对传入的数据,值
位置参数
位置形参
定义阶段从左往右依次填写的变量名
位置实参
调用阶段从左往右依次填写的数据,值
关键字实参
选择形参对齐进行绑定的数据,值
默认形参
函数定义阶段,赋予形参的值,当没有实参传入形参时,形参机会使用默认值。
可变长参数
在函数形参中,用于接收多余的位置参数,多余的参数会被组织成一个元组
**
形参中,用于接收多余的 a = 1 形式实参,会自动转换为字典。
*在实参中。会对值进行类似for循环,组织成一个元组
**在实参中。会将字典打散成v值。
今日内容概要
名称空间
存放变量与变量值的绑定关系的地方
内置名称空间
python解释器提前定义好的变量,函数
print,input,len等
全局名称空间
在单个py文件中,编写的变量名或函数名会存到全局名称空间中
a = 1
b = 'eason'
局部名称空间
函数体代码运行产生的变量名或者函数名都是局部空间。
def eason():
a = 1 # a就是局部名称空间
存活周期
-
内存名称
python解释器运行则产生
python解释器关闭则销毁
-
全局名称空间
py文件运行则产生
py文件结束则销毁
-
局部名称空间
函数体代码开始运行则产生
函数体代码结束运行则销毁
名字的查找顺序
在局部名称空间中
- 局部名称空间
- 全局名称空间
- 内置名称空间
在全局名称空间中
- 全局名称空间
- 内置名称空间
哪怕三个空间都有相同的函数名,也是按照这个顺序查找
如果函数没有被调用,那么不管函数体有多么复杂,函数体是什么也不用太先去在意!
局部名称之间如果不是嵌套关系,那么就互不干涉!
作用域
作用域就是名称空间能够作用的范围
内置空间:全局可使用
全局名称空间:全局可使用
局部名称空间:局部可用
global与nonlacal关键字
global:局部修改全局不可变类型
a = 1
def 变量名():
global a
a = 2
调用一次该函数,a的值在全局将为2
nonlocal:局部修改局部
def f1():
a = 1
def f2():
nonlocal a
a = 2
f2()
print(a)
f1()
改变上一层嵌套的值
函数名的多种用法
-
函数名可用直接当变量名赋值
-
函数名也可以作为函数的实参
-
函数名也可以作为函数的返回值
-
函数名可以作为容器的元素
可存储多个元素的数据类型
函数的嵌套
函数的嵌套调用
def gain():
name = input('name')
password = input('password')
return name, password
def log_in():
name, password = gain()
if name == 'eason' and password == '123':
print('登录成功')
log_in()
调用一个函数,函数内部可以再调用多个函数的叫做嵌套。
调用一个函数,函数调用自己的叫做递归。
函数调用函数,叫做函数做为实参。
今日小结
明天学装饰器。

浙公网安备 33010602011771号