1. 自行设计简单的函数实现(具体功能不限),并完成以下实验:(1)默认参数的使用;(2)函数的返回值(包括无返回值、一个及多个返回值);(3)变量的作用域;(4)在函数内部使用全局变量;(4)在函数内部修改全局变量的值;(5)以可变数据类型(例如列表和字典)作为参数,在函数内部对其进行修改,并检验函数调用前后对应变量的值的变化情况;(6)参考“3.2 有关函数的更多信息.pdf”中的“重新赋值与修改(Reassignment vs Modifying)”部分内容,设计相关实验以检验在函数体内部修改值和重新分配变量名称之间的区别。
时间: 2023-12-26 14:04:51 浏览: 57
自己编写函数
1. 自行设计一个函数,实现将输入的字符串反转输出,并完成以下实验:
(1)默认参数的使用:
```python
def reverse_string(string, separator=""):
# 判断是否为空字符串
if string == "":
return ""
# 分隔符为空字符串,则直接反转
if separator == "":
return string[::-1]
# 分隔符不为空字符串,则先按照分隔符分割字符串,再反转每个子串
sub_strings = string.split(separator)
reversed_sub_strings = [sub_string[::-1] for sub_string in sub_strings]
return separator.join(reversed_sub_strings)
```
默认情况下,分隔符为空字符串。如果需要按照其他分隔符分割字符串,可以在调用函数时传入分隔符参数。
(2)函数的返回值(包括无返回值、一个及多个返回值):
函数有返回值,根据传入的分隔符参数不同,可能返回字符串或者列表。例如:
```python
s = "hello world"
print(reverse_string(s)) # dlrow olleh
print(reverse_string(s, " ")) # olleh dlrow
print(reverse_string(s, "o")) # dlrw lleh
```
(3)变量的作用域:
在函数内部定义的变量具有局部作用域,函数外部无法访问。例如:
```python
def test_scope():
a = 1 # 局部变量a
print(a)
test_scope()
print(a) # 报错,a为未定义变量
```
(4)在函数内部使用全局变量:
可以使用`global`关键字声明一个变量为全局变量,并在函数内部使用该变量。例如:
```python
x = 1
def test_global():
global x
x += 1
print(x)
test_global() # 2
print(x) # 2
```
(5)在函数内部修改全局变量的值:
可以直接在函数内部修改全局变量的值,但需要使用`global`关键字声明。例如:
```python
x = [1, 2, 3]
def modify_global():
global x
x.append(4)
print(x)
modify_global() # [1, 2, 3, 4]
print(x) # [1, 2, 3, 4]
```
(6)以可变数据类型(例如列表和字典)作为参数,在函数内部对其进行修改,并检验函数调用前后对应变量的值的变化情况:
由于列表和字典是可变数据类型,在函数内部对其进行修改时,实际上是修改了传入变量的值。例如:
```python
def modify_list(lst):
lst.append(4)
print(lst)
my_list = [1, 2, 3]
modify_list(my_list) # [1, 2, 3, 4]
print(my_list) # [1, 2, 3, 4]
```
(7)设计相关实验以检验在函数体内部修改值和重新分配变量名称之间的区别:
在函数体内部修改值时,实际上是修改了原变量的值,因此在函数外部访问该变量时,变量的值也会发生变化。而重新分配变量名称时,相当于定义了一个新变量,与原变量没有任何关系。例如:
```python
x = 1
def test_reassign():
x = 2 # 重新分配变量名称x
print(x)
def test_modify():
global x
x = 2 # 在函数内部修改x的值
print(x)
test_reassign() # 2
print(x) # 1
test_modify() # 2
print(x) # 2
```
阅读全文