您好,登錄后才能下訂單哦!
博文結(jié)構(gòu)
自定義函數(shù)
變量作用域
Python內(nèi)建函數(shù)
Python中的函數(shù)都是語句和表達(dá)式的集合。函數(shù)的用法并沒有限制,使用方式就像Python 中其他值一樣,對(duì)于重復(fù)使用的代碼,需要編寫為自定義函數(shù)以便于重復(fù)使用。
函數(shù)可以分為無參函數(shù)和帶參函數(shù)
1.無參函數(shù)
自定義無參函數(shù)并不復(fù)雜,語法格式如下:
def函數(shù)名稱() :
代碼塊
return [表達(dá)式]
案例:
def add(): \\定義函數(shù)
op1=10
op2=20
rt=op1+op2
print op1,'+',op2,rt
return
add() \\調(diào)用函數(shù)
\\輸出結(jié)果
>>>
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
retrun
nineMultiTab()
\\輸出結(jié)果
>>>
1 * 1 = 1
1 * 2 = 2
1 * 3 = 3
1 * 4 = 4
1 * 5 = 5
1 * 6 = 6
1 * 7 = 7
1 * 8 = 8
1 * 9 = 9
2 * 1 = 2
2 * 2 = 4
..................略
(2)使用函數(shù)時(shí)經(jīng)常會(huì)犯一-些錯(cuò)誤,總結(jié)如下
函數(shù)的定義要先于函數(shù)的調(diào)用,否則會(huì)出錯(cuò)。
函數(shù)體的代碼是一個(gè)整體,要注意縮進(jìn)。
定義函數(shù)時(shí)要使用冒號(hào),但調(diào)用時(shí)不可以使用冒號(hào)。
2.帶參參數(shù)
帶參函數(shù)的語法格式如下:
def函數(shù)名稱(形式參數(shù)列表) :
代碼塊
return[表達(dá)式]
案例:
def add(x,y): \\帶參數(shù)函數(shù)定義
return x + y
print add(1,2) \\帶參數(shù)函數(shù)調(diào)用
\\輸出結(jié)果
>>>
3
(1)當(dāng)程序比較煩瑣時(shí),參數(shù)的順序很難記住,可以使用關(guān)鍵字參數(shù)。關(guān)鍵字參數(shù)是在調(diào)用函數(shù)時(shí),明確指定參數(shù)值賦給哪個(gè)形參,語法格式如下:
函數(shù)名稱(形參1=實(shí)參1,形參2=實(shí)參...)
綜合案例:(計(jì)算器)
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'
result = None
else:
result = op1 / op2
return result
def convert(op):
flag = True
for ch in op:
if ch not in '1234567890':
flag = Flase
brank
if flag == True:
return int(op)
else:
return None
if __name__== '__main__':
str1 = '請(qǐng)輸入第1個(gè)數(shù):\n'
strFu = '請(qǐng)輸入一個(gè)算術(shù)運(yùn)算符:\n'
str2 = '請(qǐng)輸入2個(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 '程序退出了'
\\輸出結(jié)果如下
需要退出程序,請(qǐng)輸入字母q
請(qǐng)輸入第1個(gè)數(shù):
20
請(qǐng)輸入一個(gè)算術(shù)運(yùn)算符:
*
請(qǐng)輸入2個(gè)數(shù):
30
計(jì)算20 * 30 = 600'n
需要退出程序,請(qǐng)輸入字母q
作用域是指變量在程序中的應(yīng)用范圍,而變量聲明的位置決定它的作用域,Python按作用域區(qū)分有局部變量和全局變量。全局變量是指在一個(gè)模塊中最高級(jí)別的變量有全局作用域,除非被刪除,否則存活到程序運(yùn)行結(jié)束,所有函數(shù)都能訪問全局變量。
局部變量是指定義在函數(shù)內(nèi)的變量有局部作用域,依賴于定義變量的函數(shù)現(xiàn)階段是否處于活動(dòng)狀態(tài),調(diào)用函數(shù)時(shí),局部變量產(chǎn)生,暫時(shí)存在。-旦 函數(shù)執(zhí)行完,局部變量將會(huì)被釋放。局部變量的作用域僅限于定義它的函數(shù),全局變量的作用域在整個(gè)模塊內(nèi)部都是可見的。在同一個(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('輸入年齡: \n')
rt = addAge(_age)
print 'main(): _age =%d ' %_age
print 'main(): rt=%d' %rt
\\輸出結(jié)果如下
>>>
輸入年齡:
20
addAge(): _age=20 age=21
main(): _age =20
main(): rt=21
>>>
局部變量只有在局部中才能使用,其他范圍是訪問不到的,如age是局部變量.在全局范圍就引用不到,比如在程序最后加上代碼
lambda params: expr
params相當(dāng)于函數(shù)接收的參數(shù)列表,expr 是函數(shù)返回值的表達(dá)式。
普通函數(shù)和一個(gè)lambda函數(shù),案例如下:
def sum1(x,y): \\普通函數(shù)
return x+y
sum2 = lambda x,y : x+y \\lambda函數(shù)
print sum1(3,4)
print sum2(3,4)
\\輸出結(jié)果如下
>>>
7
7
Python除了本身的語法結(jié)構(gòu),還提供了常用的內(nèi)建函數(shù)。內(nèi)建函數(shù)是程序員經(jīng)常使用到的方法.可增加程序編寫的效率,如float()就是內(nèi)建的函數(shù)。內(nèi)建函數(shù)是自動(dòng)加載的, Python 的解釋器可以識(shí)別。它不需要導(dǎo)入模塊,不必做任何的操作.不需要引用就可以調(diào)用。
(1)abs()函數(shù)能夠返回一個(gè)數(shù)字的絕對(duì)值,即正數(shù)。語法格式如下:
abs (x)
案例:
>>> abs(10)
10
>>> abs(-10)
10
>>> bb = -3
>>> abs(bb)
3
(2) bool()函 數(shù)返回值是True或False.它是Boolean (布爾值)的簡寫,語法格式如下:
bool([x]
案例:里面不能為空
>>> bool()
False
>>> bool(0)
False
>>> bool(-3)
True
>>> bool('xws')
True
(3) float() 函數(shù)用于轉(zhuǎn)換數(shù)據(jù)為float 類型,語法格式如下:
float([ x ])
案例:
>>> float('25')
25.0
>>> float(3)
3.0
>>> float(999.123)
999.123
>>>
字符串和數(shù)字都可以轉(zhuǎn)為float類型,如果不能轉(zhuǎn)換,就會(huì)拋出異常。
(4) int ()函數(shù)可以將數(shù)據(jù)轉(zhuǎn)換為整數(shù),語法結(jié)構(gòu)如下:
int ([ x [,base]])
案例:
>>> int(199.99) \\浮點(diǎn)數(shù)
199
>>> int('100') \\字符串
100
>>> int('99.9') \\字符串
Traceback (most recent call last):
File "<pyshell#25>", line 1, in <module>
int('99.9')
ValueError: invalid literal for int() with base 10: '99.9'
>>>
需要注意當(dāng)參數(shù)是字符串時(shí),字符串中只能是整數(shù)格式,如果是浮點(diǎn)格式將有異常產(chǎn)生。
(5)range ()函數(shù)可以生成- -個(gè)列表,語法結(jié)構(gòu)如下:
range ([start,] stop[,step])
案例:
>>> range(0,5)
[0, 1, 2, 3, 4]
>>> range(0,30,3)
[0, 3, 6, 9, 12, 15, 18, 21, 24, 27] \\遞增
>>> range(30,0,-3)
[30, 27, 24, 21, 18, 15, 12, 9, 6, 3] \\遞減
>>>
(6) sum () 函數(shù)可以對(duì)列表中元素求和,語法結(jié)構(gòu)如下
sum(x[ ,start] )
案例:
>>> num=range(0,500,50)
>>> num
[0, 50, 100, 150, 200, 250, 300, 350, 400, 450]
>>> print(sum(num))
2250
>>>
(7) max()函數(shù)可以返回列表、元組或字符串中最大的元素,語法結(jié)構(gòu)如下:
max (x)
案例:
>>> num=[6,2,12,7,64]
>>> max(num)
64
>>> string ='d,u,a,n,g,D,U,A,N,G'
>>> max(string)
'u'
>>>
len()函數(shù)返回一個(gè)對(duì)象的長度,語法格式如下:
len(s)
案例
>>> len('duang') \\字符串
5
>>> aa=['python','jave','c#','vb'] \\列表
>>> len(aa)
4
>>> bb={'zhangsan':'100','lisi':'90'} \\字典
>>> len(bb)
2
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。