内射老阿姨1区2区3区4区_久久精品人人做人人爽电影蜜月_久久国产精品亚洲77777_99精品又大又爽又粗少妇毛片

Python函數(shù)-創(chuàng)新互聯(lián)

函數(shù)是一段可以重復(fù)使用的代碼,通過(guò)傳遞的參數(shù)返回不同的結(jié)果,函數(shù)能夠提高應(yīng)用的模塊性和代碼的重復(fù)利用率。

創(chuàng)新互聯(lián)是一家集網(wǎng)站建設(shè),景東企業(yè)網(wǎng)站建設(shè),景東品牌網(wǎng)站建設(shè),網(wǎng)站定制,景東網(wǎng)站建設(shè)報(bào)價(jià),網(wǎng)絡(luò)營(yíng)銷(xiāo),網(wǎng)絡(luò)優(yōu)化,景東網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強(qiáng)企業(yè)競(jìng)爭(zhēng)力。可充分滿(mǎn)足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時(shí)我們時(shí)刻保持專(zhuān)業(yè)、時(shí)尚、前沿,時(shí)刻以成就客戶(hù)成長(zhǎng)自我,堅(jiān)持不斷學(xué)習(xí)、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實(shí)用型網(wǎng)站。

博文大綱:
一、函數(shù)
二、變量的作用域
三、內(nèi)建函數(shù)
四、特殊函數(shù)——lambda函數(shù)

一、函數(shù)

Python中的函數(shù)都是語(yǔ)句和表達(dá)式的集合。函數(shù)的用法并沒(méi)有限制,使用方法就像Python中其他值一樣,對(duì)于重復(fù)使用的代碼,需要編寫(xiě)為自定義函數(shù)以便于重復(fù)使用。

在CentOS 7系統(tǒng)(默認(rèn)是Python 2.7.5)中實(shí)現(xiàn)!

函數(shù)可以分為:

  • 無(wú)參函數(shù);
  • 有參函數(shù);

1.無(wú)參函數(shù)

(1)自定義無(wú)參函數(shù),語(yǔ)法格式如下:

def 函數(shù)名稱(chēng)():
    代碼塊
    return 表達(dá)式

以關(guān)鍵字def開(kāi)始,后面跟函數(shù)名和小括號(hào),以冒號(hào)開(kāi)頭并縮進(jìn),最后使用return退出函數(shù),有表達(dá)式則傳遞返回值,沒(méi)有則返回None。函數(shù)是以字母、數(shù)字和下劃線(xiàn)組成的字符串,但是不能以數(shù)字開(kāi)頭。

無(wú)參函數(shù)的調(diào)用語(yǔ)法如下:

[變量 = ] 函數(shù)名稱(chēng)()

使用賦值運(yùn)算符“=”可以獲得函數(shù)的返回值,使用函數(shù)是必須先定義再調(diào)用,否則程序會(huì)出現(xiàn)錯(cuò)誤。

實(shí)例:

[root@localhost ~]# vim 1.py
#coding:utf-8  
def add():                            //定義函數(shù)
        op1=10
        op2=20
        rt=op1+op2
        print op1,'+',op2,'=',rt
        return
add()                                //調(diào)用函數(shù)
[root@localhost ~]# python 1.py                         //輸出結(jié)果
10 + 20 = 30

上述代碼中,定義了無(wú)參函數(shù)add(),輸出了10+20的值,return語(yǔ)句并沒(méi)有返回值,直接使用函數(shù)名add()進(jìn)行了調(diào)用。

將上述代碼稍作修改,用return語(yǔ)句返回結(jié)果值,代碼如下:

[root@localhost ~]# vim 1.py
#coding:utf-8  
def add():
        op1=10
        op2=20
        rt=op1+op2
        return rt
i=add()                      //將函數(shù)的返回值賦值給i
print i
[root@localhost ~]# python 1.py                //輸出結(jié)果
30

函數(shù)add()使用return語(yǔ)句返回相加的結(jié)果值,變量i接收函數(shù)add()返回的值。Python在處理返回值時(shí),如果沒(méi)有return語(yǔ)句,會(huì)默認(rèn)返回None,程序并不會(huì)報(bào)錯(cuò)。

九九乘法表實(shí)例:

