Python中的函數以及相關知識(一)

如何理解Python函數Function:

1.函數(Function)是組織好的可重複使用的,用來實現單一,或相關聯功能的代碼段。

2.函數能提高應用的模塊性,和代碼的重複利用率

那麼如何定義一個函數呢?   它定義的基本規則如下:

1.函數代碼塊以 def 關鍵詞開頭,後接函數標識符名稱圓括號()

2.任何傳入參數和自變量必須放在圓括號中間。圓括號之間可以用於定義參數

3.函數的第一行語句可以選擇性地使用文檔字符串用於存放函數說明。

4.函數內容以冒號起始,並且縮進

5.return [表達式] 結束函數,選擇性地返回一個值給調用方。

6.不帶表達式的return相當於返回 None

例如:

def 函數標識名稱( 參數列表 ):
  "函數_文檔字符串,對函數進行說明"
   函數體
   return [表達式]

寫函數必須調用函數不然沒有太大意義,接下來以一個簡單的自定義函數清晰的體現出函數的調用

ef addOne(x, y):  #自定義一個addOne函數
    x += 1
    y += 1
    return x, y #一次返回多個結果
    pass
m, n = addOne(1, 2)  #定義多個變量接受返回結果
print(m," ", n)
>>>2   3

參數的傳遞:

python 中,strings, tuples, numbers 不可更改的對象,而 list, dict 等則是可以修改的對象

不可變數據的傳遞

def sayHello(name, toName): #pythonn 是完全面向對象的
    name = "dashu"  
    print("{0} 對 {1} 說你好".format(name, toName))
    pass
name1 = "xiaogege"
toName1 = "xiaojiejie"
sayHello(name1, toName1)
print(name1)
>>>dashu 對 xiaojiejie 說你好

看例子的輸出結果是dashu對小姐姐說你好而不是xiaogege對小姐姐說你好,可以看出傳給不可變數據是無意義的

可變數據的傳遞

def addUser(userList, userName):
  
    userList.append(userName)        #只是修改了列表的元素裏的值。
    pass
userList1 = ['zhangsan']
addUser(userList1, 'lisi')
print(userList1)
>>>['zhangsan', 'lisi']

我們可以看出把數據傳給可變數據是完全ok的

調用函數時可使用的正式參數類型:

必備參數,默認參數,不定長參數

必備參數:

def sum(x, y): 
    return  x+y
    pass
print(sum(1, 2))
>>>3

默認參數:(注意帶默認值的參數必須放在定義)

def sum(x, y = 0):
    
    return x+y
    pass
print(sum(1))
print(sum(1, y = 10)) # 以前調用函數時:參數列表的順序時固定的,但是python可以匹配參數名

>>>1
>>>11

不定長參數:

*args:加了星號(*)的變量名會存放所有未命名的變量參數。選擇不多傳參數也可,可變長參數的類型爲元組

def 函數名稱(formal_args,  *args ):
   "函數_文檔字符串"
   函數體
   return [表達式]

**kw:加了星號(**)的變量名會存放所有未命名的變量參數。選擇不多傳參數也可,可變長參數的類型爲字典

def 函數名稱(formal_args,  **kw ):
   "函數_文檔字符串"
   函數體
   return [表達式]

這裏小編把他倆放在一起舉一個最簡單的例子

def test(*a, **aa):
    print(a, aa)
    pass
test(1,2,3,4,5,6, **{'a':1, 'b':2, 'c':3})
>>>(1, 2, 3, 4, 5, 6) {'a': 1, 'b': 2, 'c': 3}

可以看出輸出的結果分別爲元組和字典(不定長參數*args和**kw 在**後面的字母可以自己隨便定義不過國際上習慣寫args和kw)

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章