函数的认识
一、函数的定义及调用
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
类型的数据,如果没就是空的tuple
def 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
例外处理