Python基础学习函数+模块+类

Python基础学习——函数、模块和类

在Python中,函数、模块和类都是非常重要的基础知识。

函数

函数是一块可重用的代码,它接受输入并返回输出。函数的优点是可以提高代码的可读性和重复利用性。

函数的定义和调用

在Python中,定义函数的语法为:

def function_name(parameter1, parameter2, ...):
    # function body

其中,def关键字表示要定义一个函数,function_name是函数的名称,parameter1parameter2等是函数的参数。函数的参数可以没有,也可以有多个。

例如,我们定义一个简单的函数,用于计算两个数的和:

def add(a, b):
    return a + b

函数体中使用了return语句返回了计算结果。这个函数可以通过以下方式进行调用:

result = add(1, 2)
print(result)  # 输出3

函数的参数传递方式

在Python中,函数的参数可以有两种传递方式:

  1. 值传递
  2. 引用传递

当函数的参数是不可变类型时(如数字、字符串、元组等),Python会采用值传递的方式。例如:

def increment(x):
    x += 1

a = 1
increment(a)
print(a)  # 输出1

在这个例子中,虽然函数中将x加了1,但是对于全局变量a没有任何改变,因为a是不可变类型,传递的是值。

当函数的参数是可变类型时(如列表、字典等),Python会采用引用传递的方式。例如:

def append_element(lst, element):
    lst.append(element)

lst = [1, 2, 3]
append_element(lst, 4)
print(lst)  # 输出[1, 2, 3, 4]

在这个例子中,函数中向列表中添加元素后,对于全局变量lst也发生了改变,因为列表是可变类型,传递的是引用。

函数的默认参数

在Python中,可以给函数的参数指定默认值。例如:

def power(x, n=2):
    return x ** n

print(power(3))  # 输出9
print(power(3, 3))  # 输出27

当给出第二个参数时,函数使用第二个参数作为幂,如果不给出第二个参数,函数默认使用2作为幂。

函数的可变参数

在Python中,可以使用可变参数接受不确定数量的参数。在函数的参数前加上一个*即可:

def sum(*args):
    result = 0
    for i in args:
        result += i
    return result

print(sum(1, 2, 3))  # 输出6

这个sum函数可以接受任意数量的参数,将它们相加并返回结果。

模块

在Python中,模块是指一个包含Python代码的文件。一个模块可以包含类、函数和变量等。

模块的导入和使用

在Python中,使用import关键字来导入模块。例如,我们想导入Python标准库中的os模块,可以使用以下代码:

import os

导入模块后,就可以使用其中的函数和变量了。例如,我们可以使用os.getcwd()函数来获取当前工作目录:

import os

current_dir = os.getcwd()
print(current_dir)

模块别名和局部导入

使用import导入模块时,也可以给模块指定别名,这样可以方便地使用模块功能:

import numpy as np

arr = np.array([1, 2, 3])
print(arr)

此外,我们还可以使用from语句从模块中导入部分功能:

from math import sin, cos

print(sin(0))
print(cos(0))

这个例子中,我们只从math模块中导入了sincos函数。

在Python中,类是一种抽象的数据类型,它可以有属性和方法。类的使用可以提高代码的面向对象程度,方便代码的组织与重用。

类的定义和实例化

在Python中,定义类的语法为:

class ClassName:
    def __init__(self, parameter1, parameter2, ...):
        # constructor
    def method1(self, parameter1, parameter2, ...):
        # method1 implementation
    def method2(self, parameter1, parameter2, ...):
        # method2 implementation

其中,__init__方法是构造函数,用于在类的实例化时初始化对象;method1method2是类的方法,它们可以访问和修改类的属性。

例如,我们定义一个简单的类来表示一个点:

class Point:
    def __init__(self, x, y):
        self.x = x
        self.y = y
    def distance(self, other):
        dx = self.x - other.x
        dy = self.y - other.y
        return (dx ** 2 + dy ** 2) ** 0.5

这个Point类有一个构造函数,用于初始化xy属性,还有一个distance方法,可以计算两个点之间的距离。

实例化类的语法为:

point1 = Point(0, 0)
point2 = Point(3, 4)
distance = point1.distance(point2)
print(distance)  # 输出5.0

类的继承和方法重载

在Python中,类可以通过继承来获得父类的属性和方法,同时也可以重载父类的方法来符合需求。例如,我们定义一个继承Point类的ColoredPoint类,并重载它的构造函数:

class ColoredPoint(Point):
    def __init__(self, x, y, color):
        super().__init__(x, y)
        self.color = color

这个ColoredPoint类从Point类继承了xy属性和distance方法,并在它的构造函数中添加了color属性。在__init__方法中,我们使用了super()函数来调用父类的构造函数。

类的静态方法和类方法

在Python中,可以定义静态方法和类方法。

静态方法使用@staticmethod装饰器来定义,它可以不依赖于类的实例而存在。例如:

class MyClass:
    @staticmethod
    def method():
        return "Hello, static method!"

类方法使用@classmethod装饰器来定义,它在类的范围内运行,可以访问和修改类的属性。例如:

class Point:
    point_num = 0
    def __init__(self, x, y):
        self.x = x
        self.y = y
        Point.point_num += 1
    @classmethod
    def get_point_num(cls):
        return cls.point_num

p1 = Point(0, 0)
p2 = Point(1, 1)
print(Point.get_point_num())  # 输出2

这个Point类有一个类属性point_num,表示实例化对象的数量。在每次对象初始化时,point_num加1。类方法get_point_num可以返回当前实例化对象的数量。

