怎么能快速地掌握Python?這是和朋友閑聊時談起的問題。
Python包含的內容很多,加上各種標準庫、拓展庫,亂花漸欲迷人眼。我一直希望寫一個快速的、容易上手的Python教程,而且言語簡潔,循序漸進,讓沒有背景的讀者也可以從基礎開始學習。我將在每一篇中專注于一個小的概念,希望在閑暇時可以很快讀完。
小提醒
- 教程將專注于Python基礎,語法基于Python 2.7 (我會提醒Python 3.x中有變化的地方,以方便讀者適應3.X的情況)。測試環境為Linux。標準庫的一些包不適用于Windows平臺。如果文中的程序無法在你的平臺上運行,歡迎討論。
- 我將專注于Python的主干,以便讀者能以最快時間對Python形成概念。
- Linux命令行將以$開始,比如 $ls, $python
- Python命令行將以>>>開始,比如 >>>print 'Hello World!'
- 注釋會以#開始
建議
- 將教程中的命令敲到Python中看看效果。
- 看過教程之后,可以進行一些練習。
- 參與文章評論區的討論,可以更好的積累經驗。
教程內容
函數最重要的目的是方便我們重復使用相同的一段程序。將一些操作隸屬于一個函數,以后你想實現相同的操作的時候,只用調用函數名就可以,而不需要重復敲所有的語句。
函數的定義
首先,我們要定義一個函數, 以說明這個函數的功能。
def square_sum(a,b):
c = a**2 + b**2
return c
這個函數的功能是求兩個數的平方和。
首先,def,這個關鍵字通知python:我在定義一個函數。square_sum是函數名。
括號中的a, b是函數的參數,是對函數的輸入。參數可以有多個,也可以完全沒有(但括號要保留)。
我們已經在循環和選擇中見過冒號和縮進來表示的隸屬關系。
c = a**2 + b**2
# 這一句是函數內部進行的運算
return c
# 返回c的值,也就是輸出的功能。Python的函數允許不返回值,也就是不用return。
return可以返回多個值,以逗號分隔。相當于返回一個tuple(定值表)。
return a,b,c # 相當于 return (a,b,c)
在Python中,當程序執行到return的時候,程序將停止執行函數內余下的語句。return并不是必須的,當沒有return, 或者return后面沒有返回值時,函數將自動返回None。None是Python中的一個特別的數據類型,用來表示什么都沒有,相當于C中的NULL。None多用于關鍵字參數傳遞的默認值。
函數調用和參數傳遞
定義過函數后,就可以在后面程序中使用這一函數
print square_sum(3,4)
Python通過位置,知道3對應的是函數定義中的第一個參數a, 4對應第二個參數b,然后把參數傳遞給函數square_sum。
(Python有豐富的參數傳遞方式,還有關鍵字傳遞、表傳遞、字典傳遞等,基礎教程將只涉及位置傳遞)
函數經過運算,返回值25, 這個25被print打印出來。
我們再看下面兩個例子
a = 1
def change_integer(a):
a = a + 1
return a
print change_integer(a)
print a
#===(Python中 "#" 后面跟的內容是注釋,不執行 )
b = [1,2,3]
def change_list(b):
b[0] = b[0] + 1
return b
print change_list(b)
print b
第一個例子,我們將一個整數變量傳遞給函數,函數對它進行操作,但原整數變量a不發生變化。
第二個例子,我們將一個表傳遞給函數,函數進行操作,原來的表b發生變化。
對于基本數據類型的變量,變量傳遞給函數后,函數會在內存中復制一個新的變量,從而不影響原來的變量。(我們稱此為值傳遞)
但是對于表來說,表傳遞給函數的是一個指針,指針指向序列在內存中的位置,在函數中對表的操作將在原有內存中進行,從而影響原有變量。 (我們稱此為指針傳遞)
總結
def function_name(a,b,c):
statement
return something # return不是必須的
函數的目的: 提高程序的重復可用性。
return None
通過位置,傳遞參數。
基本數據類型的參數:值傳遞
表作為參數:指針傳遞
練習:
寫一個判斷閏年的函數,參數為年、月、日。若是是閏年,返回True。
完整教程可查看:Python教程
作者:Vamei 出處:http://www.cnblogs.com/vamei 歡迎轉載,也請保留這段聲明。謝謝!