函数的含义
-
功能 (包裹一部分代码 实现某一个功能 达成某一个目的)
-
特点 : 可以反复调用,提高代码的复用性,提高开发效率,便于维护管理
函数的基本格式
定义函数
def func(): # def 函数名():
print("我是函数func ... ") # code ...
调用函数
func() # 函数名()
函数的命名
字母数字下划线,首字符不能为数字
严格区分大小写,且不能使用关键字
函数命名有意义,且不能使用中文哦
驼峰命名法:(推荐)
(1) 大驼峰命名法 : mycar => MyCar xian => XiAn 一般用在面向对象,定义类的时候使用
(2) 小驼峰命名法 : mycar => myCar xian => xiAn 一般用在面向过程,定义函数的时候使用
(3) 下划线命名法 : symmetric_difference my_car
定义函数
def nine_table():
for i in range(1,10):
for j in range(1,i+1):
print( "{:d}*{:d}={:2d} ".format(i,j,i*j) , end="")
print()
调用函数 不调用不会被执行
-
调用时要给出实际的参数
-
实际参数替换定义中的参数
-
函数调用后得到返回值
for i in range(10):
nine_table()
函数的定义
函数的参数
-
参数:配合函数运算所需要的值
-
参数的种类:
-
形参 : 形式上的参数 (在函数的定义处)
-
形参种类: 普通形参(位置形参) 默认形参 普通收集形参 命名关键字形参 关键字收集形参
-
实参 : 实际上的参数 (在函数的调用处)
-
实参种类: 普通实参(位置实参) 关键字实参
-
原则: 形参和实参要一一的对应
普通形参(位置形参)
在函数的定义处 [hang ,lie普通形参]
def func(hang,lie):
i = 0
while i < hang :
j = 0
while j < lie:
print("*",end="")
j += 1
print()
i += 1
在函数的调用处 [10,10是实际参数,普通实参]
func(10,10)
默认形参
hang,lie叫做默认形参 , 身上带有默认值
def func(hang=10,lie=10):
i = 0
while i < hang :
j = 0
while j < lie:
print("*",end="")
j += 1
print()
i += 1
func()
func(3,5) # 有实参则使用实参,无实参则使用默认值
func(2)
普通形参 + 默认形参
hang普通形参(位置) lie 默认形参
注意点 : 普通形参必须写在默认形参的前面
def func(hang,lie=10):
i = 0
while i < hang :
j = 0
while j < lie:
print("*",end="")
j += 1
print()
i += 1
func(3)
func(3,5)
关键字实参
关键字实参赋值调用函数时,可以任意颠倒顺序
def func(hang,a,b,c,lie=10):
i = 0
while i < hang :
j = 0
while j < lie:
print("*",end="")
j += 1
print()
i += 1
func(1,2,3,4,8)
在函数的调用处
hang=1,a=2 ... 属于关键字实参,指名道姓传值
func(hang=1,a=2,b=3,c=4,lie=7)
func(lie=7,a=2,b=3,c=4,hang=1)
普通实参 + 关键字实参
-
注意: 普通实参 必须写在 关键字实参的前面
func(2,3,b=4,c=5,lie=6) # success
func(lie=6,2,3,b=4,c=5) # error
区分默认形参 和 关键字实参
def king_team( top="雷亮",middle="goldv",bottom="西林",support="王文",jungle="郭凯猛" )默认形参
print( "上单选手:{}".format(top) )
print( "中单选手:{}".format(middle) )
print( "下单选手:{}".format(bottom) )
print( "辅助选手:{}".format(support) )
print( "打野选手:{}".format(jungle) )
默认调用,使用默认值
king_team()
换人
king_team(top="和激东",middle="刘红辉",bottom="卢媛媛",jungle="许恩川") # 关键字实参
可选参数传递
def fact(n, m = 1) :
s = 1
for i in range(1, n+1):
s *= i
return s//m
fact(10) # 10886400
fact(10, 5) # 435456000 位置传递
fact(m = 5,n = 10) # 725760 名称传递
print(fact)
def fact(n, *b) :
s = 1
for i in range(1, n+1):
s *= i
for item in b:
s *=item
return s
fact(10,3) # 10886400
fact(10,3,5,8) # 435456000
print(fact)