函数的认识
一、函数的定义及调用
1、正常函数定义基本语法
python中使用def关键词定义函数# 定义一个函数 def 函数名 (形参1, 形参2...): '''' 函数的注释[描述](方便下次查阅) ''' 函数体 return 函数返回值 # 调用函数 函数名(实参1, 实参2....)2、匿名函数的定义语法(
lambda函数)# 定义 z = lambda 形参1, 形参2.... : 返回值 # 调用 z(实参1, 实参2)3、函数定义案例
def foo(num1, num2): return num1 + num2 if __name__ == "__main__": print(foo(1, 2))4、匿名函数的定义案例
z = lambda x, y : x + y print(z(1, 2))
二、函数的调用
函数在调用的时候使用原则:先定义、再调用,没有类似
javascript函数声明式中的变量提升特性
- 1、函数调用的方式主要有
- 1.直接函数名()
- 2.高阶函数,把函数作为参数
- 3.多线程中的调用(在线程篇章会介绍)
三、函数的参数
1、无参函数
def bar(): return 'hello'2、固定参数(形参跟实参个数及位置都保持一致)
def foo(name, age): pass if __name__ == '__main__': foo('哈哈', 20)3、可变参数(
python中习惯性使用关键词*args)可变参数传递到函数中以
tuple类型的数据,如果没就是空的tupledef foo(*args): print(args) if __name__ == '__main__': foo('哈哈', 20)4、关键字参数(
python中习惯使用关键词**kwargs)关键字参数传递到函数中是以
dict的方式展示def bar(**kwargs): print(type(kwargs)) print(kwargs) if __name__ == '__main__': bar(name='张三', gender='男', age=20) # <class 'dict'> #{'name': '张三', 'gender': '男', 'age': 20}5、固定参数、可变参数、关键字参数混合使用
原理:
- 1.先会把实参不能少于形参固定参数的个数(少于会直接报错)
- 2.把实参优先给固定参数,多余的给可变参数
- 3.如果使用了关键词传递的参数就是关键字参数中
def test(name, age, *args, **kwargs): print(name, age) print(args) print(kwargs) if __name__ == '__main__': test(1, 2, 3, 4, 5, address='广东', mobile = '110')6、默认参数
上面第五点上写到如果实参少于形参就会直接报错,但是有时候我们可以预先定义默认参数(默认参数必须在最后面)
def test(name, age=20): print(name, age) if __name__ == '__main__': test('哈哈')
五、函数的返回值
- 常规函数的返回值是使用
return - 如何函数不使用
return函数会默认返回一个None的值 - 生成器函数使用
yield例外处理