Python - 函數


函數,function,是一段代碼的集合體。是Python爲了代碼最大程度的重用、減少代碼冗餘而提供的最基本的程序結構。
Python是一門面向對象的編程語言,對函數進行分類和封裝,由對象實現對方法的調用。python


1、函數調用

在此以前,咱們已經接觸過一部分Python的Built-in內建函數,例如abs()、max()、min()、int()等。
要實現調用一個函數,必須先知道函數的名稱以及所須要的參數信息。對於內建函數,能夠經過命令help(func_name)查看函數的幫助信息。
經過函數名實現調用,其中的函數名其實就是指向一個函數的對象引用,能夠把函數名賦給任何一個變量,至關於給這個函數起了一個別名。
例如:編程

>>> a = abs    # a 是函數abs()的別名
>>> a(-1)
1

2、函數定義

  • 語法形式

定義關鍵字def。Python中將函數的聲明和定義視爲一體,函數由聲明的標題行和定義體組成。編程語言

def 函數名(參數列表):
    函數體
    return sth.

【注意】:函數

  1. 函數的返回值用return關鍵字進行返回。若沒有顯示的使用return,則默認返回None。
  2. 函數的返回值是一個tuple類型的值。返回一個值時,括號省略;返回多個值時,爲同一個tuple接收,把位置賦給相應的值。若是要返回一個list的值,則須要顯示地使用「[]」進行修改。
  3. 前向引用。Python中不容許在函數未聲明定義前,對其進行引用或者調用。

【例子一】自定義一個求絕對值的函數爲例:ui

>>> def my_abs(x):  
... if x>= 0:         
...  return x       
... else:           
...  return –x    
>>> my_abs(-3)    
3
  • 定義一個空函數

如何定義一個空函數?使用pass關鍵字。
pass語句用來做爲佔位符。
何時使用呢?通常是好比說這段代碼還沒想好怎麼寫,可使用pass讓代碼能運行起來。code

def nop():
    pass

3、import 調用

函數定義完成後,把函數寫入到***.py文件中保存。進入到該存放路徑下,啓動Python解釋器。
使用語句「from py_file_name import 函數名」。對象

import 語句能夠導入須要的Python模塊,例如 import time;
也能夠從模塊中導入某部分,from time import sleep,ctime;
也能夠導入某個自定義的模塊或者模塊中的函數等。io

有時候工程模塊存在層級目錄結構,而只須要導入工程中下的某文件的某部分,則可使用「.」進行導入,例如:
from 工程名層級.test_function import TestFuncast

4、調用函數參數檢查

調用函數時,須要對函數的參數列表進行檢查。
若是參數個數不對,python解釋器會自動檢查出來,並拋出TypeError。但若是參數類型不對,python解釋器就沒法幫助檢查。function

  • 內置函數

內置函數參數類型不對時:

>>> abs('a')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: bad operand type for abs(): 'str'
  • 自定義函數

若函數定義沒有參數檢查,則出錯信息在下一句,與內置函數不同,說明函數定義不夠完善。

def my_abs(x):
    if x>= 0:
        return x
    else :
        return -x
>>> my_abs('a')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "D:\Python_project\test1.py", line 2, in my_abs
if x>= 0: (if語句報的錯)
TypeError: '>=' not supported between instances of 'str' and 'int'

改成以下:

def my_abs1(x):  
    if not isinstance(x,(int , float )):  # 參數類型檢查
        raise TypeError('not the type')    # 拋出錯誤並提示「not the type」
    if x >=0:
        return x
    else:
        return -x
>>> my_abs1('a')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "D:\Python_project\test1.py", line 11, in my_abs1
raise TypeError('not the type')
TypeError: not the type    # (錯誤和異常的處理)

❤ thanks for watching, keep on updating...

相關文章
相關標籤/搜索