Python 中的函数参数如何传递?

开发 前端
Python 使用的是“按对象引用传递”(pass by object reference)的方式。这意味着当你将一个对象作为参数传递给函数时,你实际上是在传递该对象的引用而不是副本。

参数传递机制

Python 使用的是“按对象引用传递”(pass by object reference)的方式。这意味着当你将一个对象作为参数传递给函数时,你实际上是在传递该对象的引用而不是副本。因此,如果在函数内部修改了可变对象(如列表、字典),这些修改会反映到外部的对象上;而对于不可变对象(如整数、字符串、元组),由于它们不能被修改,所以不会影响原始对象。

参数类型

位置参数(Positional Arguments) 这是最常见的参数传递方式,调用函数时按照定义顺序传递参数。

def greet(name, message):
    print(f"Hello {name}, {message}")
greet("Alice", "Good morning!")

关键字参数(Keyword Arguments) 通过指定参数名来传递参数值,这样可以不按照定义顺序传递参数。

def greet(name, message):
    print(f"Hello {name}, {message}")
greet(message="Good morning!", name="Alice")

默认参数(Default Arguments) 定义函数时为参数提供默认值,当调用函数时没有提供对应的参数值,则使用默认值。

def greet(name, message="Good day!"):
    print(f"Hello {name}, {message}")
greet("Bob")  # 使用默认消息
greet("Charlie", "How are you?")  # 覆盖默认消息

可变数量的参数(*args 和 kwargs)

*args:允许你传入任意数量的位置参数,这些参数会被收集到一个元组中。

def sum_numbers(*args):
    return sum(args)
print(sum_numbers(1, 2, 3))  # 输出6

*kwargs:允许你传入任意数量的关键字参数,这些参数会被收集到一个字典中。

def print_info(**kwargs):
    for key, value in kwargs.items():
        print(f"{key}: {value}")
print_info(name="Alice", age=30)

可变对象 vs 不可变对象

对于不可变对象(如整数、字符串、元组),在函数内部对参数的任何改变都不会影响到外部的变量,因为实际上是在操作一个新的对象。

def modify_string(s):
    s += " world"
    print(s)  # 输出 "hello world"
original = "hello"
modify_string(original)
print(original)  # 输出 "hello"

对于可变对象(如列表、字典),在函数内部对参数的改变会影响到外部的变量,因为两者指向同一个对象。

def append_to_list(lst):
    lst.append(4)
my_list = [1, 2, 3]
append_to_list(my_list)
print(my_list)  # 输出 [1, 2, 3, 4]

通过理解这些概念,你可以更好地控制函数参数的传递方式,并根据需要选择最合适的参数传递策略。无论是简单的函数调用还是复杂的数据处理逻辑,正确地使用参数传递机制都是至关重要的。

责任编辑:华轩 来源: 测试开发学习交流
相关推荐

2023-03-09 16:39:23

Python传递参数

2023-11-17 14:10:08

C++函数

2010-03-11 11:07:37

Python函数参数

2010-07-26 13:13:33

Perl函数参数

2025-01-17 10:52:26

定义函数编程Python

2009-12-17 17:04:09

Ruby函数参数传递

2017-12-05 08:53:20

Golang参数传递

2024-04-28 11:36:07

LambdaPython函数

2024-09-19 20:59:49

2012-02-21 14:04:15

Java

2022-11-06 21:50:59

Python编程函数定义

2021-03-29 15:32:31

Python函数参数

2023-11-08 14:41:12

Python函数

2021-03-03 10:00:52

Python函数Python基础

2009-11-26 09:18:56

PHP函数参数传递方法

2023-11-23 12:47:03

C++函数参数

2010-11-08 14:47:02

Powershell函数

2010-01-25 09:57:39

C++函数参数

2024-12-09 09:00:00

拷贝构造函数传递编程

2024-01-17 06:23:35

SwiftTypeScript定义函数
点赞
收藏

51CTO技术栈公众号