[root@localhost ~]# vim 1.py
#coding:utf-8  
def a():
     for i in range(1,10):
        for j in range(1,i+1):
            print i, "*", j, "=" ,i*j,
        print "\t"
a()
[root@localhost ~]# python 1.py
1 * 1 = 1   
2 * 1 = 2 2 * 2 = 4     
3 * 1 = 3 3 * 2 = 6 3 * 3 = 9   
4 * 1 = 4 4 * 2 = 8 4 * 3 = 12 4 * 4 = 16   
5 * 1 = 5 5 * 2 = 10 5 * 3 = 15 5 * 4 = 20 5 * 5 = 25   
6 * 1 = 6 6 * 2 = 12 6 * 3 = 18 6 * 4 = 24 6 * 5 = 30 6 * 6 = 36    
7 * 1 = 7 7 * 2 = 14 7 * 3 = 21 7 * 4 = 28 7 * 5 = 35 7 * 6 = 42 7 * 7 = 49     
8 * 1 = 8 8 * 2 = 16 8 * 3 = 24 8 * 4 = 32 8 * 5 = 40 8 * 6 = 48 8 * 7 = 56 8 * 8 = 64  
9 * 1 = 9 9 * 2 = 18 9 * 3 = 27 9 * 4 = 36 9 * 5 = 45 9 * 6 = 54 9 * 7 = 63 9 * 8 = 72 9 * 9 = 81

(2)使用函數(shù)時(shí)經(jīng)常會(huì)犯一些錯(cuò)誤,比如:

  • 函數(shù)的定義要先于函數(shù)的調(diào)用,否則會(huì)出錯(cuò);
  • 函數(shù)體的代碼是一個(gè)整體,要注意縮進(jìn);
  • 定義函數(shù)是要使用冒號(hào),但調(diào)用時(shí)不可以使用冒號(hào);

(3)編寫(xiě)一個(gè)用戶(hù)登錄頁(yè)面的腳本,如下:

[root@localhost ~]# vim 1.py
#coding:utf-8  
kgc={}
def newuser():                                          //定義創(chuàng)建新用戶(hù)的無(wú)參函數(shù)
    prompt1 = 'login desired:'
    while True:
        name = raw_input(prompt1)
        if (kgc.has_key(name)):                             //has_key:用于判斷name鍵是否存在kgc字典中
            prompt1 = '--name taken,try another:'
            continue
        else:
            break
    pwd = raw_input('password:')
    kgc[name]=pwd
def olduser():                                     //定義已有賬號(hào)的無(wú)參函數(shù)
    name = raw_input('login:')
    pwd = raw_input('password:')
    password = kgc.get(name)                //獲取name在kgc字典中的值
    if password == pwd:
        print "ok"
    else:
        print "no"
def showmenu():                                  //定義列表菜單,調(diào)用上兩個(gè)無(wú)參函數(shù)
    prompt='''
        (N)ew User Login
        (E)ntering User Login
        (Q)uit
    Enter choice:'''
    while True:
        choice = raw_input(prompt).strip()[0].lower()                          
                //strip()表示去除字符串錢(qián)的多余字符,()表示空格
                //[0]表示字符串的第一個(gè)字符
                //lower()將字符變成小寫(xiě)
        print '\n--You picked:[%s]' %choice
        if choice not in 'neq':
            print '--invalid option,try again--'
        else:
            if choice=='n':
                newuser()
            elif choice=='e':
                olduser()
            else:
                print 'quit'
                break
if __name__=='__main__':                           //定義程序入口
    showmenu()
[root@localhost ~]# python 1.py                                 //執(zhí)行腳本

        (N)ew User Login
        (E)ntering User Login
        (Q)uit
    Enter choice:n                         //n表示新建用戶(hù)

--You picked:[n]
login desired:lzj
password:123

        (N)ew User Login
        (E)ntering User Login
        (Q)uit
    Enter choice:e                       //表示已有賬號(hào)登錄

--You picked:[e]
login:lzj
password:123
ok                                            //登錄成功,顯示ok

        (N)ew User Login
        (E)ntering User Login
        (Q)uit
      Enter choice:q                          //q表示退出腳本

--You picked:[q]             
quit

2.帶參函數(shù)

