Python入门知识点分享——(十五)自定义函数

函数是一段事先组织好可重复使用的代码块,用于执行特定的任务。函数可以接受输入参数,并返回一个结果,从而提高应用的模块性和代码的重复利用率。先前我们已经介绍了Python中的内置函数,现在我们要学习创建自定义函数,在定义函数时需要用到关键字def。具体的语法规则如下:

  • 函数命名以def为起始,后接函数名称和参数
  • 参数必须放在小括号()内才能被函数体读取使用
  • 在函数命名行(第一行)的末尾要加上冒号 
  • 冒号后的函数体另起一行,不需要加括号,以缩进表示嵌套关系。
  • 函数应以“return 变量”结尾,会返回一个值给调用方,如果不加变量相当于无返回值

下面我以奇偶分类器为例,讲解函数的构成和用法。

def classify(num):
    odd = []
    even = []
    for i in num:
        if i % 2:
            odd.append(i)
        else:
            even.append(i)
    return odd, even
lst = [1, 2, 3, 4, 5, 6, 7, 8, 9]
print(classify(lst))
([1, 3, 5, 7, 9], [2, 4, 6, 8])

首先以def作为开头,为了直观看出函数的作用,我们一般将函数用途作为名称,(num)是传入函数体一个叫做num的参数;之后我们创建了两个列表命名为odd和even,接下来是一个for循环,读取num中的每一个值,如果除以2余1,那就是奇数,添加进odd列表中,反之则加入even列表;最后是return返回了odd和even两个列表。

那我们怎样调用这个函数呢,其实很简单,我们创建了一个列表lst,作为序列数据类型,它符合classify对每个元素分类的要求,我们只需要像函数创建那样,将函数体后面的形式参数换成我们创建的具有实际数据的列表lst,之后打印结果就可以了。这里我们再补充一个形式参数和实际参数的概念:

形式参数是在函数定义时声明的变量,它用于接收调用函数时传递的实际参数。

实际参数是在调用函数时传递给函数的值。实际参数可以是常量、变量、表达式或其他函数调用的结果。

另外我们在函数定义时可以给参数赋初值,称为默认形参。默认参数可以有多个,但是默认参数后不能再出现无初值的非默认参数。由于默认参数的存在,我们在传递参数时也可以有多种方法。

def calc(a, b = 5):
    c = a + b
    return c
result1 = calc(2, 3)
result2 = calc(10)
result3 = calc(b = 2, a = 4)
print(result1)
print(result2)
print(result3)
5
15
6

第一种就是最常用的依次赋值,实际参数会按照先后顺序依次赋值给形式参数,这里的实际参数称为必需参数,调用时要保证顺序和数量正确;第二种则是缺省参数,实际参数传给第一个形式参数,其他的则按照形式参数的默认值参与计算;第三种是主动赋值,又叫关键字参数,将形式参数和实际参数用赋值运算符连接,这样做的好处是赋值可以不同于函数声明时的参数顺序。

当我们不确定输入参数的个数时,可以使用不定长参数,它的定义方式是星号*加参数名。

def lst_append(parameter1, *parameters):
    a = [10, 20, 30]
    b = ['a', 'b', 'c']
    a.append(parameter1)
    b.append(parameters)
    print(a)
    print(b)

lst_append(40, 'd', 'e')

 需要注意不定长参数会以元组的形式存放对应的实际参数。

[10, 20, 30, 40]
['a', 'b', 'c', ('d', 'e')]

今天我们介绍的只是函数的初级用法,作为Python的重要组成部分,它会在今后的学习过程中多次出现。不过伴随着学习的深入,我们终有一天可以揭下它的神秘面纱。祝大家在学习Python的道路上披荆斩棘,不遇bug。

你可能感兴趣的:(Python入门,python,开发语言,经验分享,pycharm,改行学it)