函数
1、函数特性
数学函数 == function()
计算机函数 == subroutine 子程序 , procedure 过程
作用:
1.减少重复代码
2.方便修改,更易拓展
3.保持代码一致性
2、函数创建
2.1 格式
def 函数名(参数列表):
函数体
define 定义
##2.2函数命名规则:
(1)函数名必须以下划线或字母开头,可以包含任意字母
、数字或下划线组合,不能使用任何标点符号
(2)函数名是区分大小写的
(3)函数名不能是保留字
2.3形参和实参
形参:形式参数,不是实际存在的,是虚拟变量,在定义
函数和函数体时使用形参,目的是在函数调用时接受实参
( 形参个数,类型与实参一一对应)
实参:实际参数,调用函数时传给函数的参数,可以是常量,
变量,表达式,函数,传给形参
3、函数的参数
(1)必备参数
参数必须以正确的顺序传入函数,调用时的数量必须
与声明时的一样。
(2)关键字参数
传参数时以关键字标记
(3)默认参数
def f(name,sex='male'):
print(name,sex)
f('wang')
运行结果:
(4)不定长参数
def f(*args):
for i in args:
print(i)
f(1,2,3,4,5,6)
运行结果:
*args 表示将传入的若干无名参数写成元组形式
运行结果:
#print(args)
def f(*args,**kwargs):
for i in args:
print(i)
for j in kwargs:
print(j,":",kwargs[j])
f(1,2,3,4,name="wang",age=18)
运行结果:
**kwargs 将传入有名参数数据当作字典形式的键值对
注意点:(1)位置对应,有名和无名参数要分开来
(2)args放在左边,有键值对的kwargs放在右边
(3)如果还有默认参数,默认参数要放在args的左边
例:
def f(sex='male',*args,**kwargs):
print("sex:%s"%sex)
for i in args:
print(i)
for j in kwargs:
print(j,":",kwargs[j])
f('female',1,2,3,4,name="wang",age=18)
运行结果:
注意此时左边的第一个无名参数 一定是对应着第一个默认参数sex的
f(1,2,3,4,name="wang",age=18)
运行结果:
4、return
(1)函数没有return 默认返回none
(2)如果return多个对象,自动封装成一个元组返回
(3)return预示着函数的结束
5、作用域
(1)local,局部作用域,即函数中定义的变量
(2)enclosing,嵌套的父级函数的局部作用域,即含此
函数的上级函数的局部作用域。但不是全局的
(3)globa,全局变量,就是模块级别定义的变量
(4)bulit-in,系统固定模块里的变量,比如int,bytearray
等,搜索变量的优先级顺序是:作用域局部>外层作用>当前模块
中的全局>python内置作用域,也就是LEGB。
注意:局部作用域不能修改全局变量