(1)帶參函數(shù)的語(yǔ)法格式:

def 函數(shù)名稱(chēng)(形式參數(shù)列表):
    代碼塊
    return [表達(dá)式]

通過(guò)語(yǔ)法,可以看出帶參函數(shù)與無(wú)參函數(shù)的區(qū)別就是在函數(shù)名稱(chēng)后的小括號(hào)中有形式參數(shù)列表,參數(shù)列表實(shí)際上只是占位符,用于體現(xiàn)參數(shù)的個(gè)數(shù),每個(gè)參數(shù)都沒(méi)有提供具體的數(shù)值。

帶參函數(shù)的調(diào)用語(yǔ)法如下:

[變量 = ] 函數(shù)名稱(chēng)( 參數(shù)列表)

調(diào)用時(shí)只需要在每個(gè)參數(shù)傳遞對(duì)應(yīng)的實(shí)際數(shù)值,就可以完成函數(shù)的調(diào)用。

實(shí)例:

[root@localhost ~]# vim 1.py
#coding:utf-8  
def add(x,y):
        return x+y
print add(1,2)
[root@localhost ~]# python 1.py
3

上述代碼中定義了函數(shù)add(),它有兩個(gè)形式參數(shù)x和y,在函數(shù)的語(yǔ)句塊中可以使用x和y,和使用變量是類(lèi)似的。通過(guò)函數(shù)名add()和實(shí)際的參數(shù)值1和2進(jìn)行調(diào)用,所以返回值是3.

(2)當(dāng)調(diào)用函數(shù)時(shí),傳遞的實(shí)際參數(shù)值是根據(jù)位置來(lái)跟函數(shù)定義的參數(shù)表匹配的,如下:

[root@localhost ~]# vim 1.py
#coding:utf-8  
def add(x,y):
        print x,y
add(1,2)
add(10,20)
[root@localhost ~]# python 1.py
1 2
10 20

在函數(shù)add(x,y)中,輸出x,y值,x在前,y在后。調(diào)用add(1,2)時(shí),x的值是1,y的值是2;當(dāng)調(diào)用add(10,20)時(shí),x的值是10,y的值是20,所以在最后的輸出結(jié)果是不同的。

(3)當(dāng)程序比較繁瑣時(shí),參數(shù)的順序是很難記住的,可以使用關(guān)鍵字參數(shù)。關(guān)鍵字參數(shù)實(shí)在調(diào)用函數(shù)時(shí),明確指定參數(shù)值付給那個(gè)形參,語(yǔ)法格式如下:

函數(shù)名稱(chēng)(形參1=實(shí)參1,形參2=實(shí)參2……)

實(shí)例:

[root@localhost ~]# vim 1.py

#coding:utf-8  
def add(x,y):
        print x,y
add(x=1,y=2)
add(y=10,x=20)
[root@localhost ~]# python 1.py
1 2
20 10

在調(diào)用的過(guò)程中,明確指定了實(shí)參是形參的對(duì)應(yīng)關(guān)系,所以在輸出的時(shí)候,就不會(huì)因?yàn)槲恢玫脑?,而錯(cuò)亂順序。

(4)調(diào)用普通參數(shù)函數(shù)時(shí),傳入的參數(shù)個(gè)數(shù)必須和聲明的參數(shù)個(gè)數(shù)一致。但關(guān)鍵字參數(shù)有一個(gè)特殊的作用,可以在定義函數(shù)時(shí)設(shè)置關(guān)鍵字參數(shù)的默認(rèn)值,此時(shí)傳入函數(shù)的參數(shù)就可以和聲明的參數(shù)個(gè)數(shù)不一致了。

實(shí)例:

[root@localhost ~]# vim 1.py
#coding:utf-8  
def add(x,y=100):
        print x,y
add(x=100)
add(100,200)
[root@localhost ~]# python 1.py
100 100
100 200

定義時(shí)參數(shù)y的默認(rèn)值是6,調(diào)用時(shí),可以不傳遞y的值,只傳遞x的值即可,直接傳值或使用參數(shù)名并賦值都可以;如果定義了y的值,則y的默認(rèn)值將不生效。

