1. 程式人生 > >python之函式(一)

python之函式(一)

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 Edition
8 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("北海道","日本")