一、函数
1.函数定义
def 关键字 -- 定义
func 函数名 -- 和变量定义规则一样
()必须要写格式
: 声明语句结束
def my_len():
函数体
def func(a:int,b:str):
print(a,b)
func(1,2)
2.函数的好处
1.减少代码重复性(冗余)
2.代码可读性高
3.将功能进行封装(造工具)
3.调用函数
函数名+()
多次调用就是执行多次
可以循环使用
def func():
print("test")
func()
4.函数的返回值
return 的内容返回给了函数的调用
return 返回一个内容(就是内容本身) 可以返回任意类型
return下方的代码不执行,终止这个函数
return 终止函数,切记不能终止循环
return 返回多个内容的时候是元组形式
return 没有写返回值的时候返回的是None,不写return返回的也是None
5.位置传参
def yue(a,b,c=1): # 形参 c = 1是默认参数
print("test")
yue(True,(1,),c=3) # 实参 位置参数 > 默认参数
函数的参数
形参:函数定义的时候叫做形参
位置参数
默认参数
混合参数
实参:函数调用的时候叫做实参
位置参数
关键字参数
混合参数
传参:将实参传递给形参的过程叫做传参
6.函数的动态函数
*args,**kwargs(能够接收函数的位置参数和动态的关键字参数)
定义阶段(*args,**kwargs) 聚合
*args -- tuple
**kwargs -- dict
使用阶段*args,*kwargs打散
*args - 源数据类型
*kwargs - 打散的是字典的键
优先级:位置 > 动态位置 > 默认 > 动态关键字
lst = [12,23,323,32,32,4]
def func(*args):
print(*args)
func(lst[0],lst[1]) # 笨的方法
func(*lst)
7.函数的注释
"""
每次写函数的时候需要写注释
函数名.__doc__ 查看函数的注释
函数名.__name__ 查看函数的名字
"""
8.名称空间
内置空间:python解释器自带的
全局空间:当前文件(.py文件)
局部空间:函数体开辟的空间
加载顺序:内置>全局>局部
取值顺序:局部>全局>内置
作用域:
全局作用域:内置+全局
局部作用域: 局部
9.函数嵌套
函数中套函数
函数嵌套调用
函数嵌套参数的传递
函数嵌套返回值的传递
10.global nonlocal
global:修改全局空间的变量对应的值
nonlocal:在外层的函数中,修改局部空间的变量值,完全不涉及全局变量,只修改离他最近的一层,最近的一层没有变量继续向上找,直到找到最外层函数
三元运算符
a = 10
b = 20
c = a if a > b else b
变量名 = 条件成立的结果 条件 条件不成立的结果
二、函数名的应用
1.函数名指向的是函数的内存地址,加上()就执行这个函数
func()
2.函数名就是一个变量
age1 = 12
age2 = age1
age3 = age2
print(age3)
def fuc():
print(666)
f1 = fuc
f2 = f1
f2()
f1()
3.函数名可以作为容器类类型的元素
def func1():
print('in func1')
def func2():
print("in func2")
def func3():
print("in func3")
lst = [func1,func2,func3]
for i in lst:
i()
4.函数名可以作为函数的实参。
def func1():print("in func1")
def func2(argv):
argv()
print('in func2')
func2(func1)
5.函数名可以作为函数的返回值
def func1():
print("in func1")
def func2(argv):
print("in func2")
return argv
ret = func2(func1)
ret()