注意:定義關(guān)鍵字參數(shù)默認(rèn)值時(shí)需要注意,位置參數(shù)必須出現(xiàn)在默認(rèn)參數(shù)之前,比如以下的函數(shù)定義時(shí)錯(cuò)誤的:

#coding:utf-8  
def add(x=1,y):
        print x,y
add(x=100)
add(100,200)

(5)編寫(xiě)一個(gè)計(jì)算器程序
需求如下:

  • 完成一個(gè)計(jì)算器的程序,用戶(hù)輸入兩個(gè)數(shù)字和運(yùn)算符,做加減乘除運(yùn)算,
  • 為了使程序結(jié)構(gòu)清晰,需要編寫(xiě)兩個(gè)函數(shù),一個(gè)是用來(lái)處理加減乘除運(yùn)算,一個(gè)是用來(lái)處理字符串和數(shù)值轉(zhuǎn)換。
#coding:utf-8
def operator(op1,op2,opfu):
    if opfu not in '+-*/':
        return -1
    if opfu =='+':
        result = op1+op2
    elif opfu =='-':
        result = op1-op2
    elif opfu =='*':
        result = op1*op2
    elif opfu =='/':
        if op2 == 0:
            print '錯(cuò)誤,除數(shù)不能為0!/n'
            result = None
        else:
            result = op1/op2
    return result
def convert(op):
    flag = True
    for ch in op:
        if ch not in '1234567890':
            flag = False
            break
        if flag == True:
                return int(op)
        else:
            return None
if __name__=='__main__':
    str1 = '請(qǐng)輸入第一個(gè)數(shù):\n'
    strfu = '請(qǐng)輸入一個(gè)算數(shù)運(yùn)算符:\n'
    str2 = '請(qǐng)輸入第二個(gè)數(shù):\n'
    while True:
        print '需要退出程序,請(qǐng)輸入字母q'
        opp1 = raw_input(str1)
        ch = opp1.strip()[0].lower()
        if ch == 'q':
            break
        op1 = convert(opp1)
        if op1 ==None:
            print '輸入錯(cuò)誤,請(qǐng)輸入整數(shù)!\n'
            continue
        while True:
            opfu = raw_input(strfu)
            if opfu in '+-*/':
                break
            else:
                print '運(yùn)算符輸入錯(cuò)誤'
                continue
        while True:
            op2 = convert(raw_input(str2))
            if op2 == None:
                print "輸入錯(cuò)誤,請(qǐng)輸入整數(shù)!\n"
                continue
            else:
                break
        result = operator(op1,op2,opfu)
        if result <> None:
            print "計(jì)算%d %s %d = %d \n" %(op1,opfu,op2,result)
print '程序退出了'
#執(zhí)行結(jié)果如下:
需要退出程序,請(qǐng)輸入字母q
請(qǐng)輸入第一個(gè)數(shù):
10
請(qǐng)輸入一個(gè)算數(shù)運(yùn)算符:
*
請(qǐng)輸入第二個(gè)數(shù):
2
計(jì)算10 * 2 = 20 

需要退出程序,請(qǐng)輸入字母q
請(qǐng)輸入第一個(gè)數(shù):
q
程序退出了

現(xiàn)在對(duì)上述代碼進(jìn)行分段解釋?zhuān)?br/>第一段代碼:

def operator(op1,op2,opfu):
    if opfu not in '+-*/':
        return -1
    if opfu =='+':
        result = op1+op2
    elif opfu =='-':
        result = op1-op2
    elif opfu =='*':
        result = op1*op2
    elif opfu =='/':
        if op2 == 0:
            print '錯(cuò)誤,除數(shù)不能為0!/n'
            result = None
        else:
            result = op1/op2
    return result

在上面代碼中,位置1處定義了函數(shù)operator(op1,op2,opfu),參數(shù)op1表示運(yùn)算符前面的數(shù)值,op2表示運(yùn)算符后面的數(shù)值,opfu表示運(yùn)算符,然后先判斷opfu是不是“+-*/”中的其中一個(gè),如果不是,返回值是-1,表示程序出錯(cuò)。在接下來(lái)就是判斷是哪個(gè)運(yùn)算符號(hào),就進(jìn)行哪種運(yùn)算處理。但是在判斷除法運(yùn)算符時(shí),需要加一個(gè)條件,就是除數(shù)不能是0,因?yàn)槌龜?shù)是0在數(shù)學(xué)上是沒(méi)有意義的,最后只要把運(yùn)算的結(jié)果返回即可。

