1. 程式人生 > >Python之初識函數

Python之初識函數

end 傳遞參數 req 信息 pos 過程 int 接收 pycharm

閱讀目錄

一、為什麽要使用函數

二、函數的定義與調用

三、函數返回值

四、函數的參數

五、本章小結

一、函數流程圖:

  技術分享

  函數名的命名規則:

  1、函數名必須由字母下劃線數字組成,不能是關鍵字和數字開頭

2、函數名還是要有一定的意義能夠簡單說明函數的功能

  初識函數定義:

  新建一個mylen的函數

def mylen():
    ‘‘‘計算S1 的長度‘‘‘
    s1 = hello world
    length = 0
    for i in s1:
        length = length + 1
    print(length)    

  初識函數調用:  

  通過調用mylen的函數,實現計算hello word的長度。

str_len = mylen()
print(str_len:%s%str_len)

  以上代碼也只是完成調用,但是函數體內並沒有返回值,所以調用為None,使用return關鍵字返回結果。代碼如下: 

    return length   #將函數體內的值賦給mylen
str_len = mylen()
print(str_len:%s%str_len)

  return關鍵字的作用:

  return是一個關鍵字,在pycharm裏會高亮顯示。

函數體內不寫return的情況下,會默認返回一個None,需要註意的是return和返回值之間要由一個空格,return可以返回任意數據類型的值。

返回多個值: 

可以返回多個值,會被組織成元祖返回,也可以用多個值來接受。

函數的參數:

我們要告訴mylen函數要計算的字符串是誰,這個過程就叫做傳遞參數,簡稱傳參,我們調用函數的傳遞這個‘hello world‘和定義函數時的S1就是參數

實參與形參:

我們調用函數時傳遞的這個‘hello world‘被稱為實際參數,因為這個是要實際交歌函數的內容,簡稱實參

定義函數時的S1,只是一個變量的名字,被稱為形式參數。因為在定義函數的時候它只是一個形式,表示這裏有一個參數,簡稱形參

參數傳遞:

傳遞多個參數

參數可以傳遞多個,多個參數間用逗號分割。(舉例如下)

def mymax(x,y):
    the_max 
= x if x > y else y return the_max ma = mymax(10,20) print(ma)

  位置參數

  站在實參的角度

  1、按照位置傳值  

def mymax(x,y):
    #此時x=10,y=20
    the_max = x if x > y else y
    return the_max

ma = mymax(10,20)
print(ma)

  2、按照關鍵字傳值  

def mymax(x,y):
    #此時x = 20,y = 10
    print(x,y)
    the_max = x if x > y else y
    return the_max

ma = mymax(y = 10,x = 20)
print(ma)

  3、位置、關鍵字形式混著用  

def mymax(x,y):
    #此時x = 10,y = 20
    print(x,y)
    the_max = x if x > y else y
    return the_max

ma = mymax(10,y = 20)
print(ma)

  正確用法

  問題一:位置參數必須在關鍵子參數的前面

  問題二:對於一個形參只能賦值一次

  站在形參的角度

  位置參數必須傳值  

def mymax(x,y):
    #此時x = 10,y = 20
    print(x,y)
    the_max = x if x > y else y
    return the_max

#調用mymax不傳遞參數
ma = mymax()
print(ma)

#結果
TypeError: mymax() missing 2 required positional arguments: x and y

  默認參數

  1、正常使用

    使用方法

    為什麽要有默認參數:將變化較小的值設置成默認參數

  2、默認參數的定義  

def stu_info(name,sex = "male"):
    """打印學生信息函數,由於班中大部分學生都是男生,
        所以設置默認參數sex的默認值為‘male‘
    """
    print(name,sex)
stu_info(alex)
stu_info(eva,female)

  3、參數陷阱:默認參數是一個可變數據類型  

def defult_param(a,l = []):
    l.append(a)
    print(l)

defult_param(alex)
defult_param(egon)

  動態參數

    按位置傳值多余的參數都由args統一接受,保存成一個元祖的形式  

def mysum(*args):
    the_sum = 0
    for i in args:
        the_sum+=i
    return the_sum

the_sum = mysum(1,2,3,4)
print(the_sum)
def stu_info(**kwargs):
    print(kwargs)
    print(kwargs[name],kwargs[sex])

stu_info(name = alex,sex = male)

  本章小結

面向過程編程的問題:代碼冗余、可讀性差、可擴展性差(不易修改)

定義函數的規則:

1.定義:def 關鍵詞開頭,空格之後接函數名稱和圓括號()。
2.參數:圓括號用來接收參數。若傳入多個參數,參數之間用逗號分割。
    參數可以定義多個,也可以不定義。
    參數有很多種,如果涉及到多種參數的定義,應始終遵循位置參數、
    *args、默認參數、**kwargs順序定義。     如上述定義過程中某參數類型缺省,其他參數依舊遵循上述排序 3.註釋:函數的第一行語句應該添加註釋。 4.函數體:函數內容以冒號起始,並且縮進。 5.返回值:return [表達式] 結束函數。不帶表達式的return相當於返回 None def 函數名(參數1,參數2,*args,默認參數,**kwargs): """註釋:函數功能和參數說明""" 函數體 …… return 返回值

  調用函數的規則:

1.函數名()
    函數名後面+圓括號就是函數的調用。
2.參數:
    圓括號用來接收參數。
    若傳入多個參數:
        應按先位置傳值,再按關鍵字傳值
        具體的傳入順序應按照函數定義的參數情況而定
3.返回值
    如果函數有返回值,還應該定義“變量”接收返回值
    如果返回值有多個,也可以用多個變量來接收,變量數應和返回值數目一致

無返回值的情況:
函數名()

有返回值的情況:
變量 = 函數名()

多個變量接收多返回值:
變量1,變量2,... = 函數名()

Python之初識函數