函数
Python里万物皆对象,函数也是对象。
一 函数的定义
- 函数以 def 关键词开头,后面接 函数名 和 圆括号() 以及冒号:
- 冒号下几行都是描述函数的具体操作内容;最后以 return 结尾;return 后若不带任何值或者表达式,则函数返回 none 。
二 函数的调用
三 函数文档
help(函数名)
四 参数
- 什么是形参和实参?
函数定义过程中的参数是形参,在实际调用函数时传入的参数是实参。
1.位置参数
最普通的就是位置参数了。
2. 默认参数
在函数定义的时候,先给参数赋一个值,作为默认值;若调用函数时没有指定参数值,就使用默认值。
def printinfo(name, age=8): #name是位置参数,age=8 是默认参数
print('Name:{0},Age:{1}'.format(name, age))
printinfo('小马') # Name:小马,Age:8
printinfo('小马', 10) # Name:小马,Age:10
def printinfo(name, age):
print('Name:{0},Age:{1}'.format(name, age))
# 函数调用时允许参数值的位置顺序和函数定义时不同,但需要在调用时把参数名指定出来
printinfo(age=8, name='小马') # Name:小马,Age:8
3. 可变参数
可变参数就是指传入的参数值是任意数量,0也可;所有参数自动组装成元组。
可变参数的特征是前面加一个 * 号(加了 * 的变量名会存放所有未命名的参数):
4. 关键字参数
关键字参数的特征是在参数前面加两个 * 号;
所有参数自动组装成字典,可传入任意数量的参数。
可变参数和关键字参数的异同:
同:都可以传入任意数量的参数;
异:关键字参数传入的每个参数都需要指定一个关键字;且关键字和值组装成字典,而可变参数是组装成元组。
注意关键字参数传入参数时,不可传入重复的关键字:
5. 命名关键字参数
使用场景是:想要限制关键字参数的命名的时候。
命名关键字参数的特征是:
*,参数名
没错!就是在参数名前加 * 和逗号。
6. 参数组合
位置参数、默认参数、可变参数、关键字参数、命名关键字参数,这5种中的4种都可以一起使用。但是参数定义的顺序必须是:
- 位置参数、默认参数、可变参数、关键字参数;
- 位置参数、默认参数、命名关键字参数、关键字参数。
总结:位置参数和默认参数总是排前面,关键字参数总是排最后,中间可变参数和命名关键字参数二选一。
五 函数的返回值
六 变量作用域
一 局部变量和全局变量
局部变量:只能在被声明的函数内部使用
全局变量:可以在整个程序范围内使用
当局部变量想变成全局变量的时候,可以使用global 或者 nonlocal 关键字
二 内嵌函数
内嵌函数只能在函数内被调用
三 闭包
闭包是函数式编程一种重要的语法结构,是特殊的内嵌函数;
如果在一个内部函数里对外层的非全局变量进行了引用,就称这个内部函数为闭包;通过闭包可以访问外层的非全局变量,这个作用称为 闭包作用域。
如果要修改闭包作用域内的变量需要 nonlocal关键字:
四 递归
如果一个函数在内部调用自身,就是一个递归函数。
学习资料里的递归写法
害 我自己写的递归
我写的斐波那契数列
Lambda表达式
Python有2类函数:
一类就是使用def关键字定义的正规函数;一类是使用lambda关键字定义的匿名函数。
匿名函数是没有函数名的函数;它拥有自己的命名空间,无法访问参数列表以外或者全局命名空间里的参数。
一 匿名函数的定义
Lambda关键字后面的是 参数,冒号后面的是 表达式(同时也是返回值)
二 Lambda函数的应用
在 fileter() 和map() 函数中的应用:
-
filter(function, iterable)
过滤序列,过滤掉不符合条件的元素,返回一个迭代器对象,如果要转换为列表,可以使用list()
来转换。
-
map(function, *iterables)
根据提供的函数对指定序列做映射。
- 除此之外还可以自己定义其他的高阶函数...
python学习第7天,python打卡第7天~
AI训练营Python-阿里云天池tianchi.aliyun.com