函數 內置函數print() input() len() type() ... print('Hello World') 函數 參數 定義函數def greet(name): print(name+'早上好') return 第一行def的意思是定義(define)greet是【函數名】(自己取的) ...
函數
內置函數
print() input() len() type() ...
print('Hello World')
函數 參數
定義函數
def greet(name):
print(name+'早上好')
return
第一行
def的意思是定義(define)
greet是【函數名】(自己取的)
再搭配一個括弧和冒號,括弧裡面的name是參數(參數名也是自己取)
第二行
def下一行開始縮進的代碼是函數要實現的功能,也叫【函數體】
第三行
函數內部一旦遇到return語句,就會停止執行並返回結果
沒有return語句的函數,Python也會在末尾隱性地加上return None,
即返回None值(return None可以簡寫為return。),也可以省略return
————————————————————————
括弧里可以有參數,又能沒有參數
def pika1():
print('我最喜愛的神奇寶貝是皮卡丘')
def pika2(name):
print('我最喜愛的神奇寶貝是'+name)
————————————————————————
區別:第一個函數總是輸出固定的一句話,所以不需要帶參數
第二個函數需要參數name的參與,所以括弧里需要帶上name
################################
調用函數
輸入函數名和參數對應的值
def pika2(name):
print('我最喜愛的神奇寶貝是'+name)
pika2('皮卡丘') #調用函數,輸入函數名pika()並輸入參數'皮卡丘'
我最喜愛的神奇寶貝是皮卡丘
————————————————————————————
參數的傳遞:弄清函數有多少個參數,如何給參數賦值
def pika(name,person): #兩個參數
print('我最喜愛的神奇寶貝是'+name)
print('我最喜愛的馴獸師是'+person)
pika('可達鴨','小霞') #兩個參數賦值
我最喜愛的神奇寶貝是可達鴨
我最喜愛的馴獸師是小霞
————————————————————————————
######################################
函數重要概念
參數類型:位置參數、預設參數、不定長參數
————————————————————————————
位置參數
def menu(appetizer,course):
print('一份開胃菜:'+appetizer)
print('一份主食:'+course)
menu('話梅花生','牛肉拉麵')
一份開胃菜:話梅花生
一份主食:牛肉拉麵
話梅花生'和'牛肉拉麵'是對應參數appetizer和course的位置順序傳遞的,
所以叫位置參數
靈活運用:
#如果採用下麵這種形式傳遞,就不需要理會參數位置
menu(course='牛肉拉麵',appetizer='話梅花生')
一份開胃菜:話梅花生
一份主食:牛肉拉麵
————————————————————
預設參數
def menu(appetizer,course,dessert='綠豆沙'):
print('一份開胃菜:'+appetizer)
print('一份主食:'+course)
print('一份甜品:'+dessert)
menu('話梅花生','牛肉拉麵')
一份開胃菜:話梅花生
一份主食:牛肉拉麵
一份甜品:綠豆沙
#因為已經預設將'綠豆沙'傳遞給dessert,調用時無須再傳遞。
靈活運用:
menu('話梅花生','牛肉拉麵','銀耳羹') #預設參數也可以改變
一份開胃菜:話梅花生
一份主食:牛肉拉麵
一份甜品:銀耳羹
————————————————————————————————
不定長參數
def menu(*barbeque):
print(barbeque)
menu('烤雞翅','烤茄子','烤玉米') #這幾個值都會傳遞給參數barbeque
('烤雞翅', '烤茄子', '烤玉米') #數據類型是元組
擴展
元組
數據用()小括弧,用法和列表類似,可迭代遍歷的
區別:列表元素可以隨時修改,但元組中的元素不可更改
————————————————————————————————
綜合列子
def menu(appetizer,course,*barbeque,dessert='綠豆沙'):
print('一份開胃菜:'+appetizer)
print('一份主菜:'+course)
print('一份甜品:'+dessert)
for i in barbeque:
print('一份烤串:'+i)
menu('話梅花生','牛肉拉麵','烤雞翅','烤茄子','烤玉米')
一份開胃菜:話梅花生
一份主菜:牛肉拉麵
一份甜品:綠豆沙
一份烤串:烤雞翅
一份烤串:烤茄子
一份烤串:烤玉米
#預設參數需要放在後面 (dessert='綠豆沙')
#########################################################
return語句
為什麼用return語句?
1.如果不是立即要對函數返回值做操作,
那麼可以使用return語句保留返回值
def face(name):
return name + '的臉蛋'
def body(name):
return name + '的身材'
#face('李若彤')
#body('林志玲') #函數也是可以互相嵌套這裡可以歸為一步
print('我的夢中情人:'+face('李若彤') +' + ' + body('林志玲'))
我的夢中情人:李若彤的臉蛋 + 林志玲的身材
————————————————————————————
2.需要多次調用函數時,可以再定義一個主函數main(),
調用非主函數的返回值
def face(name):
return name + '的臉蛋'
def body(name):
return name + '的身材'
def main(dream_face,dream_body):
return '我的夢中情人:' + face(dream_face) + ' + ' + body(dream_body)
#定義主函數,可以多次調用
print(main('李若彤','林志玲'))
print(main('新垣結衣','長澤雅美'))
——————————————————————————————
3.python函數的返回值可以是多個
多個返回值的數據類型是元組
def lover(name1,name2):
face = name1 + '的臉蛋'
body = name2 + '的身材'
return face,body
a=lover('李若彤','林志玲')
print(a)
('李若彤的臉蛋', '林志玲的身材') #一次接受多個返回值的數據類型是元組
#也可以和列表一樣取值
print('我的夢中情人:'+a[0]+' + '+a[1])
——————————————
##############################
變數作用域
函數內部使用(局部作用域),它們被稱作【局部變數】
任何位置使用(全局作用域),它們叫【全局變數】
局部變數和全局變數【不要】取相同的名字
三種對比
def egg():
quantity = 108
egg()
print(quantity)
#會報錯,不能在函數外部(全局作用域)使用函數內的局部變數
quantity = 108
def egg():
print(quantity)
egg()
#函數內的局部作用域,可以訪問全局變數
def egg():
global quantity
quantity = 108
egg()
print(quantity)
#global語句可以將局部變數聲明為全局變數
————————————————
擴展global
將局部變數變成全局變數
def egg():
global quantity
#global語句將變數quantity聲明為全局變數
quantity = 108
egg()
print(quantity)
————————————————————