第二段代碼:

def convert(op):
    flag = True
    for ch in op:
        if ch not in '1234567890':
            flag = False
            break
        if flag == True:
                return int(op)
        else:
            return None

在上面的代碼中,首先定義了一個(gè)布爾型變量flag,用于判斷數(shù)值的有效性,在for循環(huán)語(yǔ)句中,op是傳進(jìn)來(lái)的字符串,使用for循環(huán)判斷它的每一個(gè)字符是不是在“1234567890”中,如果有一個(gè)不再,說(shuō)明這個(gè)字符串不能轉(zhuǎn)換為數(shù)值,flag的值為False,退出循環(huán),否則flag的值不變,還是True,說(shuō)明字符串可以轉(zhuǎn)換為數(shù)值型。然后接下來(lái)做了相應(yīng)的判斷,把字符串op轉(zhuǎn)換為了整型,使用的是int()函數(shù)。最后是如果不能轉(zhuǎn)換為整型,返回的是None。

第三段代碼:

if __name__=='__main__':
#以下是定義三個(gè)字符串的提示文字
    str1 = '請(qǐng)輸入第一個(gè)數(shù):\n'
    strfu = '請(qǐng)輸入一個(gè)算數(shù)運(yùn)算符:\n'
    str2 = '請(qǐng)輸入第二個(gè)數(shù):\n'
#下面是主體代碼的無(wú)限循環(huán)操作,可以用來(lái)進(jìn)行多次計(jì)算
    while True:
        print '需要退出程序,請(qǐng)輸入字母q'
#以下是判斷當(dāng)鍵盤(pán)輸入q時(shí),就退出程序
        opp1 = raw_input(str1)
        ch = opp1.strip()[0].lower()
        if ch == 'q':
            break
#對(duì)輸入的第一個(gè)字符串進(jìn)行數(shù)值轉(zhuǎn)換操作,convert()返回是None,說(shuō)明不能轉(zhuǎn)換,使用continue進(jìn)入到下一次循環(huán)重新輸入。
        op1 = convert(opp1)
        if op1 ==None:
            print '輸入錯(cuò)誤,請(qǐng)輸入整數(shù)!\n'
            continue
#等待輸入運(yùn)算符,如果是“+-*/”中的一個(gè),使用break結(jié)束循環(huán),否則執(zhí)行continue,重新輸入
        while True:
            opfu = raw_input(strfu)
            if opfu in '+-*/':
                break
            else:
                print '運(yùn)算符輸入錯(cuò)誤'
                continue
#下面是輸入第二個(gè)數(shù)值,同樣需要做轉(zhuǎn)換操作,如果不能轉(zhuǎn)換就需要重新輸入
        while True:
            op2 = convert(raw_input(str2))
            if op2 == None:
                print "輸入錯(cuò)誤,請(qǐng)輸入整數(shù)!\n"
                continue
            else:
                break
#下面就是調(diào)用函數(shù)operator進(jìn)行運(yùn)算,result不等于None就說(shuō)明運(yùn)算是正常的,顯示出運(yùn)算結(jié)果
        result = operator(op1,op2,opfu)
        if result <> None:
            print "計(jì)算%d %s %d = %d \n" %(op1,opfu,op2,result)
print '程序退出了'

二、變量的作用域

作用域是指變量在程序中的應(yīng)用范圍,而變量聲明的位置決定它的作用域,Python按作用域區(qū)分有局部變量和全局變量。

1、全局變量:

全局變量是指在一個(gè)模塊中高級(jí)別的變量有全局作用域,除非被刪除,否則存活到程序運(yùn)行結(jié)束,所有函數(shù)都能訪(fǎng)問(wèn)全局變量。

2、局部變量:

局部變量是指定義在函數(shù)內(nèi)的變量有局部作用域,依賴(lài)于定義變量的函數(shù)現(xiàn)階段是否處于活動(dòng)狀態(tài),調(diào)用函數(shù)時(shí),局部變量產(chǎn)生,暫時(shí)存在,一旦函數(shù)執(zhí)行完成,局部變量就不存在了。

