1. 程式人生 > 其它 >Python-定義函式

Python-定義函式

技術標籤:python3.0python程式語言字串

  • 函式的本質就是對功能的封裝和對程式碼的抽象

  • 函式的作用:
    1.避免開發重複性相同的程式碼
    2.便於程式的理解和維護
    3.對底層程式碼的抽象

  • 基本的函式格式
    def 函式名():
    函式功能程式碼…
    函式功能程式碼…
    return(沒有return,預設返回None)

  • 呼叫函式:函式名()

  • 特徵:函式定義之後不會自動執行,必須在呼叫後才會執行

  • 函式名的命名規則:駝峰+動詞開頭

  • 帶有引數的函式格式
    def 函式名(引數,引數…)

    • 形參:形式上的引數,宣告函式時()中的引數就是形參
    • 實參:實際上的引數,呼叫函式時()中的引數就是實參
    • 注意:實參將值傳遞給形參的過程本質上就是簡單的變數賦值
    • 引數必須以正確的順序傳入函式。呼叫時的數量必須和宣告時一樣
  • 函式引數格式:

     	 - 1.預設值的引數:可選擇性輸入的引數
     	 - 2.可變引數:可以輸入0到任意個引數,函式內組裝成Tuple
     	 - 3.關鍵字引數:可以輸入0到任意個含引數名的引數,函式內組裝成dic
     	 - 4.命名關鍵字引數
    
  • 函式返回值

    • 呼叫函式根據執行完畢是否可以得到一個結果,將函式分為2個型別:

      • 執行過程函式:print()
      • 具有返回值的函式:id(),type()
    • return 特徵

      • 具有return語句的函式稱為具有返回值的函式
      • return可以為當前函式執行完畢返回一個結果,這樣的函式呼叫可以被接受
      • return執行之後,函式則會終止,所有return之後的語句不會被執行
      • 一個函式可以書寫多個return語句,但是一般會放入分支結構中
      • 一個函式若要返回多個數據,可藉助複合資料型別(list,tuple,set,dict)來操作
      • 不帶引數值的return返回None
  • 函式文件:

      - 函式文件就是用來檢視當前函式相關資訊介紹的一種特定格式而已
      - 檢視函式文件的方法:
     	 - 1.help(函式名稱)    #直接輸出顯示函式文件的內容字串
     	 - 2.函式名.__doc__ #直接輸出顯示函式文件的內容字串
     	 - 3.官方文件:https://docs.python.org/zh-cn/3/tutorial/index.html
      - 定義函式文件:'''或"""
     	 - def 函式名(引數...):
     	 '''
     	 	在此宣告函式文件
     	 '''
     	 函式功能程式碼...
     
      - 注意:函式文件的作用是對函式進行說明,便於閱讀和快速掌握函式的使用,通常函式文件需要具有以下資訊:
     	 - 1.函式的作用
     	 - 2.函式的引數介紹(個數、資料型別)
     	 - 3.函式的返回值(資料和型別)
    
 內建函式
print(abs(-10))   #abs取絕對值

help(abs)  #檢視幫助文件
# 函式中的個數和型別都需要確認清楚
print(max(2,10))
print(max(2,1,4,7))

# 資料型別的轉換
print(int('123'))  # 字串強制轉換為整數
# 字串轉換成浮點
print(float(123))
# 浮點強制轉換為字串
print(str(34.56))
print(type(str(34.56)))
# 自定義abs函式
def my_abs(x):  #x 的變數的生命週期不會超過函式的呼叫
    if x>=0:
        return x
    else:
        return -x
a=my_abs(-99)  # 用一個變數a來承接函式的返回值
print(a)

# 通過from和import,呼叫其他py檔案呼叫的函式
from MyTest import my_abs

print(my_abs(-89))
# help 檢視函式說明文件
help(my_abs)
# __doc__檢視
my_abs.__doc__

print(my_abs('abcd') # 提供了一個非常友好的錯誤提示

自定義函式:

def my_abs(x):
    '''
    自定義abs函式
    :param x: int或float
    :return: abs值
    '''
    if not isinstance(x,(int,float)):
        raise TypeError('只能輸入int和float型別')
    if x>=0:
        return x
    else:
        return -x

執行的結果:

10
Help on built-in function abs in module builtins:

abs(x, /)
    Return the absolute value of the argument.

10
7
123
123.0
34.56
<class 'str'>
99
89
Help on function my_abs in module MyTest:

my_abs(x)
    自定義abs函式
    :param x: intfloat
    :return: abs值

Traceback (most recent call last):
  File "D:/爬蟲/pythonProject/實戰/python 內建函式.py", line 35, in <module>
    print(my_abs('abcd'))
  File "D:\爬蟲\pythonProject\實戰\MyTest.py", line 8, in my_abs
    raise TypeError('只能輸入int和float型別')
TypeError: 只能輸入intfloat型別