1. 程式人生 > >函數的初識

函數的初識

mat 默認參數 append pan 參與 none span 函數功能 繼續

函數:將代碼封裝起來。

#函數定義
def my_len():
    s1=hello world
    length=0
    for i in s1:
        length=length+1
    print(length)
my_len()  #函數調用

# 11

函數總結一:

定義:def關鍵詞開頭,空格之後接函數名稱和圓括號(),最後還有一個“:”。

   def是固定的,不能變,必須是連續的def三個字母,不能分開。

   空格 為了將def關鍵字和函數名稱分開,必須空。

   函數名:函數名只能包含字符串、下劃線和數字且不能以數字開頭。雖然函數名可以隨便起,但我們給函數起名字還是要盡量簡短,並表達函數功能。

   括號:必須要有

註釋:每一個函數都應該對功能和參數進行相應的說明,應該寫在函數下面第一行。以增強代碼的可讀性。

調用:就是函數名()一定要加上括號。

函數的返回值

在調用python自帶的len函數時,必須用一個變量來接收這個值。

str_len=len(hello,word)

使用自己寫的函數也可以做到這一點

# 函數定義
def my_len():
    s1=hello world
    length=0
    for i in s1:
        length=length+1
    print(length)
str_len=my_len()  #函數調用
print(str_len:%s%str_len) # 11 # str_len:None 說明這段代碼什麽都沒有返回。

在寫函數的時候,要盡量以功能為向導,結果最好不要直接在函數中打印出來。

關鍵字return的作用

1、返回一個值

2、終止一個函數的繼續

def my_len():  # 函數名的定義
    s1=hello world
    length=0
    for i in s1:
        length=length+1
    return length  # 函數的返回值
str_len=my_len()  #函數的調用以及返回值的接收
print
(str_len) # 11

在沒有返回值的時候:

1、不寫return與寫入return None的效果相同,返回的只都是None          

2、只寫一個return後面不加任何東西的時候與寫return None的效果一樣

返回多個值:

1、當用一個變量接收返回值的時候,收到的是一個元組。這是因為在python中把用逗號分割的 多個值認為是一個元組。

2、當返回值有多個變量接收,那麽返回值的個數應該和接收變量的個數完全一致。

#返回多個值,用一個變量接收
def f():
    return a,b
c=f()
print(c)
# (‘a‘, ‘b‘)

#返回多個值,用多個變量接收(接收的變量數與返回值的個數要一致)
c,d=f()
print(c,d)
# a b

return的擴展題:

def f(l):
    if len(l)>4:
        return True
    else:
        return False
s=[1,2,3,4]
dic={5,6,7,8,9}
print(f(s))
print(f(dic))
# False
# True

函數的參數:

#函數定義
def fun(s):
    count=0
    for i in s:
        count+=1
    return count
#函數調用
str=fun(jshdjkshkdhsk)
print(str)
#13

在上述代碼中,告訴了fun函數要計算的字符串是誰,這個過程就是傳遞參數,簡稱傳參;在調用函數時傳遞的這個‘jshdjkshkdhsk‘和定義函數時的s就是參數。

實參與形參:

在調用函數時傳遞的‘jshdjkshkdhsk‘被稱為實際參數,因為這個是實際要交給函數的內容,簡稱實參

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

在傳遞多個參數:多個函數分別可以使用任意數據類型

按照關鍵之傳參數和按照位置傳參數是可以混用的,但是首先都是按位置傳,之後再是按關鍵字傳的;按照位置傳完該接收的參數只能接收一個值,不接受或者重復接收

def f2(arge1,arge2):  # 站在接收、形參的角度上:位置參數
    print(arge1)
    print(arge2)
f2(abc,arge2=[1,2,3])
# abc
# [1, 2, 3]
def f2(arge1,arge2):
    print(arge1)
    print(arge2)
f2(abc,{jsdj})
# abc
# {‘jsdj‘}

默認參數:

是可以不傳的參數,在不傳參數的情況下可以使用默認值;如果傳了,就會使用傳的值

def classmate(name,sex=):
    print(姓名:%s,性別:%s%(name,sex))
classmate(張三)
classmate(李四)
classmate(翠花,)

# 姓名:張三,性別:男
# 姓名:李四,性別:男
# 姓名:翠花,性別:女

魔性用法:默認參數盡量避免使用可變數據類型

def fun(l=[]):  # 相當於在def之前先定義了一個str=[],再將str賦值給l
    l.append(2)
    print(l)
fun()
fun()
fun()
fun()

# [2]
# [2, 2]
# [2, 2, 2]
# [2, 2, 2, 2]
def fun(l=[]):  # 相當於在def之前先定義了一個str=[],再將str賦值給l
    l.append(2)
    print(l)
fun([])
fun([])
fun([])
fun([])

#[2]
# [2]
# [2]
# [2]

函數的初識