Python 中的函数参数可以是任何类型的对象,包括数字、字符串、列表、元组和字典等。当我们定义一个函数时,可以在函数定义中使用函数参数,以便在调用函数时将对象传递给函数。
函数参数为对象的使用方法
在 Python 中,向函数传递参数的方式有两种:传递对象的引用和传递对象的值。当函数使用对象引用时,函数中对对象的修改也会影响到主调函数中的对象。当函数使用对象的值时,函数中对对象的修改不会影响到主调函数中的对象。
以下是一个简单的例子,展示了如何使用函数参数为对象:
def change_list(mylist):
"修改传递进来的列表"
mylist.append([1,2,3,4])
print ("函数内取值: ", mylist)
return
# 调用 change_list 函数
mylist = [10,20,30]
change_list(mylist)
print ("函数外取值: ", mylist)
在这个例子中,我们定义了一个名为change_list
的函数,接收一个列表作为参数。在函数内部,我们使用append
函数向传入的列表中添加了另一个列表,然后打印出修改后的列表。接着返回到主调函数,继续打印列表值。
这个例子调用了change_list
函数,并传递mylist
作为参数。在函数内部,我们修改了传递进来的列表,并打印输出。在主调函数中,我们也打印输出了这个列表,可以看到修改后的值。这说明,函数中对传递的列表进行的修改,在主调函数中也可以看到。
在使用函数参数为对象时,需要注意一下几点:
- 是否需要在函数内部修改对象?
- 如果需要修改对象,是否需要保存原始对象?
- 是否需要在主调函数中访问该对象的修改结果?
示例1:Python函数参数为对象的使用
以下的代码展示了另一个例子,说明了如何使用函数参数为对象:
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
def change_age(p):
"修改Person对象的年龄"
p.age += 1
# 实例化一个Person对象
person = Person("张三", 25)
# 调用change_age函数
change_age(person)
# 输出年龄修改后的值
print(person.age)
在这个例子中,我们定义了一个名为Person
的类,并在其中定义了一个名为change_age
的函数。change_age
函数接收一个Person
对象作为参数,并将这个人的年龄加1。
我们创建了一个名为person
的Person
对象,并调用了change_age
函数。然后,我们打印了年龄修改后的值。
输出结果为:26
这意味着,通过函数参数,我们成功地使用对象来修改了person
对象的年龄。
示例2:使用可变对象作为参数
以下代码示例展示了使用可变对象作为函数参数的情况:
def change_dict(d):
"修改传入的字典"
d['name'] = 'Tom'
d['age'] = 25
# 定义字典类型对象
person_dict = {'name':'Jack', 'age':20}
# 调用change_dict函数
change_dict(person_dict)
# 输出修改后的字典
print(person_dict)
这个例子中,我们定义了一个名为change_dict
的函数,将一个字典对象作为参数。在函数内部,我们向这个字典中添加了新的键值对 'name':'Tom'
和 'age':25
。然后,我们在主调函数中打印了该字典对象。可以看到,字典对象已经被修改。
输出结果为:{‘name’: ‘Tom’, ‘age’: 25}
所以,我们可以通过将可变对象作为函数参数传递,实现在函数内部修改对象的目的。
结论
Python 中的函数参数可以是任何类型的对象。可以在函数定义中使用这些参数,并将对象传递给函数。在函数内部,可以修改对象,并返回修改后的结果。在主调函数中可以访问这些对象的修改结果。