自行设计简单的函数实现(具体功能不限),并完成以下实验:(1)默认参数的使用;(2)函数的返回值(包括无返回值、一个及多个返回值);(3)变量的作用域;(4)在函数内部使用全局变量;(4)在函数内部修改全局变量的值;(5)以可变数据类型(例如列表和字典)作为参数,在函数内部对其进行修改,并检验函数调用前后对应变量的值的变化情况;(6)参考“3.2 有关函数的更多信息.pdf”中的“重新赋值与修改(Reassignment vs Modifying)”部分内容,设计相关实验以检验在函数体内部修改值和重新分配变量名称之间的区别。
时间: 2023-12-27 21:05:21 浏览: 20
1. 默认参数的使用实验:
```python
def greet(name, message='Hello'):
print(f'{message}, {name}!')
greet('Alice') # 输出: Hello, Alice!
greet('Alice', 'Hi') # 输出: Hi, Alice!
```
2. 函数的返回值实验:
```python
def add(x, y):
return x + y
result = add(3, 4)
print(result) # 输出: 7
```
3. 变量的作用域实验:
```python
def test():
x = 5
print(f'x in function: {x}')
x = 10
test()
print(f'x outside function: {x}')
# 输出:
# x in function: 5
# x outside function: 10
```
4. 在函数内部使用全局变量实验:
```python
x = 10
def test():
print(f'x in function: {x}')
test()
print(f'x outside function: {x}')
# 输出:
# x in function: 10
# x outside function: 10
```
5. 在函数内部修改全局变量的值实验:
```python
x = 10
def test():
global x
x = 5
print(f'x in function: {x}')
test()
print(f'x outside function: {x}')
# 输出:
# x in function: 5
# x outside function: 5
```
6. 以可变数据类型作为参数,在函数内部对其进行修改,并检验函数调用前后对应变量的值的变化情况实验:
```python
def modify_list(lst):
lst.append(5)
my_list = [1, 2, 3]
print(f'Before function call: {my_list}')
modify_list(my_list)
print(f'After function call: {my_list}')
# 输出:
# Before function call: [1, 2, 3]
# After function call: [1, 2, 3, 5]
```
7. 实验重新赋值与修改的区别:
```python
def test1():
x = 10
x = 20
print(f'x in test1: {x}')
def test2():
x = [10]
x[0] = 20
print(f'x in test2: {x}')
test1()
test2()
# 输出:
# x in test1: 20
# x in test2: [20]
```
在第一个函数中,我们重新给变量 `x` 赋了一个新值,因此 `x` 的值变为了 20。在第二个函数中,我们修改了列表变量 `x` 的第一个元素的值,但是 `x` 这个变量本身并没有被重新赋值,因此 `x` 仍然指向原来的列表,只是这个列表的第一个元素的值被修改了。