这篇文章用来记录我的python学习过程
函数
函数定义
函数是一段可执行的代码块,可以重复使用。
函数定义语句:
def 函数名(参数列表):
"注释"
语句块
...
return 返回值
函数调用
语句:函数名(实际参数)
例
>>> def add(m,n):
... c=m+n
... return c
...
>>> add(1,2)
3
函数的参数传递
(1)位置传参
直接对应位置输入实参。
(2)关键字传参
传参时按形参名称给形参赋值。
def add(a,b):
return(a/b)
add(a=1,b=2)==add(b=2,a=1)##True
(3)序列传参
序列类型(list,tuple,str)作为参数列表传递
s1=[1,2]
add(*s1)##add(1,2)参数列表名称前要加*
(4)字典关键字传参
实参和形参通过字典进行传递和匹配,字典的值传递给键对应的形参。
d={'a':1,'b':2}
add(**d)##add(1,2)字典名称前要加**
(5)综合传参
上述几种方式混合使用。
函数的缺省参数
语法:
def 函数名(形参1=默认参数值1,形参2=默认参数值2,……):
函数的不定长参数
(1)星号元组形参
语法:
def 函数名(*元组形参名):
语句块
(2)双星号字典形参
语法:
def 函数名(**字典形参名):
语句块
可变/不可变类型
可变类型有:list,set,dict
不可变类型有:frozenset,tuple,str,numbers
函数作用域
全局变量
定义在函数外部,模块内部
局部变量
定义在函数内部
v=100##全局变量
def fn():
v=200##局部变量
print(v)####100
golbal语句
语法:golbal 变量名1,变量名2……
可修改变量为全局变量
def fn():
golbal v###声明全局变量
v=200
print(v)##200
函数嵌套
一个函数里用def语句创建其他函数。
nonlocal语句
nonlocal声明的变量不是局部变量,也不是全局变量,而是外部嵌套函数内的变量。
语法:nonlocal 变量名1,变量名2……
var=100
def outter():
var=200
def inner():
nonlocal var##指定var为200
常用函数
gobals()——返回当前全局作用域内变量的字典
locals()——返回当前局部作用域内变量的字典