没有合适的资源?快使用搜索试试~ 我知道了~
本文通过理论+代码的方式介绍了Python函数的相关知识:包括:函数的参数、参数传递方式、参数解包、返回值、文档字符串、作用域、命名空间、递归、高阶函数、匿名函数、闭包、装饰器。在开发过程中或者看别人源码的过程中,这些知识是非常有用和经常遇到的,因此掌握这些知识很重要。本文也是Python系列文章的第3篇。 系列文章: 【Python 基础】一文补齐Python基础知识 【趣学Python:B站四大恶人】一文掌握列表、元组、字典、集合 【Python进阶】一文掌握Python函数用法 【Python进阶】Python面向对象之类与对象详解 【Python进阶】Python面向对象之装饰器与封装
资源推荐
资源详情
资源评论
一文掌握一文掌握Python函数用法函数用法
本文通过理论+代码的方式介绍了Python函数的相关知识:包括:函数的参数、参数传递方式、参数解包、返回值、文档字符
串、作用域、命名空间、递归、高阶函数、匿名函数、闭包、装饰器。在开发过程中或者看别人源码的过程中,这些知识是非
常有用和经常遇到的,因此掌握这些知识很重要。本文也是Python系列文章的第3篇。
系列文章:系列文章:
【Python 基础】一文补齐Python基础知识
【趣学Python:B站四大恶人】一文掌握列表、元组、字典、集合
【Python进阶】一文掌握Python函数用法
【Python进阶】Python面向对象之类与对象详解
【Python进阶】Python面向对象之装饰器与封装详解
【Python进阶】Python面向对象之继承和多态详解
【Python进阶】Python异常处理和模块详解
【Python进阶】Python文件(I/O)操作详解
文章目录文章目录系列文章:系列文章:1. 函数函数1.1 函数简介(函数简介(function))1.2 函数的参数函数的参数1.2.1 形参和实参形参和实参1.2.2 不定长参数不定长参数1.2.3 参数解包参数解包1.2.3
返回值返回值1.3 文档字符串(文档字符串(doc str))1.4 作用域与命名空间作用域与命名空间1.4.1 作用域作用域1.4.2 命名空间命名空间1.5 递归递归1.6 高阶函数高阶函数1.6.1 filter()1.6.2
lambda 函数表达式函数表达式 (语法糖)(语法糖)1.6.3 map()1.6.4 sort()1.6.5 sorted()1.6.6 闭包闭包1.7 装饰器装饰器
1. 函数函数
1.1 函数简介(函数简介(function))
函数也是一个对象(函数也是一个对象(object))
对象是内存中专门用来存储数据的一块区域
fn是函数对象 ;fn()调用函数;例如:print 是函数对象 print() 调用函数;
函数可以用来保存一些可执行的代码,并且可以在需要时,对这些语句进行多次的调用;
创建函数:
def 函数名([形参1,形参2,...形参n]) :
代码块
- 函数名必须要符号标识符的规范;
(可以包含字母、数字、下划线、但是不能以数字开头)
- 函数中保存的代码不会立即执行,需要调用函数代码才会执行;
调用函数:函数对象()
1.2 函数的参数函数的参数
在定义函数时,可以在函数名后的()中定义数量不等的形参,多个形参之间使用,隔开;
1.2.1 形参和实参形参和实参
形参(形式参数)形参(形式参数),定义形参就相当于在函数内部声明了变量,但是并不赋值;
实参(实际参数)实参(实际参数);如果函数定义时,指定了形参,那么在调用函数时也必须传递实参;实参将会赋值给对应的形参,简单来
说,有几个形参就得传几个实参。
# 定义函数时,指定形参
def fn(a, b) :
print(a,"+",b,"=",a + b)
# 调用函数时,传递实参
fn(10,20)
fn(123,456)
实参的传递方式:
def mul(a,b,c):
print(a*b*c)
位置参数位置参数;位置参数就是将对应位置的实参复制给对应位置的形参;第一个实参赋值给第一个形参,第二个实参赋值给第二个
形参 ;fn(1 , 2 , 3) ;
关键字参数关键字参数;关键字参数,可以不按照形参定义的顺序去传递,而直接根据参数名去传递参数:fn(b=1 , c=2 , a=3) ;
位置参数和关键字参数可以混合使用位置参数和关键字参数可以混合使用;混合使用关键字和位置参数时,必须将位置参数写到前面:fn(1,c=30);
函数在调用时,解析器不会检查实参的类型;实参可以传递任意类型的对象实参可以传递任意类型的对象;
如果形参执行的是一个对象,当我们通过形参去修改对象时,会影响到所有指向该对象的变量;如果形参执行的是一个对象,当我们通过形参去修改对象时,会影响到所有指向该对象的变量;
def fn4(a):
a[0] = 30
print('a =',a,id(a))
c = 10
c = [1,2,3] fn4(c)
# 不改变对象
fn4(c.copy()) # or fn4(c[:])
1.2.2 不定长参数不定长参数
# 定义一个函数,可以求任意个数字的和定义一个函数,可以求任意个数字的和
def sum(*nums):
# 定义一个变量,来保存结果定义一个变量,来保存结果
result = 0
# 遍历元组,并将元组中的数进行累加遍历元组,并将元组中的数进行累加
for n in nums :
result += n
print(result)
在定义函数时,可以在形参前边加上一个*,这样这个形参将会获取到所有的实参;它将会将所有的实参保存到一个元组中。
*a会接受所有的位置实参,并且会将这些实参统一保存到一个元组中(装包)
def fn(*a):
print("a =",a,type(a))
fn()
'''
输出:
a = ()
'''
带星号的形参只能有一个;带星号的参数,可以和其他参数配合使用;第一个参数给a,第二个参数给b,剩下的都保存到c的
元组中;
def fn2(a,b,*c):
print('a =',a)
print('b =',b)
print('c =',c)
fn2(1,2,3,4,5,6)
'''
输出:
a = 1
b = 2
c = (3, 4, 5, 6)
'''
可变参数不是必须写在最后,但是注意,带带*的参数后的所有参数,必须以关键字参数的形式传递;第一个参数给的参数后的所有参数,必须以关键字参数的形式传递;第一个参数给a,剩下的位,剩下的位
置参数给置参数给b的元组,的元组,c必须使用关键字参数必须使用关键字参数;
def fn3(a,*b,c):
print('a =',a)
print('b =',b)
print('c =',c)
fn3(1,2,3,4,5,c=6)
'''
输出:
a = 1
b = (2, 3, 4, 5)
c = 6
'''
所有的位置参数都给a,b和c必须使用关键字参数;
def fn4(*a,b,c):
print('a =',a)
print('b =',b)
print('c =',c)
fn4(1,2,3,4,b=5,c=6)
'''
输出:
a = (1, 2, 3, 4)
b = 5
c = 6
剩余10页未读,继续阅读
资源评论
Acmen@??
- 粉丝: 5
- 资源: 942
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功