一、函数返回值

返回类型:

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)