局部變量的作用域僅限于定義它的函數(shù),全局變量的作用域在整個(gè)模塊內(nèi)部都是可見(jiàn)的。在同一個(gè)函數(shù)中,不允許有同名的局部變量,在不同函數(shù)中,可以有同名的局部變量。在同一個(gè)程序中,全局變量和局部變量同名時(shí),局部變量具有更高的優(yōu)先級(jí)。

示例:

#代碼如下:
def addage(age):
    age += 1
    print 'addage():_age=%d age=%d' %(_age,age)
    return age
_age = input('請(qǐng)輸入年齡:\n')
rt = addage(_age)
print 'main():_age = %d'%_age
print 'main(): rt=%d' %rt
#執(zhí)行結(jié)果如下:
請(qǐng)輸入年齡:
10            #輸入一個(gè)“10”
addage():_age=10 age=11
main():_age = 10
main(): rt=11

在上面的代碼中,函數(shù)addage(age)中定義了局部變量age,在全局范圍定義了全局變量_age。_age的值是由我們鍵盤(pán)輸入的,它在全局都生效,所以在addage(age)函數(shù)中也可以對(duì)它進(jìn)行引用。當(dāng)鍵盤(pán)輸入是10時(shí),_age的值是10,調(diào)用“rt=addage(_age)”,就是把全局變量_age的值10傳給了函數(shù),此時(shí)addage(age)的局部變量age的值也是10,執(zhí)行age += 1后,age值成為了11,而全局變量_age的值不發(fā)生變化,打印輸出“_age=10 age=11”,函數(shù)的返回值age的值是11,由rt接收,所以打印“_age=10,rt=11”

通過(guò)上面的代碼示例,可以看出Python采用的是值傳遞的方式,但實(shí)際上并不是這樣。Python采用的是值傳遞和引用傳遞相結(jié)合的方式,當(dāng)傳遞可變對(duì)象時(shí)(如字典或者列表),相當(dāng)于傳引用,而不可變對(duì)象(如數(shù)字、字符或元組)就是值傳遞。上面?zhèn)鬟f的是字符串,所以是值傳遞的方式。

在Python中盡量不使用全局變量,因?yàn)槌绦蛑锌梢宰杂傻脑L(fǎng)問(wèn)全局變量,其他人并不知道哪個(gè)變量是全局變量,非常容易出現(xiàn)引用錯(cuò)誤,這種錯(cuò)誤也很難發(fā)現(xiàn)和更正的。

局部變量只有在局部中才能使用,其他范圍是訪(fǎng)問(wèn)不到的,如上面的代碼匯總age是局部變量,在全局范圍就引用不到,比如在上面程序中加上下面這行代碼,就會(huì)報(bào)錯(cuò)。

#在上面代碼末尾加上下面這段代碼:
 # ....................省略部分內(nèi)容
print 'main():age = %d'%age
#執(zhí)行結(jié)果如下:
請(qǐng)輸入年齡:
10
addage():_age=10 age=11
main():_age = 10
main(): rt=11

Traceback (most recent call last):     
  File "C:/Users/Administrator/Desktop/aa.py", line 9, in <module>
    print 'main():age = %d'%age 
NameError: name 'age' is not defined      #提示age沒(méi)有定義

錯(cuò)誤顯示age沒(méi)有定義,說(shuō)明在全局范圍age是訪(fǎng)問(wèn)不到的,這個(gè)問(wèn)題可以使用global關(guān)鍵字解決,global的作用是聲明變量為全局變量,即使變量定義在函數(shù)內(nèi)部,加上global后,也可以在全局范圍訪(fǎng)問(wèn),修改后的代碼如下:

def addage(num):
    global age
    age = num+1
    print 'addage():_age=%d age=%d' %(_age,age)
    return age
_age = input('請(qǐng)輸入年齡:\n')
rt = addage(_age)
print 'main():_age = %d'%_age
print 'main(): rt=%d' %rt
print 'main():age = %d'%age

上面代碼中做了一些調(diào)整,主要使用了global定義age,最后在全局引用age時(shí),可以正常使用。

