局部变量常见问题
1.不同函数体内部,相同命名的局部变量互不影响
2.函数体外部或全局处调用函数体内部的局部变量会报错,即函数体外部无法调用函数体内部变量
解决方式一:
使用函数返回值解决局部变量问题
def set_name():
name = "Lily"
return name #返回局部变量的值
def print_name(name):
print(name)
#函数顺序调用
name = set_name() #使用变量存储函数返回值,此变量name与set_name()函数内变量name,是不同的内存地址引用
print_name(name) #将返回值作为参数传入print_name()函数调用
解决方式二:
全局变量为函数外部定义的变量;使用范围:可在不同的函数中使用;函数内部使用global声明实现对全局变量属性的修改;全局变量命令一般以g_name开头
#全局变量,在两个函数中同时调用全局变量,打印全局变量值
name = "Kadi" #定义全局变量
def get_name():
print(name) #函数体内使用全局变量
get_name() #调用函数
print(name) #直接打印全局变量
>Kadi
>Kadi #结果一样
#列表、字典作为全局变量,在函数内修改他们中的元素,不用使用global关键字声明
g_list = [1, 2, 3]
g_dict = {'name': 'lily', 'weight':100}
#在全局变量中添加新的元素
def updata_info():
g_list.append(4) #在末尾添加4
g_dict['heigt'] = 170
#循环遍历全局变量
def get_info():
for num in g_list:
print(num)
for key,value in g_dict.items():
print(key, value)
#函数调用
updata_info()
get_info()
>1
2
3
4
>name lily
weight 100
heigt 170
函数返回值:单个返回值与多返回值函数
#多返回值函数:列表
#对x,y进行加、减、乘、除计算,并将结果同时返回
#方式一:返回一个结果列表
def x_y_cal(x, y):
result1 = x + y
result2 = x - y
result3 = x * y
result4 = x / y
results = [ result1, result2, result3, result4]
return results
#调用函数
rs = x_y_cal(16, 8) #此处也可以用解包的方式赋值
print(type(rs)) #返回类型为列表
print(rs)
函数返回值:之元组
#多返回值函数:元组
#对x,y进行加、减、乘、除计算,并将结果同时返回
#方式一:返回一个结果元组
def x_y_cal(x, y):
result1 = x + y
result2 = x - y
result3 = x * y
result4 = x / y
results = (result1, result2, result3, result4)
return results
#调用函数
rs = x_y_cal(16, 8) #此处也可以用元组解包的方式多个变量接收返回值元组或列表的元素
a,b,c,d = x_y_cal(16, 8)
print("加:{},减:{},乘:{},除:{}".format(a,b,c,d)) #.format格式化输出
print(type(rs)) #返回类型为元组
print(rs)
#同理字典也可以
科普
接上文
a,b,c,_ = x_y_cal(16,8) #此处"_"为占位符,因为函数返回值为4个,但是我们并不想接收第四个值,所以采用占位符_接收
print("加:{},减:{},乘:{}".format(a,b,c)) #.format格式化输出
网友评论