初始函数

概念

  1. 是什么?

    一系列python语句的组合,可以在程序中运行一次或多次,完成具体、独立的功能。

  2. 为什么?

    整体结构清晰,代码复用最大化,代码冗余最小化,问题局部化。

定义

  1. 语法:

    1
    2
    def 函数名():
    函数体
  2. 案例:输出小明的信息

    1
    2
    def printInfo():
    print('姓名:{},性别:{},年龄:{}'.format("小明", "男", "20"))

调用

  1. 语法:

    1
    函数名()
  2. 案例:调用上例中创建的printInfo函数

    1
    2
    3
    def printInfo():
    print('姓名:{},性别:{},年龄:{}'.format("小明", "男", "20"))
    printInfo() #调用已创建的 printInfo 函数

    运行结果:

    注意:

    • 函数必须先定义才能被调用

    • 函数注释的写法:

      1
      2
      3
      4
      5
      6
      def printInfo():
      '''
      输出小明的信息
      :return:
      '''
      print('姓名:{},性别:{},年龄:{}'.format("小明", "男", "20"))

      调用函数时,按下ctrl并把鼠标放在函数名上会有如下提示:

函数参数

分类

  • 必选参数
  • 默认参数
  • 不定长参数
  • 关键字参数

必选参数

调用时必须要给参数值

案例:编写两数求和函数,输出运算结果

1
2
def getSum(numA, numB):
print(numA + numB)
  • 传参调用:

    1
    getSum(3, 5)

    运行结果:

  • 不传参调用:

    1
    getSum()

    运行结果:

默认参数

缺省参数,无参数时使用默认值

1
2
def getSum(a=10, b=20):
print(a + b)
  • 不传参调用:

    1
    getSum()

    运行结果:

  • 传参数调用:

    1
    getSum(1, 2)

    运行结果:

  • 易错案例:

    1
    2
    3
    4
    def getSum(a=20, b):
    print(a + b)

    getSum(1)

    运行结果:

    分析:实参个数<形参个数时,参数会从左向右依次分配,所以 a=1,但由于 b 没有默认值所以会报错。

注意:从上面的案例也能看出,默认(缺省)参数始终存在于参数列表中的尾部,否则没意义。

不定长参数

当参数个数不确定时使用

  • 输出单个参数:

    1
    2
    3
    4
    def getResult(*args):
    print(args)

    getResult(1)

    运行结果:

  • 多个参数求和:

    1
    2
    3
    4
    5
    6
    7
    def getResult(*args):
    sum = 0
    for item in args:
    sum += item
    print(sum)

    getResult(1, 2, 3, 4, 5)

    运行结果:

关键字参数

接受字典类型的参数

1
2
def info(**kwargs):
print(kwargs)
  • 传参方法1:

    1
    2
    dictA = {'name': 'xiaoming'}
    info(**dictA) # 注意 **

    运行结果:

  • 传参方法2:

    1
    info(name="xiaoming") # 注意:key不可以加引号,否则报错

    运行结果:

返回值

函数执行完以后会返回一个对象,使用return即可实现,否则返回none

注意:

  • 在一个函数体中可以出现多个return,但只能选择一个返回
  • 只要执行了return,则其后面的代码均不再执行

单个数据

1
2
3
4
5
6
def Sum(a, b):
sum = a + b
return sum

num = Sum(1, 2) #num接受返回值
print(num)

运行结果:

多个数据

返回列表、元组、字典

  1. 返回列表:

    1
    2
    3
    4
    5
    6
    def Sum():
    return ['sda', 1, 0.5] #返回列表类型的数据

    num = Sum() # num接受返回值
    print(type(num))
    print(num)

    运行结果:

  2. 返回元组:

    1
    2
    3
    4
    5
    6
    def Sum():
    return 1,2,3,4 #返回元组类型的数据

    num = Sum() # num接受返回值
    print(type(num))
    print(num)

    运行结果:

  3. 返回字典:

    1
    2
    3
    4
    5
    6
    def Sum():
    return {"name":"菜徐坤"} #返回字典类型的数据

    num = Sum() # num接受返回值
    print(type(num))
    print(num)

    运行结果:

嵌套调用

1
2
3
4
5
6
7
8
9
10
11
def ddd1():
print("---------ddd1 start------")
print("---------在执行代码------")
print("---------ddd1 end------")

def ddd2():
print("---------ddd2 start------")
ddd1()
print("---------ddd2 end------")

ddd2()

运行结果:

注意:函数一定要先定义再调用