在函數(shù)中,使用global語(yǔ)句聲明的全局變量名不能與其中的局部變量重名,而且盡量要避免在函數(shù)中使用global定義全局變量,減少程序的不可預(yù)知性。

三、內(nèi)建函數(shù)

Python除了本身的語(yǔ)法結(jié)構(gòu),還提供了常用的內(nèi)建函數(shù),內(nèi)建函數(shù)是我們經(jīng)常使用到的方法,可增加程序編寫(xiě)的效率,如float()函數(shù)就是內(nèi)建函數(shù)。內(nèi)建函數(shù)是自動(dòng)加載的,Python的解釋器可以識(shí)別,它不需要導(dǎo)入模塊,不必做任何操作,不需要引用就可以調(diào)用。

1、abs()函數(shù)能夠返回一個(gè)數(shù)字的絕對(duì)值,即整數(shù),如下:

>>> abs(10)
10
>>> abs(-10)
10
>>> bb = -3
>>> abs(bb)
3

2、bool()函數(shù)返回值是TRUE或FALSE,它是布爾值的簡(jiǎn)寫(xiě),可以用來(lái)判斷字符是否為空,如下:

>>> bool()    #無(wú)參數(shù)時(shí)返回False
False
>>> bool(0)
False
>>> bool(-3)
True
>>> bool(None)
False
>>> bool('xyz')
True
>>> bool('11,22')
True

3、float()函數(shù)用于轉(zhuǎn)換數(shù)據(jù)為float(浮點(diǎn))類(lèi)型,字符串和數(shù)字都可以轉(zhuǎn)換為float類(lèi)型,如果不能轉(zhuǎn)換,就會(huì)報(bào)錯(cuò),如下:

>>> float(25)
25.0
>>> float(3)
3.0
>>> float(99.589456)
99.589456
>>> float('99.589456')
99.589456

4、int()函數(shù)可以將數(shù)據(jù)轉(zhuǎn)換為整數(shù),如下:

>>> int(199.99)     #浮點(diǎn)數(shù)
199
>>> int('100')     #字符串
100
>>> int('99.99')     #字符串,字符串中只能是整數(shù)格式,如果是浮點(diǎn)型就會(huì)報(bào)錯(cuò)

Traceback (most recent call last):
  File "<pyshell#30>", line 1, in <module>
    int('99.99')
ValueError: invalid literal for int() with base 10: '99.99'

5、range()函數(shù)可以生成一個(gè)列表,如下:

>>> range(0,5)
[0, 1, 2, 3, 4]
>>> range(0,30,3)     #第三位的數(shù)字代表步長(zhǎng),是可選參數(shù)
[0, 3, 6, 9, 12, 15, 18, 21, 24, 27]
>>> range(30,0,-3)
[30, 27, 24, 21, 18, 15, 12, 9, 6, 3]
>>> for i in range(0,5):
    print i

0
1
2
3
4

6、sum()函數(shù)可以對(duì)列表中元素求和,如下:

>>> num = range(0,500,50)   #定義一個(gè)元組
>>> num          #查看元組中的值
[0, 50, 100, 150, 200, 250, 300, 350, 400, 450]
>>> print (sum(num))    #對(duì)元組中的值進(jìn)行求和操作
2250

7、max()函數(shù)可以返回列表、元組或字符串中大的元素,如下:

>>> num = [6,2,12,7,65]
>>> max(num)
65
>>> str = 'a,d,g,c,D,U,A,N,G'
>>> max(str)
'g'
>>> max(1000,650,98,2689)
2689

8、min()函數(shù)返回列表、元組或字符串中值最小的元素,和max()正好相反,如下:

>>> min(10,9,7)
7

9、dir()函數(shù)可以返回關(guān)于任何值的相關(guān)信息,可以用于任何對(duì)象,包括字符串、數(shù)字、函數(shù)、模塊、對(duì)象和類(lèi)。相當(dāng)于幫助手冊(cè)。如下:

