python函数
- 一、函数的特点
- 二、函数的基本形式
- 三、函数参数类型
- 四、必须参数
- 五、默认参数
- 六、可变参数
- 七、可变关键字参数
- 八、可变参数&可变关键字参数区别
- 九、函数参数类型顺序
- 十、变量作用域
- 十一、作用域链
- 十二、global关键字
- 十三、return的用法
- 十四、实例:斐波那契数列
一、函数的特点
- 功能强大
- 调用方便
- 灵活高效
二、函数的基本形式
def <函数名>(参数):
<函数语句>
return <返回值>
注意点:
1.def 声明一个函数
2.函数名,可自定义,为了建议不必要的麻烦,不建议与python关键字、python内置函数重名
3.函数参数不是必须的,可以不填
4.即使函数不传入任何参数,()不可省
5.默认两个空格缩进的函数语句,表示属于该函数
6.return后可以没有返回值,甚至return语句也可以省略
7.return后没有返回值,或者没有return语句的,默认返回none
三、函数参数类型
无参函数
def hello():
print("hello,world!")
有参函数
def new_count(a,b):
result=a+b
return result
四、必须参数
必须参数
#声明一个函数的时候,定义了多少个必填参数,调用的时候就必须传入多少个实参
#实参赋值的顺序,对应必须参数定义时候的顺序
#不建议定义太多必须参数
#如果需要定义多个必须参数,建议大家,可以把多个参数封装成一个对象,把对象传入到函数中
五、默认参数
def func_name(param1='default1',param2='default2'):
pass
六、可变参数
序列解包
#序列解包,就是将序列中的元素平铺开来,按照顺序分别赋值给多个变量
#序列:字符串、列表、元组
可变参数
#对于可变参数,我们可以传入任意个参数,这些参数在函数调用时自动组装成一个tuple
七、可变关键字参数
可变关键字参数
#可变关键字参数,可传入任意个关键字参数,这些关键字参数的在函数调用的时候会自动组装成一个dict
八、可变参数&可变关键字参数区别
可变参数&可变关键字参数
可变参数
1.可传入任意个参数
2.可变参数在函数调用的时候会自动组装成一个tuple
3.如果传入的是一个序列(字符、列表、元组),可用*将每个元素平铺开来,传递到可变参数的函数里可变关键字参数
1.可传入任意个参数
2.可变关键字参数在函数调用的时候会自动组装成一个dict,可用**将每个元素平铺开来,传递到可变关键字参数的函数里
九、函数参数类型顺序
函数中如果定义了必须参数,那么必须参数最好排在第一位 总结:
1.必须参数
2.可变参数
3.默认值参数
4.可变关键字参数
![
十、变量作用域
函数作用域
1.L(local) 局部作用域
2.G(global) 全局作用域
3.E(enclosing)嵌套函数外层非全局作用域
4.B(built_in) 内嵌作用域
变量根据作用域的不同,可分为:
1.全局变量:自己编写的整个程序内
2.局部变量:自己编写的整个函数内
变量的引用:
python没有块级作用域
十一、作用域链
作用域链
1.函数内部引用变量,会优先引用最近局部变量
2.具有逐级向上引用的特性
十二、global关键字
global
函数外部,一般情况下不可以引用局部变量
怎么才能让函数外部可以引用函数内部局部变量呢?
1.使用global关键字,可以声明该变量为全局变量
2.可以声明多个全局变量
疑问:可否用global关键字,给安全局变量重新赋值
1.使用global关键字,可以声明多个局部变量为全局变量
2.使用global关键字,可以给全局变量重新赋值
十三、return的用法
return
1.程序运行第一个return语句之后,大多数情况下,会跳出该函数,不再执行之后的代码
2.函数内可能存在多个return,一般是与if语句搭配使用
3.return 支持返回多个结果
十四、实例:斐波那契数列
斐波那契数列
1,1,2,3,5,8,13,21,34,55,89… 这个数列,从第三项开始,每一项都等于前两项的和
F(1)=1 F(2)=1 F(n)=F(n-1)+F(n-2)(n>=3,n∈N*)