自行设计简单的函数实现(具体功能不限),并完成以下实验:(1)默认参数的使用;(2)函数的返回值(包括无返回值、一个及多个返回值);(3)变量的作用域;(4)在函数内部使用全局变量;(4)在函数内部修改全局变量的值;(5)以可变数据类型(例如列表和字典)作为参数,在函数内部对其进行修改,并检验函数调用前后对应变量的值的变化情况;(6)参考“3.2 有关函数的更多信息.pdf”中的“重新赋值与修改(Reassignment vs Modifying)”部分内容,设计相关实验以检验在函数体内部修改值和重新分配变量名称之间的区别。
时间: 2023-12-27 08:05:06 浏览: 70
自己编写函数
下面我设计一个函数,实现对一个列表中的奇数元素进行平方操作,并返回修改后的列表:
```python
def square_odd(lst=[]):
for i in range(len(lst)):
if lst[i] % 2 == 1:
lst[i] = lst[i] ** 2
return lst
```
这个函数使用了默认参数,如果调用时不传入参数,则会使用默认值`[]`作为列表。
这个函数的返回值是一个列表,其中奇数元素已经被平方。
函数内部使用的变量`i`只在函数内部有效,这是局部变量的作用域。
下面我再定义一个全局变量`total`,并在函数内部使用它:
```python
total = 0
def count_total(lst=[]):
global total
for i in lst:
total += i
return total
```
这个函数使用了全局变量`total`,并在函数内部对它进行修改。
下面我定义一个字典作为参数,并在函数内部对其进行修改:
```python
def modify_dict(d={}):
d['new_key'] = 'new_value'
return d
```
这个函数使用了可变数据类型(字典),并在函数内部对其进行修改。调用函数前后,字典的值会发生变化。
最后,我设计一个实验,检验在函数体内部修改值和重新分配变量名称之间的区别。定义一个全局变量`a`,并调用两个函数:
```python
a = 0
def modify_a():
a = 1
def reassign_a():
global a
a = 1
modify_a()
print(a) # 输出 0
reassign_a()
print(a) # 输出 1
```
函数`modify_a()`在函数内部对局部变量`a`进行重新赋值,不会影响全局变量`a`的值。函数`reassign_a()`使用了全局变量`a`,并对它进行了重新赋值,会影响全局变量`a`的值。
阅读全文