一、函数返回值
返回类型:
1、返回一个值
2、返回多个值,并将多个值保存到元组中,返回元组 例如返回 (5, 6, 'aaa')
3、接收值时,可以使用多个变量接收
def add(a, b):
result = a + b
return result
print(add(5, 6))
def test():
return 5, 6, 'aaa'
info = test()
print(info) #返回多个参数,将多个参数保存到元组中,并将元组返回 输出:(5, 6, 'aaa')
x, y, z = test()
print(x, y, z) #接收时,可以使用多个变量接收 将 x = 5, y = 6, z = 'aaa'
二、函数的嵌套调用
例一:
加入购物车 判断用户是否登录,如果登录,成功加入购物车,否则提示请登录之后添加
#登录验证
def login(username, password):
uName = "admin"
psd = "123"
isLogin = username == uName and password == psd
return isLogin
#添加购物车
def add_shoppingcart(goodName):
global isLogin
if isLogin and goodName:
print("添加物品成功,物品名称为:", goodName)
return True, goodName
else:
print("添加物品失败!")
name = input("请输入用户名:")
psd = input("请输入密码:")
isLogin = False
isLogin = login(name, psd)
if isLogin:
result = add_shoppingcart('test good')
print(result)
else:
print("用户没有登录,请先登录!")
例二:
用户登录
输入用户名
输入密码
输入验证码
判断登录是否成功
import random
#生成验证码
def generate_verifyCode(n):
code = ""
str1 = "qwertyuiopasdfghjklzxcvbnm123456789QWERTYUIOPASDFGHJKLZXCVBNM"
for i in range(n):
ran = random.randint(0, len(str1) - 1)
code += str1[ran]
return code
#登录
def login():
u_name = "admin"
psd = "123"
vc = generate_verifyCode(4)
print(vc)
username = input("请输入用户名:")
password = input("请输入密码:")
code = input("请输入验证码:")
isLogin = u_name == username and psd == password and vc.lower() == code.lower()
result = "登录成功" if isLogin else "登录失败"
return result
print(login())
三、全局变量及局部变量
global 变量的范围
局部变量:
函数内部声明的变量 局部变量仅限于在函数内部使用
全局变量:
定义在函数外层的变量
局部变量与全局变量重名
优先输出局部变量
函数体内,函数内部变量可以随意修改赋值
不修改全局变量,只是获取
如果修改全局变量,需要在函数内部声明 global 变量名
name = "测试名"
def func1():
global name
name += "aaa"
print(name)
func1()
局部和全局变量
全局变量,如果是不可变,在函数中修改需要添加global关键字
是可变的, 不需要添加global关键字
name = "测试名"
list1 = [1, 2, 3, 5]
def func2():
name = "名字"
print(name)
print(list1)
def func3():
global name
name += "添加内容"
print(name)
list1.append(50)
print(list1)
func3()
func2()
四、总结
函数的参数: 普通的参数 可变参数(*args() **kwargs{})关键字参数
def func(a, b = 1)
pass
func(a = 10, b = 20)
返回值:return
def func():
return 'abc', 19
x = func() --->print('abc', 19)
def func():
result = a + b
return result
x = func() --->没有返回值,就是到的值为:None
函数间的嵌套调用
定义函数
def a():
pass
def b():
a()
pass
调用函数
a()
b() ->调用b函数,会先调用a函数,再往下执行
局部和全局变量
name = 'aaa' 不可变
list1 = [] 可变
def func():
global name
name += "abc'
list1.append(6)