1. 程式人生 > >python初學者(六)----函式

python初學者(六)----函式

我們都知道,每一種語言,都會有函式這個玩意,因為有函式在,就可以簡化程式碼了,不至於讓程式碼太過於臃腫了

先了解一下幾種函式的型別,面向物件型的和麵向過程型的函式

#面向物件函式的類寫法是前面寫的是class,即表示的是類

#面向過程的函式和函數語言程式設計,函式的前面寫的是def

so,我們來說一下python的用法吧

def func1():
    print('in the func1')
    return 0

這個就是最簡單的python的函式的用法,def宣告一下,這就表明是函式,函式都要有返回值的,返回值表示返回的函式執行的結果
x = func1()
這就是返回了函式的返回值,不信,你列印看看?

最簡單的函式實現了,下面看一個比較複雜一點的吧,先上程式碼

#!/user/bin/env python
# -*- coding:utf-8 -*-
# Author:yongzheng

import time  #倒入模組

def logger():
    time_format = '%Y-%M-%d %X'#x代表小時分鐘秒
    time_current = time.strftime(time_format)#引用上面的時間格式
    with open('a.txt','a+') as f:###就是開啟一個檔案,準備往這個檔案中寫資訊的一種格式

        f.write('%s end action\n'%time_current)


def test1():
    print('in the test1')

    logger()
def test2():
    print('in the test2')
    logger()

def test3():
    print('in the test3')
    logger()


test1()
test2()
test3()

這段程式碼有幾點需要說明一下,第一,import,這就是匯入包,匯入時間包這裡,第二,函式之間可以巢狀呼叫,第三,with。。。as。。。其實就是表示開啟檔案的意思,其他的,還有什麼不明白的麼?有的話留言啦,一定會解答的

下面說一下,函式可以沒有返回值的,如果沒有返回值,那返回的資訊就是none,當然,返回值隨便啦,就比如數字,字串,列表啦。。。。等等都是可以的,比如:

def test3():
    return 0,'hello',['a','b','c'],{'name':'wyz'}
上面說的都是無參型別的函式,函式既然有無參的,那就肯定會有有參的函式,但凡有點程式碼基礎的,我就不多說基礎有參函數了,無非就是形參和實參兩種型別需要注意一下,算了,我不放心,還是貼上一段程式碼吧,如下
def test(x,y,z):
    print(x)
    print(y)
    print(z)

# test(y=2,x=1) #與形參順序無關
# test(1,2)  #與形參一一對應
#test(x=2,3)
test(3,z=2,y=6)
形參的幾種形式,上面都一覽無餘了,引數不管順序,但是有幾點需要注意

#######關鍵引數不能寫在位置引數前面的!!!!!

###預設引數的特點:呼叫引數時,預設引數可有可無

上面說的,都是有參無參的簡單用法,下面說一下比較複雜一點的用法,我的程式碼中都有註釋,你們看看

#!/user/bin/env python
# -*- coding:utf-8 -*-
# Author:yongzheng

def test(*dsa):
    print(dsa)

test(1,2,3,4,5,5,5)#整體輸出所有的引數
test(*[1,2,3,4,5,6,7])#第二種形式而已


def test1(x,*args):
    print(x)
    print(args)

test1(1,2,3,4,5,6,7)#x取第一個,剩下的交給指標,接受剩下的引數


def test2(**kwargs):##   **kwargs 接受N個關鍵字引數,轉換成字典的方式(鍵值對方式如{'name': 'wyz', 'age': 8, 'sex': 'f'})
    print(kwargs)
    print(kwargs['name'])#取鍵得value,如此處得到wyz
    print(kwargs['age'])#此處得到8





test2(name = 'wyz',age = 8,sex = 'f')#{'name': 'wyz', 'age': 8, 'sex': 'f'}

test2(**{'name':'wyz','age':9})##第二種寫法


def test3(name ,**kwargs):
    print(name)
    print(kwargs)

test3('alex',age = 18,sex = 'f')

def test4(name,age = 18,**kwargs):
    print(name)
    print(age)
    print(kwargs)

test4('way',age=34,sex = 'm',hobby = 'tesss')

其實吧,你們把他們放到工具中泡一下就明白到底什麼意思了,很簡單啦!

好啦,寫了一天部落格了,就這麼著吧,明天繼續哈,不懂得,就給我留言,我會盡快回復的!