日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

python基础5(来自廖雪峰的官方网站)

發布時間:2025/4/5 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python基础5(来自廖雪峰的官方网站) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

函數

定義函數

在Python中,定義一個函數要使用def語句,依次寫出函數名、括號、括號中的參數和冒號:,然后,在縮進塊中編寫函數體,函數的返回值用return語句返回。

我們以自定義一個求絕對值的my_abs函數為例:

def my_abs(x):if x >= 0:return xelse:return -x

在Python交互環境中定義函數時,注意Python會出現...的提示。函數定義結束后需要按兩次回車重新回到>>>提示符下:


如果你已經把my_abs()的函數定義保存為abstest.py文件了,那么,可以在該文件的當前目錄下啟動Python解釋器,用from abstest import my_abs來導入my_abs()函數,注意abstest是文件名(不含.py擴展名):
空函數
如果想定義一個什么事也不做的空函數,可以用pass語句:

def nop():pass

pass語句什么都不做,那有什么用?實際上pass可以用來作為占位符,比如現在還沒想好怎么寫函數的代碼,就可以先放一個pass,讓代碼能運行起來。
pass還可以用在其他語句里,比如:

if age >= 18:pass

缺少了pass,代碼運行就會有語法錯誤。

參數檢查

調用函數時,如果參數個數不對,Python解釋器會自動檢查出來,并拋出TypeError:

>>> my_abs(1, 2) Traceback (most recent call last):File "<stdin>", line 1, in <module> TypeError: my_abs() takes 1 positional argument but 2 were given

但是如果參數類型不對,Python解釋器就無法幫我們檢查。試試my_abs和內置函數abs的差別:

>>> my_abs('A') Traceback (most recent call last):File "<stdin>", line 1, in <module>File "<stdin>", line 2, in my_abs TypeError: unorderable types: str() >= int() >>> abs('A') Traceback (most recent call last):File "<stdin>", line 1, in <module> TypeError: bad operand type for abs(): 'str'

當傳入了不恰當的參數時,內置函數abs會檢查出參數錯誤,而我們定義的my_abs沒有參數檢查,會導致if語句出錯,出錯信息和abs不一樣。所以,這個函數定義不夠完善。
讓我們修改一下my_abs的定義,對參數類型做檢查,只允許整數和浮點數類型的參數。數據類型檢查可以用內置函數isinstance()實現:

def my_abs(x):if not isinstance(x, (int, float)):raise TypeError('bad operand type')if x >= 0:return xelse:return -x

添加了參數檢查后,如果傳入錯誤的參數類型,函數就可以拋出一個錯誤:

>>> my_abs('A') Traceback (most recent call last):File "<stdin>", line 1, in <module>File "<stdin>", line 3, in my_abs TypeError: bad operand type

返回多個值

函數可以返回多個值嗎?答案是肯定的。
比如在游戲中經常需要從一個點移動到另一個點,給出坐標、位移和角度,就可以計算出新的坐標:

import mathdef move(x, y, step, angle=0):nx = x + step * math.cos(angle)ny = y - step * math.sin(angle)return nx, ny

import math語句表示導入math包,并允許后續代碼引用math包里的sin、cos等函數。
然后,我們就可以同時獲得返回值:

>>> x, y = move(100, 100, 60, math.pi / 6) >>> print(x, y) 151.96152422706632 70.0

但其實這只是一種假象,Python函數返回的仍然是單一值:

>>> r = move(100, 100, 60, math.pi / 6) >>> print(r) (151.96152422706632, 70.0)

原來返回值是一個tuple!但是,在語法上,返回一個tuple可以省略括號,而多個變量可以同時接收一個tuple,按位置賦給對應的值,所以,Python的函數返回多值其實就是返回一個tuple,但寫起來更方便。

總結

以上是生活随笔為你收集整理的python基础5(来自廖雪峰的官方网站)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。