Python学习第三周总结:奇妙的函数与烧脑的面向对象编程

本文是关于Python学习第三周的总结,重点探讨了函数和面向对象编程的概念。函数方面,介绍了函数的定义、参数(包括默认参数和可变参数)、关键字参数、高阶函数(如Lambda和装饰器)以及递归调用。在面向对象编程部分,讲解了类和对象的定义、初始化方法、魔术方法、面向对象的四大支柱(抽象、封装、继承、多态)以及静态方法和类方法。文章强调了函数的无副作用性和面向对象编程的重要性,并提醒注意递归调用可能导致的栈溢出问题。
摘要由CSDN通过智能技术生成

Python学习第三周总结:奇妙的函数与烧脑的面向对象编程

先言

在学习函数之前,我们可以先引出函数为什么会出现,出现的意义的什么,能给程序员带来什么便利。

那么,先来一个题目:输入M,N计算C(M, N)。这是高中就学过的阶乘知识,下面先给出公式:
C M N = M ! N ! ( M − N ) ! C_M^N = \frac {M!} {N!(M-N)!} CMN=N!(MN)!M!
例,一个5的阶乘:5!= 5 * 4 * 3 * 2 * 1

因此,要求M,N的阶乘就需要利用循环做累成得到阶乘数

"""
play01 - 输入M,N计算C(M, N)

Author:悾格
Date: 2021/8/7
"""

m = int(input('m = '))
n = int(input('n = '))
# 计算M的阶乘
fm = 1
for i in range(1, m + 1):
    fm *= i
# 计算N的阶乘
fn = 1
for i in range(1, n + 1):
    fn *= i
# 计算M-N的阶乘
fm_n = 1
for i in range(1, m - n + 1):
    fm_n *= i
# 输出C(M, N)的值
print(fm / (fn * fm_n))

这就是我们以我们现有的知识得到的Python代码

现在就让我们来看一下代码中的小问题:

3个for循环都只是修改了一个变量,其余的步骤都没有多大的变化,所以就造成了不必要的代码重复,增加代码的空间。世界级的编程大师Martin Fowler先生曾经说过:“代码有很多种坏味道,重复是最坏的一种!”。

函数

所以,在这里就出现了函数,能够让代码减少重复次数,当我们需要的时候,能够直接使用。

  • 函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段。

  • 函数能提高应用的模块性,和代码的重复利用率。

  • 在这之前,我们已经遇到过函数了,比如print(),这种属于Python内置函数,是自带的。但是你也可以自己创建自己需要的函数,这种属于用户自定义函数。

  • 对于Python来说,它有一个非常好的地方,那就是拥有一个非常强大的社区和丰富的第三方库。

  • 就像是,你遇到一个比较大的困难,到社区里看看就可以找到问题,就目前而言,你遇到的所有问题,社区里的人都遇到过并给出了解决方法

函数的定义

Python中的函数与数学中的函数相似,将一个代码块存放在地方,给这个地方一个函数名,调用函数返回的结果称为因变量,自变量可以有,也可以没有,也称为参数。

  • Python用def关键字定义函数
  • 函数名,命名规则与变量的命名规则是一致的
  • 函数名后接( ),在括号中,可以传入参数,用于定义参数
  • return [表达式] 结束函数,选择性返回一个值给调用方,不带表达式的return返回None值。
def add(a, b):
    return a + b

def 函数名(参数列表):

​ 函数体

那么现在我们通过函数对C(M, N)代码进行重构。所谓重构,是在不影响代码执行结果的前提下对代码的结构进行调整。

"""
play01 - 用函数实现:输入M,N计算C(M, N)

Author:悾格
Date: 2021/8/7
"""


def fac(num):
    """求阶乘"""
    result = 1
    for i in range(1, num + 1):
        result *= i
        # 返回参数num的阶乘(因变量)
    return result


m = int(input('m = '))
n = int(input('n = '))
# 调用函数fac()
print(fac(m) // fac(n) // fac(m - n))

函数的基本结构完成以后,你可以通过另一个函数调用执行,也可以直接从 Python 命令提示符执行。

函数的参数
默认参数

在定义函数时,函数可以没有参数(自变量),但是圆括号()是必须有的。当函数中没有参数值时,返回的值是根据函数中某个值的变化而变化的,调用时无法改变其变量。函数也可以拥有默认值,调用不加参数时,会输出默认

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值