Python編程基礎之函數和模塊

一、函數和模塊概述

(一)函數概述

函數可以看成是語句的集合,通過函數調用來執行其包含的語句。函數可以返回一個計算結果,根據每次函數調用的參數,可以返回不同的計算結果。Python利用函數提高代碼的重用率,減少瞭代碼冗餘。

執行dir(__builtin__)可以查看Python所有內置對象

['ArithmeticError',
 'AssertionError',
 'AttributeError',
 'BaseException',
 'BlockingIOError',
 'BrokenPipeError',
 'BufferError',
 'BytesWarning',
 'ChildProcessError',
 'ConnectionAbortedError',
 'ConnectionError',
 'ConnectionRefusedError',
 'ConnectionResetError',
 'DeprecationWarning',
 'EOFError',
 'Ellipsis',
 'EnvironmentError',
 'Exception',
 'False',
 'FileExistsError',
 'FileNotFoundError',
 'FloatingPointError',
 'FutureWarning',
 'GeneratorExit',
 'IOError',
 'ImportError',
 'ImportWarning',
 'IndentationError',
 'IndexError',
 'InterruptedError',
 'IsADirectoryError',
 'KeyError',
 'KeyboardInterrupt',
 'LookupError',
 'MemoryError',
 'ModuleNotFoundError',
 'NameError',
 'None',
 'NotADirectoryError',
 'NotImplemented',
 'NotImplementedError',
 'OSError',
 'OverflowError',
 'PendingDeprecationWarning',
 'PermissionError',
 'ProcessLookupError',
 'RecursionError',
 'ReferenceError',
 'ResourceWarning',
 'RuntimeError',
 'RuntimeWarning',
 'StopAsyncIteration',
 'StopIteration',
 'SyntaxError',
 'SyntaxWarning',
 'SystemError',
 'SystemExit',
 'TabError',
 'TimeoutError',
 'True',
 'TypeError',
 'UnboundLocalError',
 'UnicodeDecodeError',
 'UnicodeEncodeError',
 'UnicodeError',
 'UnicodeTranslateError',
 'UnicodeWarning',
 'UserWarning',
 'ValueError',
 'Warning',
 'WindowsError',
 'ZeroDivisionError',
 '__IPYTHON__',
 '__build_class__',
 '__debug__',
 '__doc__',
 '__import__',
 '__loader__',
 '__name__',
 '__package__',
 '__spec__',
 'abs',
 'all',
 'any',
 'ascii',
 'bin',
 'bool',
 'breakpoint',
 'bytearray',
 'bytes',
 'callable',
 'cell_count',
 'chr',
 'classmethod',
 'compile',
 'complex',
 'copyright',
 'credits',
 'debugcell',
 'debugfile',
 'delattr',
 'dict',
 'dir',
 'display',
 'divmod',
 'enumerate',
 'eval',
 'exec',
 'filter',
 'float',
 'format',
 'frozenset',
 'get_ipython',
 'getattr',
 'globals',
 'hasattr',
 'hash',
 'help',
 'hex',
 'id',
 'input',
 'int',
 'isinstance',
 'issubclass',
 'iter',
 'len',
 'license',
 'list',
 'locals',
 'map',
 'max',
 'memoryview',
 'min',
 'next',
 'object',
 'oct',
 'open',
 'ord',
 'pow',
 'print',
 'property',
 'range',
 'repr',
 'reversed',
 'round',
 'runcell',
 'runfile',
 'set',
 'setattr',
 'slice',
 'sorted',
 'staticmethod',
 'str',
 'sum',
 'super',
 'tuple',
 'type',
 'vars',
 'zip']

演示Python內置函數

在這裡插入圖片描述

 

(二)模塊概述

模塊是程序代碼和數據的封裝。模塊中定義的變量、函數或類等可導入到其他文件中使用。Python正是通過模塊提供各種功能,例如,在前面用到的sysosmathrandom等都是模塊。

1、sys模塊

查看sys模塊包含的對象(屬性和方法)

在這裡插入圖片描述

使用sys模塊的path

在這裡插入圖片描述

在這裡插入圖片描述

 2、os模塊

導入os模塊

在這裡插入圖片描述

獲取當前工作目錄

