Python學習筆記三:函數(shù)
函數(shù)
1. 定義
- 函數(shù)代碼塊以 def 關鍵詞開頭,后接函數(shù)標識符名稱和圓括號()。
- 任何傳入?yún)?shù)和自變量必須放在圓括號中間。圓括號之間可以用于定義參數(shù)。
- 函數(shù)的第一行語句可以選擇性地使用文檔字符串—用于存放函數(shù)說明。文檔字符串用三引號(""" """)括起來。
- 函數(shù)內容以冒號起始,并且縮進。
- return [表達式] 結束函數(shù),選擇性地返回一個值給調用方。不帶表達式的return相當于返回 None。
- 因為函數(shù)相對獨立,所以定義函數(shù)的上方(根據(jù)PEP8的要求)需要和上其他代碼(包括注釋)隔開兩個空行
def greet_user(user):
"""顯示簡單的問候"""
print("hello!%s%s" % (user, '。'))
# 函數(shù)的調用
greet_user('Smith')
注意:
- 定義一個函數(shù),只表示封裝了一段代碼,如果不主動調用,函數(shù)不會自行運行,所以在進行斷點調試時,不會有任何結果顯示
- 基于Python的執(zhí)行順序是從上到下,所以如果想要調用一個函數(shù),必須在調用函數(shù)前,聲明定義這個函數(shù),否則會報錯
2. 參數(shù)
在定義函數(shù)時,函數(shù)名后括號內跟著的變量是形參,用來接收參數(shù),在函數(shù)內作為變量使用。
調用函數(shù)時,指定的具體字符是實參。是用來將數(shù)據(jù)傳遞到函數(shù)內部的。
以函數(shù)greet_user()為例,user是形參,'Smith'就是實參。函數(shù)在調用時,會將實參傳遞給函數(shù),存儲在形參里。
2.1 位置實參
一個函數(shù)中可以包含多個形參,也可以傳遞多個實參。
傳遞實參的方法有很多,其中最常用的是位置實參和關鍵字實參兩種。
位置實參:在向函數(shù)傳遞參數(shù)時,形參的位置和實參的位置一一對應,這樣的實參叫位置實參。
def describe_animals(animal_type, pet_name):
"""顯示寵物信息"""
print("I have a %s。" % animal_type)
print("It's name is %s。" % pet_name)
describe_animals('cat', 'kitty')
注意:在傳遞位置實參時,形參和實參的對應位置非常重要。雖然不會報錯,但結果可能會讓人啼笑皆非
describe_animals('kitty', 'cat')
I have a kitty。
It's name is cat。
2.2 關鍵字實參
在調用函數(shù)時,明確給出各個形參所對應的實參,這就是關鍵字實參。
def describe_animals(animal_type, pet_name):
"""顯示寵物信息"""
print("I have a %s。" % animal_type)
print("It's name is %s。" % pet_name)
describe_animals(animal_type='cat', pet_name='kitty')
2.3 默認值
在聲明函數(shù)時,可以事先給形參指定默認值,這樣調用時,可以只調用沒有默認值的形參。
注意:使用默認值時,在形參列表中必須先列出沒有默認值的形參,再列出有默認值的實參。這讓Python依然能夠正確地解讀位置實參。
def describe_animals(animal_type, pet_name='kitty'):
"""顯示寵物信息"""
print("I have a %s。" % animal_type)
print("It's name is %s。" % pet_name)
describe_animals(animal_type='cat')
2.4 傳遞任意數(shù)量的實參
函數(shù)形參前的*號,表示創(chuàng)建一個形參名稱的元組,待調用函數(shù)時,Python會將傳遞進來的實參,全部封裝進這個元組。
不管傳遞進來多少個實參,都會被封裝進一個元組內。
def make_pizza(*toppings):
"""打印制作披薩的所有食材"""
print("Making a piece of pizza with following toppings:")
for topping in toppings:
print(topping)
make_pizza('mushrooms', 'green peppers', 'extra cheese')
注意:傳遞多個參數(shù),而不是傳遞一個含有多個元素的元組
① 結合位置實參和任意數(shù)量實參
如果要讓函數(shù)接受不同類型的實參,必須在函數(shù)定義中將接納任意數(shù)量實參的形參放在后面。Python先匹配位置實參和關鍵字實參,再將余下的實參都封裝到最后一個形參中。
def make_pizza(size, *toppings):
"""顯示制作披薩的所有用料"""
print("Make a %d-inch pizza。" % size, end='')
print("With following toppings:")
for topping in toppings:
print(topping)
make_pizza(12, 'cheese', 'onion', 'mushrooms')
② 任意數(shù)量的位置實參和默認值
默認值和任意數(shù)字的位置實參結合時,默認值要放在前面。
def make_pizza(size=10, *toppings):
"""顯示制作披薩的所有用料"""
print("Make a %d-inch pizza。" % size, end='')
print("With following toppings:")
for topping in toppings:
print(topping)
make_pizza(12, 'cheese', 'onion', 'mushrooms')
③ 任意數(shù)量的關鍵字實參
函數(shù)形參前加上**,創(chuàng)建一個形參名稱的字典,待調用函數(shù)時,Python會傳遞進來的實參,全部封裝到這個字典中。
def make_pizza(size, **toppings):
"""打印紙多披薩所需的原材料"""
print("Make a %d-inch pizza with following toppings:" % size)
topping = {}
for key, value in toppings.items():
topping[key] = value
print(key.title()+':')
print(value)
make_pizza(size=10, vegetable='Cucumber', meat='bacon', seasoning='salt')
④ 任意數(shù)量的關鍵字實參和默認值
def make_pizza(size=10, **toppings):
"""打印紙多披薩所需的原材料"""
print("Make a %d-inch pizza with following toppings:" % size)
topping = {}
for key, value in toppings.items():
topping[key] = value
print(key.title()+':')
print(value)
make_pizza(size=12, vegetable='Cucumber', meat='bacon', seasoning='salt')
總結:在Python中,函數(shù)的參數(shù)位置應該按照以下順序排序:
- 位置參數(shù)(必須參數(shù))
- 默認值參數(shù)
- 可變成位置參數(shù)(既:任意數(shù)量的位置參數(shù))
- 可變長關鍵字參數(shù)(既:任意數(shù)量的關鍵字參數(shù))
def my_func(a, b, c=0, *args, **kwargs):
pass
my_func(1, 2, 3, 4, 5, x=6, y=7)
1,2是位置參數(shù);3是默認值參數(shù);4,5是可變長位置參數(shù);x和6是關鍵字參數(shù),被封裝到kwargs名稱的字典傳遞給函數(shù)。
3. 返回值
4. 變量
變量分為局部變量和全局變量,局部變量的作用域為函數(shù)體,
將局部變量聲明為全局變量,可以使用global關鍵字,這樣在函數(shù)體內部聲明的局部變量,就變成一個全局變量
# 在函數(shù)體內聲明一個全局變量 global var var = value
模塊
1. 定義
在Python中,模塊是一個包含Python代碼的文件,它可以包含函數(shù)、類、變量和常量等。模塊可以被其他Python程序導入并使用,這樣可以避免重復編寫代碼,提高代碼的復用性和可維護性。
簡單來說,每個帶.py后綴的文件就是一個模塊。
Python中的模塊可以是標準庫模塊、第三方模塊或自定義模塊。標準庫模塊是Python自帶的模塊,包含了大量的常用功能,例如操作系統(tǒng)接口、文件I/O、字符串處理、網(wǎng)絡通信等。第三方模塊是由其他開發(fā)者編寫的模塊,可以通過pip等包管理工具安裝。自定義模塊是由開發(fā)者自己編寫的模塊,可以根據(jù)需要定義函數(shù)、類、變量和常量等。
2. 模塊名
在Python中,模塊名也是一個標識符,所以遵循:
- 標識符由數(shù)字,字母和下劃線組成
- 不能以數(shù)字開頭
- 標識符的長度沒有限制,但為了方便使用,盡量做到簡單明了
- 區(qū)分大小寫
- 盡量避免使用系統(tǒng)自帶的關鍵字,例如:if,else,while,print等等
3. 模塊的使用
① import語句
模塊定義好后,我們可以使用import語句來引入模塊,具體語法:
import module1[,module2,...modulen] module.function
例如我們想要使用test1.py內的print_line()函數(shù),用法如下:
# 導入模塊 import test1 # 調用test1.py中的print_line()函數(shù) test1.print_line()
② from...import語句
Python 的 from 語句讓你從模塊中導入一個指定的部分到當前命名空間中。語法如下:
from module import function1[,function2,...functionN]
有時為了方便,我們會使用as給指定函數(shù)起別名,之后此函數(shù)名要使用別名,而不是原來的名字
from test1 import print_line as pl
③ 使用*導入模塊內的所有函數(shù)
from module import *

浙公網(wǎng)安備 33010602011771號