本文章最初发布在 XJHui’s Blog,未经允许,任何人禁止转载!
注意:最新修改版本已发布在 这里,点击前往查看!
初始函数
概念
-
是什么?
一系列python语句的组合,可以在程序中运行一次或多次,完成具体、独立的功能。
-
为什么?
整体结构清晰,代码复用最大化,代码冗余最小化,问题局部化。
定义
-
语法:
def 函数名(): 函数体
-
案例:输出小明的信息
def printInfo(): print('姓名:{},性别:{},年龄:{}'.format("小明", "男", "20"))
调用
-
语法:
函数名()
-
案例:调用上例中创建的printInfo函数
def printInfo(): print('姓名:{},性别:{},年龄:{}'.format("小明", "男", "20")) printInfo() #调用已创建的 printInfo 函数
运行结果:
注意:
-
函数必须先定义才能被调用
-
函数注释的写法:
def printInfo(): ''' 输出小明的信息 :return: ''' print('姓名:{},性别:{},年龄:{}'.format("小明", "男", "20"))
调用函数时,按下ctrl并把鼠标放在函数名上会有如下提示:
-
函数参数
分类
- 必选参数
- 默认参数
- 不定长参数
- 关键字参数
必选参数
调用时必须要给参数值
案例:编写两数求和函数,输出运算结果
def getSum(numA, numB):
print(numA + numB)
-
传参调用:
getSum(3, 5)
运行结果:
-
不传参调用:
getSum()
运行结果:
默认参数
缺省参数,无参数时使用默认值
def getSum(a=10, b=20):
print(a + b)
-
不传参调用:
getSum()
运行结果:
-
传参数调用:
getSum(1, 2)
运行结果:
-
易错案例:
def getSum(a=20, b): print(a + b) getSum(1)
运行结果:
分析:实参个数<形参个数时,参数会从左向右依次分配,所以 a=1,但由于 b 没有默认值所以会报错。
注意:从上面的案例也能看出,默认(缺省)参数始终存在于参数列表中的尾部,否则没意义。
不定长参数
当参数个数不确定时使用
-
输出单个参数:
def getResult(*args): print(args) getResult(1)
运行结果:
-
多个参数求和:
def getResult(*args): sum = 0 for item in args: sum += item print(sum) getResult(1, 2, 3, 4, 5)
运行结果:
关键字参数
接受字典类型的参数
def info(**kwargs):
print(kwargs)
-
传参方法1:
dictA = {'name': 'xiaoming'} info(**dictA) # 注意 **
运行结果:
-
传参方法2:
info(name="xiaoming") # 注意:key不可以加引号,否则报错
运行结果:
返回值
函数执行完以后会返回一个对象,使用return即可实现,否则返回none
注意:
- 在一个函数体中可以出现多个return,但只能选择一个返回
- 只要执行了return,则其后面的代码均不再执行
单个数据
def Sum(a, b):
sum = a + b
return sum
num = Sum(1, 2) #num接受返回值
print(num)
运行结果:
![](https://i-blog.csdnimg.cn/blog_migrate/974ba3f70bbcbe67db9933e3a5efa224.png)
多个数据
返回列表、元组、字典
-
返回列表:
def Sum(): return ['sda', 1, 0.5] #返回列表类型的数据 num = Sum() # num接受返回值 print(type(num)) print(num)
运行结果:
-
返回元组:
def Sum(): return 1,2,3,4 #返回元组类型的数据 num = Sum() # num接受返回值 print(type(num)) print(num)
运行结果:
-
返回字典:
def Sum(): return {"name":"菜徐坤"} #返回字典类型的数据 num = Sum() # num接受返回值 print(type(num)) print(num)
运行结果:
嵌套调用
def ddd1():
print("---------ddd1 start------")
print("---------在执行代码------")
print("---------ddd1 end------")
def ddd2():
print("---------ddd2 start------")
ddd1()
print("---------ddd2 end------")
ddd2()
运行结果:
![](https://i-blog.csdnimg.cn/blog_migrate/a51fc98b7572c7018c9932f081e897c7.png)
注意:函数一定要先定义再调用