在這裡插入圖片描述

 3、math模塊

在這裡插入圖片描述

4、random模塊

在這裡插入圖片描述

二、函數

  • 在編寫程序時,往往會遇到在多處使用的類似代碼。這時,可將重復代碼提取出來,定義為函數。從而簡化編程工作量,也使代碼結構簡化。
  • 函數有三要素:函數名(function name)、參數列表(parameter list)、返回值(return value)
  • 參數有兩種類型:位置參數(positional parameter)、鍵參數(key parameter)

(一)定義函數

1、語法格式

def: define

def 函數名(參數表):
    函數體(語句組)
    return 返回值

如果我們定義一個函數,沒有寫return語句,系統會自動給它添加一個return None

2、函數類型

  • 無參函數
  • 單參函數
  • 多參函數

3、案例演示

定義無參函數

在這裡插入圖片描述

定義單參函數(調用時可以用位置參數,也可以用鍵參數)

在這裡插入圖片描述

定義多參函數

在這裡插入圖片描述

說明:定義函數時的參數叫做形式參數(formal paramter),簡稱形參(虛參);調用函數時的參數叫做實際參數(actual parameter),簡稱實參。調用函數,就是將實參傳遞給形參,進行處理之後,得到返回值。

定義有返回值的函數

在這裡插入圖片描述

(二)調用函數

1、簡要說明

  • 函數通過函數名加上一組圓括號進行調用,參數放在圓括號內,多個參數之間用逗號分隔。
  • 在Python中,所有的語句都是實時執行的,不像C/C++存在編譯過程。def也是一條可執行語句,定義一個函數。所以函數的調用必須在函數定義之後。
  • 在Python中,函數名也是一個變量,它引用return語句返回的值,沒有返回值時,函數值為None。

2、案例演示

編寫並調用階乘函數 – factorial(n)

在這裡插入圖片描述

運行程序,查看結果

在這裡插入圖片描述

(三)函數參數

在定義函數時,參數表中的各個參數稱為形式參數,簡稱形參。調用函數時,參數表中提供的參數稱為實際參數,簡稱實參。在Python中,變量保存的是對象的引用,類似C/C++中的指針。實參傳遞給形參就是將對象的引用賦值給形參。

1、參數的多態性

多態是面向對象的一個特點,指多一個行為針對不同對象可能會得到不同的結果。Python中的變量無類型屬性,變量可引用各種不同類型的對象。同一個函數,傳遞的實際參數類型不同時,可獲得不同的結果,體現瞭多態性。

2、參數賦值傳遞

通常,函數調用時按參數的先後順序,將實參傳遞給形參。例如:調用add(1, 2.5)時,1傳遞給a,2.5傳遞給b。Python允許以形參賦值的方式,指定將實參傳遞給形參。

三、利用函數實現模塊化

1、創建多級菜單系統

編寫程序 – 多級菜單系統.py

# -*- coding: utf-8 -*-
"""
功能:多級菜單系統
作者:華衛
日期:2021年1月4日
"""

def add_record():
    print('添加記錄功能尚待開發')

def query_record():
    print('查詢記錄功能尚待開發')

def modify_record():
    print('修改記錄功能尚待開發')

def delete_record():
    print('刪除記錄功能尚待開發')

def login():
    while True:
        print('主菜單')
        print('=============')
        print('1. 增加記錄')
        print('2. 查詢記錄')
        print('3. 修改記錄')
        print('4. 刪除記錄')
        print('5. 返回上級菜單')
        print('==============')
        mc2 = int(input('輸入菜單號:'))
        if mc2 == 1:
            add_record()
        elif mc2 == 2:
            query_record()
        elif mc2 == 3:
            modify_record()
        elif mc2 == 4:
            delete_record()
        else:
            break

while True:
    print('============')
    print('1. 登錄')
    print('2. 退出')
    print('============')
    mc1 = int(input('輸入菜單號:'))
    if mc1 == 1:
        login()
    elif mc1 == 2:
        print('謝謝使用!')
        break

2、啟動程序,查看效果

在這裡插入圖片描述

總結

篇文章就到這裡瞭,希望能夠給你帶來幫助,也希望您能夠多多關註WalkonNet的更多內容!

推薦閱讀: