python的代码缩进的表示方式(python小讲堂极简函数定义形式)
python的代码缩进的表示方式(python小讲堂极简函数定义形式)return 后面可以返回任意表达式,但不能是赋值语句函数调用: 函数名(参数)def 函数名(参数):passreturn 表达式
新年快乐,欢迎来到python小讲堂,今天给大家带来的是关于python函数基础的讲解。函数是什么呢?相信学完这节课你不但能到了解函数,还能自己写一下小案例。学过c语言的同学都知道,c语言中的函数是需要用{}包裹起来的,但python中的函数是采用缩进的方式来区分各个语句的层级的,这就让我们码代码方便了很多。
(文末贴有函数小案例,帮助大家理解)
首先我们来看一下今天要讲的内容:
- 函数定义
- 函数参数
- 函数作用域
- 匿名函数
- 递归函数
一、函数定义
def 函数名(参数):
pass
return 表达式
函数调用: 函数名(参数)
return 后面可以返回任意表达式,但不能是赋值语句
二、函数参数
在python中参数无类型,参数可以接收任意对象,只有函数中代码才会对参数类型有限制。
一般传参顺序:位置参数(必传参数),默认参数,*args,**keargs
1、必传参数:
def fun1(x): print(x) # x为必备参数,调用函数是必须传参
上图求和函数中的参数a和b都是必传参数
2、默认参数:
def fun2(x=5): print(x) # 当没有参数传入时,x默认为5 fun2(2)
3、不定长参数:
def fun3(*args **kwargs): print(args) # 传入的所有参数会转化成一个元组 print(kwargs) # 当传入字典时,由keargs接收 fun3(1 2 3 a=1 b=2 c=3) #传参顺序:args在前,keargs在后 # 运行结果: (1 2 3) {"a":1 "b":2 "c":3}
三、函数作用域
全局变量:函数可以访问但是不可以修改
局部变量:函数外部不可以访问也不可以修改
global :声明全局变量,声明后函数内部可以修改全局变量
a = 5 def add(): global a #此函数内的a可以修改全局变量的值 a = 5 a = 1 print(a) add() print(a) #运行结果 6 6
nonlocal:只针对于函数嵌套,内部函数可以修改外部函数的变量
a = 5 def fun_0(): a = 6 def fun_1(): nonlocal a #可以修改外层函数的变量,但不可以修改全局变量 a = 7 print(a) fun_1() print(a) print(a) #运行结果 7 7 5
四、匿名函数
lambda:可以借助filter,简化过滤器
语法规则: lambda 参数 :表达式
lambda x:x>5
lambda函数会返回bool值
a = lambda x:x>5 print(a(6)) # 给a传入参数6,满足条件a>5,所有返回True
匿名函数可以借助filter函数,简化过滤器
filter函数有两个参数,第一个参数是一个返回bool值得函数,第二个函数是一个列表,依次把列表里的元素传入判断函数中,若返回True就保留,否则不保留。
li = [1 2 3 4 5 6 7 8 9] # 只保留列表li中满足x>5的元素 a = filter(lambda x:x>5 li) # 把a转换为列表类型并打印 print(list(a))
五、递归函数
递归函数:在函数里面调用自己(需要有结束条件),不能让函数一直运行
python容错机制:如果代码无限循环的去消耗内存,python会抛出错误并停止它
借助递归函数,可以实现阶乘的运算: def factorial(n): if n == 1: return 1 return factorial(n-1)*n a = factorial(5) # 计算5的阶乘,5x4x3x2(x1) print(a)
正课内容到这里就结束了,接下来给大家写一个函数应用的小案例:
定义个函数,可以对输入的数据进行排序,通过参数来决定是正向排序还是反向排序,这里也用到了前两天讲的循环、字符串等方法呦!
今天的python小讲堂到这里就结束了,今天的内容比较多,这么多函数的知识你理解了吗?小案例看懂了吗?不懂得话可以复习一下前两天的内容,也可以来评论区问我哈,如果喜欢小编的话,记得点下关注,我会持续更新python的知识呦!大家加油,明天见!