【Python入门】第4节 函数


✅函数介绍

  1. 函数是:
    组织好的、可重复使用的、用来实现特定功能的代码段
  2. 使用函数的好处是:
    将功能封装在函数内,可供随时随地重复利用
    提高代码的复用性,减少重复代码,提高开发效率

✅函数的定义

函数的定义:

def 函数名(传入参数):
    函数体
    return 返回值

函数的调用:函数名(参数)

注意事项:

① 参数如不需要,可以省略
② 返回值如不需要,可以省略
③ 函数必须先定义后使用

✅函数的参数

  • 学习目标:掌握函数传入参数的使用

语法:

# 定义函数
def add(x, y):
	result=x+y
    print(f"{x}+ {y}的结果是:{resut}")

# 调用函数
add(56)
  • 函数定义中,提供的x和y,称之为:形式参数(形参),表示函数声明将要使用2个参数

    • 参数之间使用逗号进行分隔
  • 函数调用中,提供的5和6,称之为:实际参数(实参),表示函数执行时真正使用的参数值

    • 传入的时候,按照顺序传入数据,使用逗号分隔

✅函数的返回值

  • 函数返回值的定义
  • None类型
  1. 什么是函数返回值?
    函数在执行完成后,返回给调用者的结果
  2. 返回值的应用语法:
    使用关键字:return 来返回结果
  3. 注意:
    • 函数体在遇到return后就结束了,所以写在return后的代码不会执行。
    • 如果函数没有使用return语句返回数据,则返回的是None字面量,表示空的、无实际意义的意思

None其类型是:<class ‘NoneType’>。

🧊None类型的应用场景

None作为一个特殊的字面量,用于表示:空、无意义,其有非常多的应用场景。

  • 用在函数无返回值上

  • 用在if判断上

    • 在if判断中,None等同于False
    • 一般用于在函数中主动返回None,配合if判断做相关处理
  • 用于声明无内容的变量上

    • 定义变量,但暂时不需要变量有具体值,可以用None来代替

image-20240820214951308

✅函数说明文档

  • 掌握通过注释对函数进行解释说明

函数是纯代码语言,想要理解其含义,就需要一行行的去阅读理解代码,效率比较低。

我们可以给函数添加说明文档,辅助理解函数的作用。

语法如下:

image-20240820223610067

通过多行注释的形式,对函数进行说明解释

  • 内容应写在函数体之前
  • :param 用于解释参数
  • :return 用于解释返回值

在PyCharm编写代码时,可以通过鼠标悬停,查看调用函数的说明文档

image-20240820223659309

✅函数的嵌套调用

  1. 掌握函数的嵌套调用
  2. 理解嵌套调用的执行流程

所谓函数嵌套调用指的是一个函数里面又调用了另外一个函数

执行过程

image-20240821215628392

✅变量的作用域

1.知道什么是局部变量

2.知道什么是全局变量

局部变量:

  • 定义:定义在函数体内部的变量,即只在函数体内部生效

  • 作用:在函数体内部,临时保存数据,即当函数调用完成后,则销毁局部变量

全局变量:

  • 定义:指的是在函数体内、外都能生效的变量

global关键字:

使用 global关键字 可以在函数内部声明变量为全局变量, 如下所示

image-20240821220850303


在这里插入图片描述

📖入门思维导图