>>> dir()                #無(wú)參數(shù)時(shí),返回當(dāng)前范圍內(nèi)的變量
['__builtins__', '__doc__', '__file__', '__name__', '__package__', '_age', 'addage', 'age', 'bb', 'i', 'num', 'rt', 'str']
>>> dir(rt)                #帶參時(shí),返回的是參數(shù)的屬性、方法列表
['__abs__', '__add__', '__and__', '__class__', '__cmp__', '__coerce__', '__delattr__', '__div__', '__divmod__', '__doc__', '__float__', '__floordiv__', '__format__', '__getattribute__', '__getnewargs__', '__hash__', '__hex__', '__index__', '__init__', '__int__', '__invert__', '__long__', '__lshift__', '__mod__', '__mul__', '__neg__', '__new__', '__nonzero__', '__oct__', '__or__', '__pos__', '__pow__', '__radd__', '__rand__', '__rdiv__', '__rdivmod__', '__reduce__', '__reduce_ex__', '__repr__', '__rfloordiv__', '__rlshift__', '__rmod__', '__rmul__', '__ror__', '__rpow__', '__rrshift__', '__rshift__', '__rsub__', '__rtruediv__', '__rxor__', '__setattr__', '__sizeof__', '__str__', '__sub__', '__subclasshook__', '__truediv__', '__trunc__', '__xor__', 'bit_length', 'conjugate', 'denominator', 'imag', 'numerator', 'real']

10、eval()函數(shù)是可以計(jì)算表達(dá)式的值。如下:

>>> eval('100*9')
900
>>> eval(raw_input("請(qǐng)輸入表達(dá)式:"))
請(qǐng)輸入表達(dá)式:8+9*2-3
23

11、len()函數(shù)返回一個(gè)對(duì)象的長(zhǎng)度,如下:

>>> len('lvjianzhao')       #字符串
10
>>> language = ['python','java','c#','vb']       #列表
>>> len(language)
4
>>> person = {'zhangsan':'123','lisi':'234','wangwu':'345'}    #定義一個(gè)字典
>>> len(person)
3

四、特殊函數(shù)——lambda函數(shù)

lambda函數(shù)的作用是創(chuàng)建匿名函數(shù),是一種聲明函數(shù)的特殊方式。
lambda函數(shù)的語(yǔ)法格式如下:

lambda params:expr

其中params相當(dāng)于函數(shù)接受的參數(shù)列表,expr是函數(shù)返回值的表達(dá)式。

示例:

#代碼如下
def sum1(x,y):
    return x+y
sum2 = lambda x,y:x+y
print sum1(1,2)
print sum2(1,2)
#執(zhí)行結(jié)果如下
3
3

實(shí)現(xiàn)的是相同的功能,但lambda函數(shù)更加簡(jiǎn)潔,只用一條語(yǔ)句實(shí)現(xiàn),所以lambda也稱(chēng)為lambda表達(dá)式,使用lambda只能是表達(dá)式,不能包含if、for等條件循環(huán)語(yǔ)句,對(duì)于不需要復(fù)用、簡(jiǎn)單的匿名函數(shù),使用lambda能起到很好的效果。

———————— 本文至此結(jié)束,感謝閱讀 ————————

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內(nèi)外云服務(wù)器15元起步,三天無(wú)理由+7*72小時(shí)售后在線(xiàn),公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性?xún)r(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專(zhuān)為企業(yè)上云打造定制,能夠滿(mǎn)足用戶(hù)豐富、多元化的應(yīng)用場(chǎng)景需求。

本文題目:Python函數(shù)-創(chuàng)新互聯(lián)
網(wǎng)站URL:http://www.rwnh.cn/article28/cegjcp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供云服務(wù)器、建站公司網(wǎng)站設(shè)計(jì)、動(dòng)態(tài)網(wǎng)站小程序開(kāi)發(fā)、App開(kāi)發(fā)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話(huà):028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

外貿(mào)網(wǎng)站制作
农安县| 竹山县| 县级市| 宁河县| 壶关县| 芮城县| 富蕴县| 河东区| 利川市| 凤城市| 韶关市| 安塞县| 北安市| 上犹县| 郓城县| 江城| 哈尔滨市| 连云港市| 七台河市| 鸡东县| 万宁市| 昭觉县| 孟州市| 繁昌县| 土默特左旗| 浦东新区| 图木舒克市| 澄江县| 满洲里市| 南安市| 绥棱县| 五常市| 鄢陵县| 梅州市| 乌拉特中旗| 浦江县| 精河县| 西宁市| 六枝特区| 洪湖市| 黎平县|