Python 类、对象、数据分类、函数参数传递详解
Python 类和对象
在 Python 中,我们可以使用类来定义一个对象,从而方便我们对代码进行组织,代码的重复利用等。定义一个 Python 类,可以使用 class
关键字,例如:
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
def say_hello(self):
print(f"Hello, my name is {self.name}. My age is {self.age}.")
这里我们定义了一个 Person
类,该类拥有两个属性:name
和 age
,并且还拥有一个名为 say_hello
的方法,用于输出一个问候语。类中的 __init__
方法为构造方法,用于初始化该类的实例。self
参数代表该类的实例。
定义一个对象,可以在类的基础上进行实例化,例如:
person = Person("Tom", 18)
person.say_hello()
这里我们实例化了一个 Person
对象,并且调用了该类的 say_hello
方法。执行后输出的结果为:
Hello, my name is Tom. My age is 18.
Python 数据分类
在 Python 中,可以将数据分类为可变数据和不可变数据。
可变数据
可变数据指的是可以修改的数据,包括列表、字典等。例如:
lst = [1, 2, 3] # 定义一个列表
lst.append(4) # 向列表中添加元素
print(lst) # [1, 2, 3, 4]
这里我们使用了 append
方法向列表中添加了一个元素。
不可变数据
不可变数据指的是不能直接修改的数据,包括字符串、元组等。例如:
str1 = "Hello"
str2 = str1.replace("e", "o") # 将字符串中的 e 替换为 o
print(str1) # Hello
print(str2) # Hollo
示例说明
我们定义了一个 Person
类,这个类的属性和方法是不可变的,但是实例的属性却是可变的。我们来看一个例子:
class Person:
def __init__(self, name):
self.name = name
person = Person("Tom")
print(person.name) # Tom
person.name = "Jerry"
print(person.name) # Jerry
在这个例子中,我们定义了一个 Person
类,该类只有一个不可变属性名为 name
。然后我们实例化了一个 Person
对象,并且修改了该实例对象的名字属性。所以,即使类的属性和方法是不可变的,但是实例的属性是可变的。
Python 函数参数传递
在 Python 中,函数参数传递有两种方式:传值和传引用。
传值
传值指的是将变量值拷贝一份作为参数传递给函数,而不是传递该变量的地址。例如:
def test(num):
num += 1
print(num)
n = 1
test(n) # 输出 2
print(n) # 输出 1
在这个例子中,我们定义了一个 test
函数,该函数接受一个数字参数并且将该参数加一。然后我们定义了一个变量 n
,并且将其初始化为 1。接着调用 test
函数,该函数会将传入的参数加一。但是在函数外面,变量 n
的值不会改变。
传引用
传引用指的是将变量的地址作为参数传递给函数,变量本身并没有进行拷贝。例如:
def test(lst):
lst.append(4)
print(lst)
lst = [1, 2, 3]
test(lst) # 输出 [1, 2, 3, 4]
print(lst) # 输出 [1, 2, 3, 4]
在这个例子中,我们定义了一个 test
函数,该函数接受一个列表参数,并且向该列表中添加一个元素 4。然后我们定义了一个列表 lst
,并且将其初始化为 [1, 2, 3]
。再调用 test
函数,该函数会直接修改传入的列表参数 lst
。函数执行完毕后,原本的列表 lst
中便添加了元素 4。
示例说明
我们来看一个例子,探索传值和传引用的区别:
def test1(num):
num += 1
print(num)
def test2(lst):
lst.append(4)
print(lst)
n = 1
test1(n) # 输出 2
print(n) # 输出 1
lst = [1, 2, 3]
test2(lst) # 输出 [1, 2, 3, 4]
print(lst) # 输出 [1, 2, 3, 4]
在这个例子中,我们定义了两个函数,test1
和 test2
,分别用传值 和 传引用 两种方式对变量进行修改。然后我们定义了两个变量 n
和 lst
,分别传入两个函数进行测试。通过这个例子,我们可以看出传值和传引用的区别,也就是说,当需要修改原始变量的值时,应选择传引用方式进行参数传递。
结语
通过本文的介绍,我们了解了 Python 中类和对象的定义及使用,Python 中的数据分类,以及函数参数传递方式(传值和传引用)。希望本文对大家学习 Python 有所帮助。