4.3 Python3進階-函數嵌套和嵌套調用

>>返回主目錄


源碼

# 函數嵌套
def func1():
    print("這是外部函數")

    def func2():
        print("這是內部函數1")

        def func3():
            print("這是內部函數2")


# func2()  # 在函數外部不能直接調用函數內部的函數
func1()

源碼

# 嵌套調用
# 嵌套調用1:在外函數內部調用內函數,例如:
def fun_outer_call_1():
    print("這是outer外部函數1")

    def fun_inner_call_1():
        print("這是inner內部函數1")

    fun_inner_call_1()  # 函數名調用內函數


fun_outer_call_1()


# 嵌套調用2:可以用return調用內函數,例如:
def fun_outer_call_2():
    print("這是outer外部函數2")

    def fun_inner_call_2():
        print("這是inner內部函數2")

    return fun_inner_call_2()  # return 函數名(),方式調用


fun_outer_call_2()  # 調用外函數


def fun_outer_call_3():
    print("這是outer外部函數3")

    def fun_inner_call_3():
        print("這是inner內部函數3")

    return fun_inner_call_3  # return 函數名,方式調用


fun_outer_call_3()()  # 調用內函數

源碼

# Author:PortosHan
# Datetime:2021/5/28 11:22
# Project:zbcf_python_lesson_project
"""
登錄練習:
第一步:輸入用戶名、密碼;
第二步:生成驗證碼;
第三步:校驗驗證碼是否輸入正確;
第四步:校驗用戶名、密碼是否輸入正確(資料庫中有的);
第五步:都正確則登錄成功,有錯誤則提示相應原因。
程式碼提示:
def generate_code():
    print('此函數用於生成驗證碼')
def login():
    print('此函數用於登錄')
    generate_code()  # 函數內調用生成驗證碼函數
login()
"""
# 創建全局變數
import random

KEY_WORD = '1234567890qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM'  # 驗證碼可包含的字元
CODE_NUMBER = 4  # 驗證碼的字元個數
LOCK_LOGIN = 5  # 登錄失敗鎖定登錄的次數


# 定義一個生成驗證碼的函數
def generate_code():
    code = ''
    for _ in range(CODE_NUMBER):
        ran_str = KEY_WORD[random.randint(0, len(KEY_WORD)-1)]
        code += ran_str
    return code


def login():
    print('******中保車服官網******')
    for _ in range(LOCK_LOGIN):
        user_name = input('用戶名:')
        pass_word = input('密碼:')
        code = generate_code()
        print(f'驗證碼是:{code}')
        input_code = input('驗證碼:')

        # 校驗驗證碼、用戶名和密碼是否正確
        if input_code.lower() == code:
            if user_name.lower() == 'portos' and pass_word == '123456':
                print('用戶登錄成功!')
                return
            else:
                print('用戶名或密碼有誤,請重新輸入!')
        else:
            print('輸入的驗證碼有誤,請重新輸入!')
    return


login()

>>返回主目錄