<think>好的,我现在需要帮助用户学习Python中面向对象编程相关的函数入门教程。首先,用户提到了“面向对象相关的函数”,这可能涉及到类中的方法、构造函数、特殊方法(魔术方法)等。我需要结合提供的引用内容,整理出一个清晰的教程结构。 首先,根据引用[2],Python是完全面向对象的,一切皆对象。所以需要从类和对象的基本概念开始。用户可能对类和对象的关系不太清楚,需要先解释这些基本概念。 然后,引用[4]提到类的方法必须包含参数'self',这说明需要讲解如何在类中定义方法,包括实例方法。构造函数(__init__)也是一个重点,属于特殊方法,应该在教程中体现。 接下来,用户可能想知道如何创建类和实例,以及如何调用方法。这部分需要给出具体的代码示例,比如定义一个类,添加方法,创建实例并调用方法。例如,可以举一个Person类的例子,包含初始化方法和普通方法。 另外,引用[3]提到Python支持多态但不明显,这部分可能需要简单提及,但用户主要关注函数,所以可能不需要深入讨论多态,但可以提到一些特殊方法如__str__,__add__等,这些属于面向对象中的魔术方法,属于函数的一部分。 还需要考虑封装的概念,如私有属性和方法,这在Python中通过命名约定(如单下划线或双下划线)来实现。这部分也是面向对象的重要部分,应该包含在教程中。 用户的问题中提到“函数”,可能包括类方法、静态方法。引用[4]提到类的方法定义,但用户可能还需要了解@classmethod和@staticmethod装饰器,这些属于面向对象中的函数类型,需要解释它们的区别和使用场景。 最后,需要确保教程结构清晰,分步骤讲解,并附上代码示例。同时,根据用户提供的引用内容,引用相关的知识点,比如在讲解类的方法时引用[4],在讲解封装时引用[2]等。 现在,整理结构: 1. 类和对象的基本概念(引用[2]) 2. 定义类与创建实例(代码示例) 3. 构造函数__init__(代码示例) 4. 实例方法(包含self参数,引用[4]) 5. 类的继承(简单提及,可能用户需要入门内容,暂时不深入) 6. 特殊方法(魔术方法)如__str__, __add__ 7. 封装与访问控制(私有属性) 8. 类方法和静态方法(@classmethod, @staticmethod) 在教程中需要确保所有数学公式或代码符合格式要求,比如行内代码用$...$,独立代码块用```python等。同时,生成相关问题,帮助用户进一步学习。 需要检查是否有遗漏的部分,比如是否覆盖了用户所需的“函数”部分,包括方法、魔术方法、类方法、静态方法等。确保回答真实可靠,引用正确的内容,如引用[2]和[4]关于方法定义的部分。 可能还需要提醒用户,尽管Python支持多态和继承,但作为入门教程,先掌握基本概念和函数的使用更为重要。最后,生成相关问题,如如何定义类,self的作用,继承的使用等。</think>### Python面向对象编程函数入门教程 #### 1. **类与对象的基本概念** Python中,**类**是对象的模板,而**对象**是类的实例。例如,“人类”是一个类,而“张三”是其实例。所有类通过`class`关键字定义,类中包含**方法**(函数)和**属性**(变量)。 引用[^2]提到:“Python中,一切皆对象”,包括数据类型、函数等均以对象形式存在。 #### 2. **定义类与创建实例** ```python class Person: def __init__(self, name, age): self.name = name # 实例属性 self.age = age def greet(self): # 实例方法 return f"你好,我是{self.name},今年{self.age}岁。" # 创建实例 p = Person("李四", 25) print(p.greet()) # 输出:你好,我是李四,今年25岁。 ``` - `__init__`是构造函数,用于初始化实例属性。 - `self`表示实例本身,是方法的第一个参数[^4]。 #### 3. **实例方法与特殊方法** - **实例方法**:需包含`self`参数,用于操作实例属性。 - **特殊方法(魔术方法)**:以双下划线`__`开头和结尾,例如: ```python class Vector: def __init__(self, x, y): self.x = x self.y = y def __add__(self, other): # 实现向量加法 return Vector(self.x + other.x, self.y + other.y) def __str__(self): # 定义打印格式 return f"({self.x}, {self.y})" v1 = Vector(2, 3) v2 = Vector(1, 4) print(v1 + v2) # 输出:(3, 7) ``` #### 4. **封装与访问控制** Python通过命名约定实现封装: - **公有属性**:如`self.name`。 - **私有属性**:以单下划线`_`或双下划线`__`开头,例如: ```python class BankAccount: def __init__(self, balance): self.__balance = balance # 私有属性 def deposit(self, amount): self.__balance += amount def get_balance(self): # 提供访问接口 return self.__balance ``` #### 5. **类方法与静态方法** - **类方法**:使用`@classmethod`装饰器,操作类属性: ```python class Student: count = 0 # 类属性 @classmethod def increment_count(cls): cls.count += 1 ``` - **静态方法**:使用`@staticmethod`装饰器,与类无关的逻辑: ```python class MathUtils: @staticmethod def add(a, b): return a + b ``` #### 6. **继承与多态** ```python class Animal: def speak(self): pass class Dog(Animal): def speak(self): # 方法重写 return "汪汪!" class Cat(Animal): def speak(self): return "喵喵!" ``` Python支持多态,但因其动态类型特性,无需显式声明类型[^3]。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小满@

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值