一、函数的作用
有一个需求,求出一个列表的长度
#求s1字符串的长度
s1="1234566"count=0for i ins1:
count+= 1
print(count)
#如果又要求s2="5543322"的长度呢?你只能将求s1的代码重复一遍
如果使用函数呢?
defmy_len():
st= "123321123"count=0for i inst:
count+= 1
print(count)#调用函数
my_len()#就可以得到字符串的长度
1、函数结构
Python的代码执行过程,从上之下读取,到def的时候,只将函数名字存入内存,不去读取函数内部的内容,在调用函数的时候,才会返回函数名出,调用函数内部代码
注:函数在实际工作中,不要在函数体中写print,因为函数的作用是逻辑过程
def 关键字 函数名(设定于变量相同):#冒号的作用是隔开函数名和函数体
函数体
defmy_len():
st= "123321123"count=0for i inst:
count+= 1
return count
函数的执行 :函数名+括号
my_len() #相当于函数的执行者(调用者)
2、return(返回值)
功能:1,遇到return,结束函数
deffunc1():print("1")print("2")return
print("3")print("4")
func1()#这里结果只显示1,2,不会显示3和4,因为在函数体执行遇到return的时候,就会停止运行函数体
2、给函数的调用者返回值
deffunc1():return 1
deffunc2():return
deffunc3():return 1,2,3
print(func1())print(func2())
a,b,c=func3()print(a,b,c)'''返回值的情况有3种
func1 的return返回的是数值1
func2 的return返回的是数值None
func3 的return返回的是一个(1,2,3),类型为元组
可以将元组的值分别赋给a,b,c'''
稍后整理会,敬请期待
3、函数的传参
#从实参角度 单个的参数默认用argv表示
1、位置参数
2、关键字参数
3、混合参数 关键字参数必须在位置参数后边
三元表达式
#从形参角度
1、位置参数
2、默认参数
3、动态参数 (*args,**kwargs) 万能传参
args:接收所有位置参数,以元组的形式
kwargs:接收所有的关键字参数,并放入字典中
参数的位置
函数的执行:* 打散肝功能,将提供的可迭代对象的没个元素,才开放入到*args里面中
*args的* 是函数的定义中加*,是将你所传入的位置参数聚合,添加到一个元组中,
**kwargs的* 是函数的定义中加**,是将你所传入的关键字参数聚合,添加到一个字典中
函数的进阶
内置的名称空间,可以引用,不可以修改,如果想要引用需要用到global
global的作用
1、声明没有的全局变量
2、在函数内更改已有的全局变量
nonlocal的作用 :只对局部变量进行引用和改变,并且之后的引用也是改变只有的
1、不能操作全局变量
2、在修改了变量后,之后的引用都会改变
函数名:
1、可以相互赋值
2、可以当做函数的参数
3、可以当做容器类函数的参数