Python基础学习——函数、模块和类
在Python中,函数、模块和类都是非常重要的基础知识。
函数
函数是一块可重用的代码,它接受输入并返回输出。函数的优点是可以提高代码的可读性和重复利用性。
函数的定义和调用
在Python中,定义函数的语法为:
def function_name(parameter1, parameter2, ...):
# function body
其中,def
关键字表示要定义一个函数,function_name
是函数的名称,parameter1
、parameter2
等是函数的参数。函数的参数可以没有,也可以有多个。
例如,我们定义一个简单的函数,用于计算两个数的和:
def add(a, b):
return a + b
函数体中使用了return
语句返回了计算结果。这个函数可以通过以下方式进行调用:
result = add(1, 2)
print(result) # 输出3
函数的参数传递方式
在Python中,函数的参数可以有两种传递方式:
- 值传递
- 引用传递
当函数的参数是不可变类型时(如数字、字符串、元组等),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
模块中导入了sin
和cos
函数。
类
在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__
方法是构造函数,用于在类的实例化时初始化对象;method1
和method2
是类的方法,它们可以访问和修改类的属性。
例如,我们定义一个简单的类来表示一个点:
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
类有一个构造函数,用于初始化x
和y
属性,还有一个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
类继承了x
和y
属性和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
可以返回当前实例化对象的数量。
示例说明
- 定义一个
Student
类,包括name
、age
、sex
三个属性,分别为字符串、整数、字符串类型,还有一个方法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
- 定义一个函数
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技术站