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

yizhihongxing

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日

相关文章

  • Python结合Selenium简单实现Web自动化测试

    下面我将为您详细讲解“Python结合Selenium简单实现Web自动化测试”的完整攻略。 一、什么是Selenium Selenium是广泛使用的Web应用程序自动化测试工具,支持多种浏览器和多种语言编写自动化测试脚本。它提供了一种便捷的方式来在Web应用程序上执行测试操作。 二、Selenium Web自动化测试的应用场景 Web自动化测试是在Web应…

    python 2023年5月19日
    00
  • 跨数据帧的 Python 应用函数

    【问题标题】:Python Apply function across a DataFrame跨数据帧的 Python 应用函数 【发布时间】:2023-04-01 22:08:01 【问题描述】: Function = sqrt( AB x BA ) A B C D A 1 2 3 4 B 1 2 3 4 C 1 2 3 4 D 1 2 3 4 AB = …

    Python开发 2023年4月8日
    00
  • python实现线性回归算法

    Python实现线性回归算法 线性回归是一种常用的机器学习算法,它可以用于预测数值型数据。Python中,可以使用NumPy和scikit-learn库实现线性回归算法。本文将详细讲解Python实现线性回归算法的整个攻略,包括算法原理、Python实现过程和示例。 算法原理 线性回归的基本思想是根据已知数据,建立一个线性模型,预测未知数据。具体实现过程如下…

    python 2023年5月14日
    00
  • Python使用CMD模块更优雅的运行脚本

    Python自带了CMD模块,这个模块可以使Python程序更加优雅地运行脚本。下面是如何使用CMD模块运行Python脚本的详细攻略。 安装CMD模块 CMD模块在Python官方文档中的称呼是cmd — Support for line-oriented command interpreters。这个模块已经默认安装在标准Python环境中,你无需再次安…

    python 2023年5月20日
    00
  • Python中os模块的简单使用及重命名操作

    当我们需要对操作系统进行一些高级操作时,Python中的os模块是非常有用的一个模块。os模块提供对操作系统进行访问的接口,以我们能够编写出功能强大的程序。 简单使用 首先,我们需要导入os模块: import os 获取当前工作目录 可以使用os.getcwd()方法获取当前工作目录: import os # 获取当前工作目录 current_dir = …

    python 2023年6月2日
    00
  • python如何基于redis实现ip代理池

    Python基于Redis实现IP代理池是一种常见的应用场景,可以用于爬虫、数据采集等领域。本文将详细讲解如何使用Python基于Redis实现IP代理池,包括如何安装和使用Redis、如何实现IP代理池、如何使用IP代理池等。 安装和使用Redis 首先,我们需要安装和使用Redis。Redis是一种内存数据库,可以用于存储数据、缓存数据等操作。以下是一个…

    python 2023年5月15日
    00
  • 深入讲解Python中的迭代器和生成器

    标题:深入讲解Python中的迭代器和生成器 什么是迭代器? Python中的迭代器是一种访问集合元素的对象,可以使用for循环遍历集合中的元素,同时也可以使用next()函数逐个访问集合中的元素。 迭代器的定义 迭代器对象从一个集合中取出一个元素后,依次再取出下一个元素,直到取出集合中的所有元素为止。迭代器的定义需要满足以下条件: 实现 next() 方法…

    python 2023年6月3日
    00
  • python爬虫 execjs安装配置及使用

    下面是关于“Python爬虫execjs安装配置及使用”的完整攻略。 1. execjs 简介 execjs是Python的一个库,它可以用来执行JavaScript代码。它的使用非常简单,只需要传入一个JavaScript脚本和需要执行的函数名就可以了。 execjs适用于使用JS编写的一些算法,或者使用JS实现的网站的信息抓取。 2. 安装execjs …

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