示例说明

  1. 定义一个Student类,包括nameagesex三个属性,分别为字符串、整数、字符串类型,还有一个方法show用于输出该学生的信息。实例化三个学生对象,调用show方法输出这三个学生的信息。
class Student:
    def __init__(self, name, age, sex):
        self.name = name
        self.age = age
        self.sex = sex
    def show(self):
        print("Name: {}, Age: {}, Sex: {}".format(self.name, self.age, self.sex))

student1 = Student("Tom", 20, "male")
student2 = Student("Lucy", 19, "female")
student3 = Student("Mike", 21, "male")

student1.show()
student2.show()
student3.show()

运行结果:

Name: Tom, Age: 20, Sex: male
Name: Lucy, Age: 19, Sex: female
Name: Mike, Age: 21, Sex: male
  1. 定义一个函数find_max,用于在列表中查找最大的元素,如果找到则返回该元素的索引,否则返回-1。
def find_max(lst):
    if len(lst) == 0:
        return -1
    max_index = 0
    for i in range(1, len(lst)):
        if lst[i] > lst[max_index]:
            max_index = i
    return max_index

list1 = [5, 3, 4, 7, 1]
list2 = []

print(find_max(list1))  # 输出3
print(find_max(list2))  # 输出-1

运行结果:

3
-1

以上就是Python基础学习中函数、模块和类的完整攻略。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python基础学习函数+模块+类 - Python技术站

(0)
上一篇 2023年6月5日
下一篇 2023年6月5日

相关文章

  • Apache Linkis 中间件架构及快速安装步骤

    下面我将为你详细讲解Apache Linkis中间件架构及快速安装步骤。 Apache Linkis 中间件架构 Apache Linkis是受LinkedIn Data Platform启发而构建的开源数据工作流平台。它为数据工作者提供了一个易于使用,可扩展,多租户的数据智能解决方案。Apache Linkis架构由五个关键组件组成: Gateway:网关…

    python 2023年6月3日
    00
  • Python中元组的概念及应用小结

    Python中元组的概念及应用小结 什么是元组 元组(tuple)是一种有序的不可变序列类型,它可以用来存储一组数据,一旦创建就无法修改。元组使用小括号 () 来表示,可以包含任意类型的数据,包括数字、字符串、列表、字典、甚至是另一个元组。 创建元组 创建元组非常简单,只需使用一对小括号 () ,将多个数据用逗号 , 隔开即可,如下所示: # 创建一个包含多…

    python 2023年5月14日
    00
  • python pdfplumber库批量提取pdf表格数据转换为excel

    我来为你详细讲解一下“Python pdfplumber库批量提取pdf表格数据转换为Excel”的完整攻略。 一、pdfplumber库简介 pdfplumber是一个用于提取PDF文本内容和元数据的Python库。它可以用于提取文本、表格和图像等元素。pdfplumber可以在Windows、macOS和Linux等操作系统上运行,并且可以与Python…

    python 2023年6月5日
    00
  • python实现登录与注册功能

    Python实现登录与注册功能攻略 1. 什么是登录与注册功能? 登录与注册功能是现代网站常见的用户认证机制,用户在注册账号后,需要通过登录界面输入之前注册时的用户名和密码进行认证,认证通过后才能进入网站的各种功能页面。 2. 实现登录与注册功能的流程: 实现登录和注册功能的一般流程为:前端通过用户输入的数据生成请求,发送到后端Python程序以验证用户身份…

    python 2023年5月19日
    00
  • Python中常用功能的实现代码分享

    Python是一种高级编程语言,具有简洁易读、开发速度快等特点,广泛应用于各领域。在Python的编程过程中,有许多常用的功能需要实现。以下是Python中常用功能的实现代码分享的完整攻略。 一、环境配置 在进行Python编程之前,需要进行环境配置。Python环境配置一般包括三个步骤:下载Python、安装Python和安装开发工具。 下载Python …

    python 2023年5月19日
    00
  • pip报错“ValueError: invalid literal for int() with base 10: ‘2.0’”怎么处理?

    当使用pip安装Python包时,可能会遇到“ValueError: invalid literal for int() with base 10: ‘2.0’”错误。这个错误通常是由以下原因之一引起的: 包版本号格式不正确:如果包版本号格式不正确,则可能会出现此错误。在这种情况下,需要更改包版本号格式。 pip版本过低:如果pip版本过低,则可能会出此错误…

    python 2023年5月4日
    00
  • Django笔记三十六之单元测试汇总介绍

    本文首发于公众号:Hunter后端 原文链接:Django笔记三十六之单元测试汇总介绍 Django 的单元测试使用了 Python 的标准库:unittest。 在我们创建的每一个 application 下面都有一个 tests.py 文件,我们通过继承 django.test.TestCase 编写我们的单元测试。 本篇笔记会包括单元测试的编写方式,单…

    python 2023年5月7日
    00
  • python中pyqtgraph知识点总结

    针对题目中提到的“python中pyqtgraph知识点总结”的完整攻略,我可以提供以下内容: 1. pyqtgraph简介 pyqtgraph是一个用于数据可视化的Python工具包,它结合了PyQt和NumPy库的特性。使用pyqtgraph库,可以轻松创建交互式的数据图表、处理海量数据等等。 2. pyqtgraph常用功能 2.1 数据处理 pyqt…

    python 2023年5月14日
    00
合作推广
合作推广
分享本页
返回顶部