Python(8)函數返回值、函數的嵌套調用、局部變量及全局變量

一、函數返回值

返回類型:

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)

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章