python自定义函数变量值的传递
时间: 2024-07-14 17:01:20 浏览: 117
在Python中,函数可以接受参数并处理它们,其中参数有两种基本传递方式:位置参数和关键字参数。
1. **位置参数**:通过参数的位置来传递,即按照函数定义中的顺序提供值。例如:
```python
def greet(name):
print(f"Hello, {name}!")
greet("Alice") # "Hello, Alice"
```
在这个例子中,`name`是一个位置参数,它的值由"Bob"传递给函数。
2. **默认参数**:如果函数定义中有默认值,那么未指定的参数将采用默认值。如:
```python
def greet(name="Friend"):
print(f"Hello, {name}!")
greet() # "Hello, Friend"
greet("Alice") # "Hello, Alice"
```
`name`有默认值"Friend",所以调用时不传参会用默认值。
3. **关键字参数**:通过参数名来传递,无论参数出现在何处,都可以用名字引用它。这使得函数调用更易读,特别是当需要改变参数顺序时:
```python
def greet(**kwargs): # 使用**运算符接收任意关键字参数
for key, value in kwargs.items():
print(f"{key}: {value}")
greet(name="Alice", age=25) # 输出 "name: Alice", "age: 25"
```
4. **可变长度参数**:`*args`用于接受任意数量的位置参数,而`**kwargs`用于接受任意数量的关键字参数:
```python
def process(*args, **kwargs):
for arg in args:
print(arg)
for key, val in kwargs.items():
print(f"{key}: {val}")
process(1, 2, 3, name="Alice", greeting="Hi") # 输出 1 2 3 name: Alice greeting: Hi
```
**相关问题--:**
1. Python中如何区分位置参数和关键字参数?
2. 可变长度参数的应用场景有哪些?
3. 函数内部能否修改关键字参数的值?