如何在 Python 函数中按引用传递参数?


在 Python 中,你无法像在其他编程语言(如 C++)中那样按引用传递参数。但是,有一种方法可以使用可变数据类型(如列表和字典)在 Python 中模拟按引用传递的行为。

在 Python 中,参数是通过赋值传递的,这意味着函数定义中的参数名称成为传递给参数的对象的引用。因此,Python 中没有直接的方法来按引用传递参数。

但是,您可以通过将可变对象(如列表或字典)传递给函数并在函数内部修改它来实现类似的效果。

以下是一些演示此功能的代码示例

示例

在这个例子中,我们定义了一个名为 add_to_list 的函数,它接受两个参数 lst 和 num。我们将 my_list 传递给函数作为 lst,并将整数 4 作为 num 传递。在函数内部,我们将 num 的值追加到 lst 的末尾,并且由于列表是可变数据类型,因此这会修改原始列表。因此,当我们在函数外部打印 my_list 时,我们可以看到它已被修改为 [1, 2, 3, 4]。

def add_to_list(lst, num):
    lst.append(num)
my_list = [1, 2, 3]
add_to_list(my_list, 4)
print(my_list)

输出

[1, 2, 3, 4]

示例

在这个例子中,我们定义了一个名为 modify_dict 的函数,它接受三个参数 dct、key 和 value。我们将 my_dict 传递给函数作为 dct,将字符串 'b' 作为 key 传递,并将整数 4 作为 value 传递。在函数内部,我们将字典 dct 中键 key 的值修改为 value。由于字典也是可变数据类型,因此这会修改原始字典。因此,当我们在函数外部打印 my_dict 时,我们可以看到它已被修改为 {'a': 1, 'b': 4, 'c': 3}。

def modify_dict(dct, key, value):
    dct[key] = value
my_dict = {'a': 1, 'b': 2, 'c': 3}
modify_dict(my_dict, 'b', 4)
print(my_dict) 

输出

{'a': 1, 'b': 4, 'c': 3}

示例

在这个例子中,我们定义了一个名为 increment_list() 的函数,它接受一个列表作为参数,并使用 for 循环将列表的每个元素加 1。然后我们创建一个名为 numbers 的列表,其值为 [1, 2, 3],使用 numbers 作为参数调用 increment_list() 函数,并打印修改后的 numbers 列表。

def increment_list(lst):
    for i in range(len(lst)):
        lst[i] += 1

numbers = [1, 2, 3]
increment_list(numbers)
print(numbers)  

输出

[2, 3, 4]

示例

在这个例子中,我们定义了一个名为 add_to_dict() 的函数,它接受一个字典、一个键和一个值作为参数,并将键值对添加到字典中。然后我们创建一个名为 scores 的字典,其值为 {"Alice": 80, "Bob": 90},使用 scores、"Charlie" 和 95 作为参数调用 add_to_dict() 函数,并打印修改后的 scores 字典。

def add_to_dict(dictionary, key, value):
    dictionary[key] = value

scores = {"Alice": 80, "Bob": 90}
add_to_dict(scores, "Charlie", 95)
print(scores)  # Output: {"Alice": 80, "Bob": 90, "Charlie": 95}

输出

{'Alice': 80, 'Bob': 90, 'Charlie': 95}

示例

在这个例子中,我们定义了一个名为 replace_string() 的函数,它接受一个字符串和一个新字符串作为参数,并将新字符串分配给保存原始字符串的变量。然后我们创建一个名为 message 的字符串,其值为 "Hello, world!",使用 message 和 "Goodbye, world!" 作为参数调用 replace_string() 函数,并打印原始 message 字符串。请注意,message 变量不会被函数修改,因为字符串在 Python 中是不可变的。

def replace_string(string, new_string):
    string = new_string
message = "Hello, world!"
replace_string(message, "Goodbye, world!")
print(message)  # Output: "Hello, world!"

输出

Hello, world!

更新于: 2023年8月10日

706 次查看

开启你的 职业生涯

通过完成课程获得认证

开始学习
广告