系統(tǒng)運維
博文結構
自定義函數(shù)
變量作用域
python內建函數(shù)
一.函數(shù)
python中的函數(shù)都是語句和表達式的集合。函數(shù)的用法并沒有限制,使用方式就像python 中其他值一樣,對于重復使用的代碼,需要編寫為自定義函數(shù)以便于重復使用。
函數(shù)可以分為無參函數(shù)和帶參函數(shù)
1.無參函數(shù)
自定義無參函數(shù)并不復雜,語法格式如下:
def函數(shù)名稱() : 代碼塊 return [表達式]案例:
def add(): \\\\\\\\定義函數(shù) op1=10 op2=20 rt=op1 op2 print op1,\\\' \\\',op2,rt returnadd() \\\\\\\\調用函數(shù)\\\\\\\\輸出結果>>> 10 20 30>>> 案例:輸出九九乘法表
def ninemultitab(): op1=(1,2,3,4,5,6,7,8,9) op2=(1,2,3,4,5,6,7,8,9) for i in op1: for j in op2: print i,*,j,=,i*j retrunninemultitab()\\\\\\\\輸出結果>>> 1 * 1 = 11 * 2 = 21 * 3 = 31 * 4 = 41 * 5 = 51 * 6 = 61 * 7 = 71 * 8 = 81 * 9 = 92 * 1 = 22 * 2 = 4..................略(2)使用函數(shù)時經(jīng)常會犯一-些錯誤,總結如下
函數(shù)的定義要先于函數(shù)的調用,否則會出錯。
函數(shù)體的代碼是一個整體,要注意縮進。
定義函數(shù)時要使用冒號,但調用時不可以使用冒號。
2.帶參參數(shù)
帶參函數(shù)的語法格式如下:
def函數(shù)名稱(形式參數(shù)列表) : 代碼塊 return[表達式]案例:
def add(x,y): \\\\\\\\帶參數(shù)函數(shù)定義 return x yprint add(1,2) \\\\\\\\帶參數(shù)函數(shù)調用\\\\\\\\輸出結果>>> 3(1)當程序比較煩瑣時,參數(shù)的順序很難記住,可以使用關鍵字參數(shù)。關鍵字參數(shù)是在調用函數(shù)時,明確指定參數(shù)值賦給哪個形參,語法格式如下:
函數(shù)名稱(形參1=實參1,形參2=實參…)
綜合案例:(計算器)
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 \\\'錯誤,除數(shù)不能為0\\\' result = none else: result = op1 / op2 return resultdef convert(op): flag = true for ch in op: if ch not in \\\'1234567890\\\': flag = flase brank if flag == true: return int(op) else: return noneif __name__== \\\'__main__\\\': str1 = \\\'請輸入第1個數(shù):\\\\n\\\' strfu = \\\'請輸入一個算術運算符:\\\\n\\\' str2 = \\\'請輸入2個數(shù):\\\\n\\\' while true: print \\\'需要退出程序,請輸入字母q\\\' opp1 = raw_input(str1) ch = opp1.strip()[0].lower() if ch ==\\\'q\\\': break op1 = convert(opp1) if op1 ==none: print \\\'輸入錯誤,請輸入整數(shù)!/n\\\' continue while true: opfu= raw_input(strfu) if opfu in \\\' -*/\\\': break else: print \\\'運算符輸入錯誤\\\' continue while true: op2 = convert(raw_input(str2)) if op2 == none: print 輸入錯誤,請輸入整數(shù)!\\\\n continue else: break result = operator(op1,op2,opfu) if result <> none: print 計算%d %s %d = %d\\\\\\\'n %(op1,opfu,op2,result)print \\\'程序退出了\\\'\\\\\\\\輸出結果如下需要退出程序,請輸入字母q請輸入第1個數(shù):20請輸入一個算術運算符:*請輸入2個數(shù):30計算20 * 30 = 600\\\'n需要退出程序,請輸入字母q二.變量作用域
作用域是指變量在程序中的應用范圍,而變量聲明的位置決定它的作用域,python按作用域區(qū)分有局部變量和全局變量。全局變量是指在一個模塊中最高級別的變量有全局作用域,除非被刪除,否則存活到程序運行結束,所有函數(shù)都能訪問全局變量。
局部變量是指定義在函數(shù)內的變量有局部作用域,依賴于定義變量的函數(shù)現(xiàn)階段是否處于活動狀態(tài),調用函數(shù)時,局部變量產(chǎn)生,暫時存在。-旦 函數(shù)執(zhí)行完,局部變量將會被釋放。局部變量的作用域僅限于定義它的函數(shù),全局變量的作用域在整個模塊內部都是可見的。在同一個函數(shù)中,不允許有同名局部變量。在不同的函數(shù)中,可以有同名局部變量。在同一個程序中,全局變量和局部變量同名時,局部變量具有更高的優(yōu)先級。
下面代碼演示局部變量和全局變量的使用情況:
def addage(age): age =1 print \\\'addage(): _age=%d age=%d\\\' %(_age,age) return age_age = input(\\\'輸入年齡: \\\\n\\\')rt = addage(_age)print \\\'main(): _age =%d \\\' %_ageprint \\\'main(): rt=%d\\\' %rt\\\\\\\\輸出結果如下>>> 輸入年齡: 20addage(): _age=20 age=21main(): _age =20 main(): rt=21>>> 局部變量只有在局部中才能使用,其他范圍是訪問不到的,如age是局部變量.在全局范圍就引用不到,比如在程序最后加上代碼
lambda函數(shù)
lambda函數(shù)的作用是創(chuàng)建匿名函數(shù),是一種聲明函數(shù)的特殊方式。
lambda函數(shù)的語法如下所示:
lambda params: expr
params相當于函數(shù)接收的參數(shù)列表,expr 是函數(shù)返回值