python之函式(一)
阿新 • • 發佈:2018-11-27
python有很多內建函式,可以直接呼叫。比如type(), len(), range(),max(), min(), filter().內建函式我們就先不多提,我們主要介紹自定義函式。
1. 函式的定義
函式的定義用def
def 函式名(引數1, 引數2, 引數3,......):
函式體
return 表示式
先來一個簡單的函式:
1 def greet(): 2 print("Hello world") 3 4 greet()
這個函式沒有引數,接下來記錄一下有引數的情況。
2. 函式引數
1 # def greet(): 2# print("Hello world") 3 4 5 ''' 6 一個引數 7 ''' 8 def sayHello(name): 9 print("Hi, "+name) 10 11 12 ''' 13 兩個引數 14 ''' 15 def greet(greet, name): 16 print(greet + "," + name) 17 18 19 sayHello("yosef") 20 greet("你好", "yosef")
關於函式傳遞,有兩點需要注意:
1. 呼叫函式傳入的引數一定要跟函式定義的引數個數一樣,否則會報錯
2.傳入的引數要和定義函式時的資料型別要一致。
3. 預設引數
如果我們在編寫函式時,給函式形參一個預設值。在呼叫函式時,如果不傳參,就使用預設的值;傳了引數,就使用傳的引數。
1 #!/usr/bin/python3 2 # -*- coding: utf-8 -*- 3 # @Time :2018/11/27 13:32 4 # @Author :yosef 5 # @Email :[email protected] 6 # @File: :class14.py 7 # @Software :PyCharm Community Edition8 9 10 def sayHello(name="visitor"): 11 print("hello "+name) 12 13 14 sayHello() 15 sayHello("Yosef")
接下來是幾個例子:
1 #!/usr/bin/python3 2 # -*- coding: utf-8 -*- 3 # @Time :2018/11/27 13:32 4 # @Author :yosef 5 # @Email :[email protected] 6 # @File: :class14.py 7 # @Software :PyCharm Community Edition 8 9 10 # def sayHello(name="visitor"): 11 # print("hello "+name) 12 # 13 # 14 # sayHello() 15 # sayHello("Yosef") 16 17 """ 18 編寫print_info()函式,列印一個句子,指出這一節學了什麼,呼叫這個函式,確認列印顯示的訊息正確無誤。 19 20 """ 21 def print_info(): 22 print("我學習了函式!") 23 24 25 print_info() 26 27 28 """ 29 編寫favourite_book(); 30 """ 31 def favourite_book(bookname = "Linux從刪庫到跑路"): 32 print("我最喜歡的書是:"+bookname) 33 34 favourite_book("Python從入門到放棄") 35 favourite_book()
4. 位置引數與預設引數
第三節說的是隻有一個引數,如果有多個引數該怎麼做呢?
假設一個函式叫sum(a, b=3,c=5),如果呼叫的時候sum(1);sum(1,2),sum(1,2,3)有什麼效果呢
1 def sum(a,b=3,c=5): 2 print(a+b+c) 3 4 sum(1) # a=1 b=3 c=5 5 sum(1,2) # a=1 b=2 c=5 6 sum(1,2,3) # a=1 b=2 c=3
當只傳一個引數的時候,預設給第一個引數賦值。傳2個就給前2個引數賦值,傳N個就給前N個引數賦值。
如果我想給第二個以及第五個值傳參,其他預設,該怎麼搞呢?
假設abcde五個引數,abcde的預設值為1;可以sum(b=2,e=3)即可,直接宣告引數以及值。
1 def sum(a=1,b=1,c=1,d=1,e=1): 2 print(a+b+c+d+e) 3 sum(b=2,e=5)
練習:
1 #!/usr/bin/python3 2 # -*- coding: utf-8 -*- 3 # @Time :2018/11/27 13:59 4 # @Author :yosef 5 # @Email :[email protected] 6 # @File: :class16.py 7 # @Software :PyCharm Community Edition 8 def make_shirt(size, words): 9 print("T恤的size是%s,字樣是'%s'" %(size,words)) 10 11 12 make_shirt("xl","帥") 13 14 15 def describle_city(city="shanghai",country="China"): 16 print("%s is in %s" %(city,country)) 17 18 19 describle_city() 20 describle_city("nanjing") 21 describle_city("beijing") 22 describle_city("北海道","日本")