函數的定義


一、函數體系

接下來,我們將按照這個函數體系給大家詳細的介紹函數:

  • 什么是函數?
  • 為什么要用函數?
  • 函數的分類:內置函數與自定義函數
  • 如何自定義函數
    • 語法
    • 定義有參數函數,及有參函數的應用場景
    • 定義無參數函數,及無參函數的應用場景
    • 定義空函數,及空函數的應用場景
  • 調用函數
    • 如何調用函數
    • 函數的返回值
    • 函數參數的應用:形參和實參,位置形參,位置實參,關鍵字實參,默認形參,*args,**kwargs
  • 高階函數(函數對象)
  • 函數嵌套
  • 作用域與名稱空間
  • 裝飾器
  • 迭代器與生成器及協程函數
  • 三元運算,列表解析、生成器表達式
  • 函數的遞歸調用
  • 內置函數
  • 面向過程編程與函數式編程

如果現在有一個需求需要實現用戶登錄注冊的功能,我們該怎么實現呢?

# 注冊
username = input('username: ').strip()
pwd = input('password: ').strip()

with open('38a.txt', 'a', encoding='utf8') as fa:
    fa.write(f"{username}:{pwd}\n")
    fa.flush()
# 登錄
inp_username = input('username: ').strip()
inp_pwd = input('password: ').strip()

with open('38a.txt', 'rt', encoding='utf8') as fr:
    for user_info in fr:
        user_info = user_info.strip('\n')
        user_info_list = user_info.split(':')
        if inp_username == user_info_list[0] and inp_pwd == user_info_list[1]:
            print('login successful')
            break
    else:
        print('failed')

二、什么是函數?

假設現在你是下水道工,如果你事先准備好你的工具箱,等你接到修理下水道的工作的時候,你直接把你的工具箱拿過去直接使用就行了,而不需要臨時准備錘子啥的。

在程序中,函數就是具備某一功能的工具,事先將工具准備好就是函數的定義,遇到應用場景拿來就用就是函數的調用,所以需要注意的是:

函數基礎-水道工.jpg?x-oss-process=style/watermark

三、為何用函數

如果不使用函數,寫程序時將會遇到這三個問題:

  1. 程序冗長
  2. 程序的擴展性差
  3. 程序的可讀性差

四、如何用函數

先定義函數,后調用。

  • 定義函數:
def 函數名(param1、param2……):
    """
    函數功能的描述信息
    :param1:描述
    :param2:描述
    :return:返回值
    """
    code 1
    code 2
    code 3
    ...

    return 返回值
  • 調用函數
函數名(param1、param2……)

4.1 注冊功能函數

# 注冊功能函數
def register():
    """注冊功能"""
    username = input('username: ').strip()
    pwd = input('password: ').strip()

    with open('38a.txt', 'a', encoding='utf8') as fa:
        fa.write(f"{username}:{pwd}\n")
        fa.flush()


register()
# 復用
register()
register()

4.2 登錄功能函數

# 登錄功能函數
def login():
    """登錄功能"""
    inp_username = input('username: ').strip()
    inp_pwd = input('password: ').strip()

    with open('38a.txt', 'rt', encoding='utf8') as fr:
        for user_info in fr:
            user_info = user_info.strip('\n')
            user_info_list = user_info.split(':')
            if inp_username == user_info_list[0] and inp_pwd == user_info_list[1]:
                print('login successful')
                break
        else:
            print('failed')


login()

4.3 函數定義階段

def func():
    bar()  # 不屬於語法錯誤,不會報錯
    print('*'*10)
  1. 只檢測語法,不執行函數體代碼

4.4 函數調用階段

def bar():
    print('from bar')

def foo():
    print('from foo')
    bar()

foo()
'''
from foo
from bar
'''
def foo():
    print('from foo')
    bar()
    
def bar():
    print('from bar')

foo()
'''
from foo
from bar
'''
  1. 執行函數代碼


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM