[Python3]函数

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[Python3]函数相关的知识,希望对你有一定的参考价值。

一、一个基本的函数

概述

简单的说,函数就是一种代码组织方式,让你可以实现单一、或关联功能的封装,以便高复用。

函数定义

下面我们看一看在Python中函数定义的基本形式:

def 函数名(参数列表):
    
    # 代码块
    
    return 返回值

下面我们看一个简单的实例,计算两个数的和:

# -*- coding:utf-8 -*-

__author__ = u谷白

def sum(a, b):
    
    c = a + b    
    return c

if __name__ == "__main__":
    print(u"函数定义,计算和")    
    # 调用函数
    c = sum(1 ,2)
    
    print(c)

 

在调用时,参数会根据顺序与函数定义时的参数顺序匹配起来,在本例中a=1, b=2

乘法表示例

下面我们用函数封装实现九九乘法表,请看代码实例:

# -*- coding:utf-8 -*-

__author__ = u谷白

# 九九乘法表
def multi():
    data = []
    for i in range(1, 10):
        line = []
        for j in range(i, 10):
            line.append(u"%d * %d = %2d " % (i, j, i*j))
            
        data.append(line)  
              
    return data

if __name__ == "__main__":
    print(u"九九乘法表实例:")
    data = multi()    for d in data:
        print(d)

 

执行的结果如下:

九九乘法表实例:
[1 * 1 =  1 , 1 * 2 =  2 , 1 * 3 =  3 , 1 * 4 =  4 , 1 * 5 =  5 , 1 * 6 =  6 , 1 * 7 =  7 , 1 * 8 =  8 , 1 * 9 =  9 ]
[2 * 2 =  4 , 2 * 3 =  6 , 2 * 4 =  8 , 2 * 5 = 10 , 2 * 6 = 12 , 2 * 7 = 14 , 2 * 8 = 16 , 2 * 9 = 18 ]
[3 * 3 =  9 , 3 * 4 = 12 , 3 * 5 = 15 , 3 * 6 = 18 , 3 * 7 = 21 , 3 * 8 = 24 , 3 * 9 = 27 ]
[4 * 4 = 16 , 4 * 5 = 20 , 4 * 6 = 24 , 4 * 7 = 28 , 4 * 8 = 32 , 4 * 9 = 36 ]
[5 * 5 = 25 , 5 * 6 = 30 , 5 * 7 = 35 , 5 * 8 = 40 , 5 * 9 = 45 ]
[6 * 6 = 36 , 6 * 7 = 42 , 6 * 8 = 48 , 6 * 9 = 54 ]
[7 * 7 = 49 , 7 * 8 = 56 , 7 * 9 = 63 ]
[8 * 8 = 64 , 8 * 9 = 72 ]
[9 * 9 = 81 ]

 

小结

大家可以根据实例进行各种改造尝试,以便进一步深入了解函数的特性。

 

二、参数传递

概述

在Python中参数的传递要注意传入的是可更改的还是不可更改的对象。

在python中对象从修改来讲可以分为:

  • 可更改对象
    在python中,可更改的对象有list(列表)、dict(字典)、set(集合)等等

  • 不可更改对象
    不可更改的对象有strings、tuples、numbers等等。

在Python函数参数的传递,可以传入不可变或可变类的参数。

不可变类型:类似C/C++中的传值参数。

可变类型:类似C/C++的引用参数(即传地址方式)

因为在Python中一切皆为对象,所以在Python中严格来讲我们不能跟在C/C++中一样说是值传递或引用传递,应该讲传不可变对象或可变对象。

元组传递

下面我们讲解下如何将元组作为参数传递。例如有一个元组,我们将其传递给一个函数进行和计算:

# -*- coding:utf-8 -*-

__author__ = u谷白

# 求和

def sum_tuple(seq):
    sum = 0
    for s in seq:
        sum = sum + s    
    return sum
    
if __name__ == "__main__":
    print(u"元组传参,求和实例:")
    tuple_1 = (1, 9, 10, 2, 2, 39, 0, 11, 20)
    print(tuple_1)

    sum = sum_tuple(tuple_1)
    print(u"和为: %d" % sum)

 

运行结果如下:

元组传参,求和实例:
(1, 9, 10, 2, 2, 39, 0, 11, 20)
和为: 94

 

字符串传递

下面我们将多个字符串传递给函数进行字符串连接操作:

# -*- coding:utf-8 -*-

__author__ = u谷白

# 字符串连接函数
def str_join(str1, str2, str3):

    return str1 + str2 + str3

if __name__ == "__main__":
    print(u"字符串连接实例: ")

    str1 = u"大家好,"
    str2 = u"我的博客地址是:"
    str3 = u"博客园 谷白"

    str_j = str_join(str1, str2, str3)
    print(str_j)

 

运行结果如下:

字符串连接实例: 
大家好,我的博客地址是:博客园 谷白

 

以上是关于[Python3]函数的主要内容,如果未能解决你的问题,请参考以下文章

scrapy按顺序启动多个爬虫代码片段(python3)

python常用代码片段总结

VSCode自定义代码片段——声明函数

VSCode自定义代码片段8——声明函数

学习 PyQt5。在我的代码片段中找不到错误 [关闭]

使用从循环内的代码片段中提取的函数避免代码冗余/计算开销