局部变量 & 全局变量
- 全局变量:
- 局部变量:
- 在方法内定义变量名和全局变名如果相同,其实是局部变量,修改其值不影响全局变量
函数多个返回值
- 如果函数中有多个返回值,那么程序只需要执行到第一return,后面的return都不会被执行
- reutrn作用:
def test():
a = 100
return a
a = 200
return a
a = 300
return a
A = test()
print(A) #A = 100
# 错误的方法
def returnData():
name = input("请输入姓名")
return name
age = input("请输入年龄")
return age
m_id = input("请输入学号")
return m_id
receiveData = returnData()
# 正确的方法
def returnData():
name = input("请输入姓名")
age = input("请输入年龄")
m_id = input("请输入学号")
retuen name,age,m_id #最方便,返回一个元组
return (name,age,m_id) #
return [name,age,m_id] #
return {"name":name,"age":age,"m_id":m_id} #推荐
receiveData = returnData() #推荐字典
a,b,c = returnData()
print(receiveData)#('xxx','yyy','zzz')
编程思想
缺省函数
- 定义形式参数的时候确定默认值,如果不传,则默认用定义的值
- 缺省函数缺省值只能放最后
def test(a,b=35):
print(a)
print(b)
test(11)
def test(a,b=35,c=100):
print(a)
print(b)
print(c)
test(11) # ok
test(11,22) # ok
test(11,22,33) # ok
test(11,c=100) # ok
不定长参数
def test(a,*b):
print(a)
print(b)
test(10,22,33)
# 10,(22,33)
def getSum(*num):
sum = 0
for temp in num:
sum += temp
return sum
def test(a,*b,**c):
print(a)
print(b)
print(c)
test(1,22,33,44,m=10,n=20)
# 1
# (22,33,44)
# {"m":10,"n":20}
引用传参
def test1(a):
a += 100;
print(a)
g_a = 100
test1(g_a)
print(g_a)#g_a = 100
def test(a):
a += a
print(a)
num = [11,22,33,44]
test(num) #[11,22,33,44,11,22,33,44]
print(num) #[11,22,33,44,11,22,33,44]
def test(a):
a = a +a
print(a)
num = [11,22,33,44]
test(num) #[11,22,33,44,11,22,33,44]
print(num) #[11,22,33,44]
- += 在原来的基础上改,所以函数不能直接修改全局变量
- = 定义一个新的变变量接收计算后的结果
递归调用
def test(num):
i = 1
result = 0
while i <= num:
result += i
i += 1
return result
def test(sum):
if(sum <= 1):
return num
else:
return num + test(num - 1)