python基礎之函數內容介紹

來源:互聯網
上載者:User

標籤:介紹   fst   gen   賦值   動態   lob   十六進位   預設參數   ascii   

一.函數
函數是一個功能塊,該功能到底執行成功與否,需要通過傳回值來告知調用者。

1.函數定義
def 函數名(參數)
......
函數體
......
傳回值

a.使用def關鍵字建立函數
b.函數名,def後面緊跟著的是函數名,每個函數都需要有個函數名
c.函數參數,分無參函數和有參數函數(下面詳解)
d.函數體,實現函數功能的語句組合
e.傳回值,返回函數執行結果資料給函數調用者

2.函數的使用
函數在定義完後是不執行函數體的,當python解釋在讀到def定義的函數名時,在記憶體中開闢一塊空間把函數放進去,函數名作為變數明指向該記憶體空間,函數在調用的時候才執行函數體。在執行函數體時,一旦執行到return語句,函數執行過程立即終止(即使函數體中還有未執行的語句)傳回值給調用函數,如果函數體中沒有return語句,預設返回None給調用函數。


3.函數的參數
函數分為無參函數和有參函數;函數在定義的時候如果有參數統一稱為形式參數,調用函數時傳遞的參數稱為實際參數


3.1 普通參數


函數定義了幾個參數,在調用的時候就需要傳遞幾個參數(形參中有預設值的除外),傳多或傳少了在執行的時候會報錯,傳遞實參時預設是和形參一一對應的。

#普通參數
def send(f1,f2): #定義了2個形參
#函數體
print(f1,f2)
return True

em=input(‘請輸入郵件地址:‘)
result=send(em,‘hello‘) # 需要傳遞2個實參
if result == True:
print(‘發送成功‘)
else:
print(‘發送失敗‘)

3.2 預設參數

形參中參數有預設值的參數,如果設定了預設參數,那麼預設參數必須放到參數列表的最後面;調用的時候位置參數在前,關鍵字參數要在後面。

#預設參數,調用的時候可以不用傳遞值,也可以從新傳遞值
def send(f1,f2,XX=‘OK‘): #位置參數要在關鍵字參數前面,預設參數在調用的時候可以傳參也可以不傳

#函數體

print(f1,f2,XX)

return True

em=input(‘請輸入郵件地址:‘)

result=send(em,‘hello‘) #傳遞2個實參,不改變預設參數的值

re=send(em,‘hel‘,‘NO‘) #傳遞3個實參,改變預設參數的值

if result == True and re == True:

print(‘發送成功‘)

else:

print(‘發送失敗‘)


3.3 指定參數

#指定參數

def send(f1,f2,XX=‘OK‘):

#函數體

print(f1,f2,XX)

return True

em=input(‘請輸入郵件地址:‘)

re=send(f1=em,f2=‘hel‘,XX=‘NO‘) #調用的時候指定參數值,參數名要和形參裡一致(順序到不必一致)

if re == True:

print(‘發送成功‘)

else:

print(‘發送失敗‘)


3.4 動態參數
3.4.1 參數前面有一個*的參數

如果在形參前加一個*那麼它就是元祖,可以接收任意個實際參數(形參前面加一個*號,在調用的時候該加*的形參可以接收傳遞的任意個實參,而不報錯);如果在調用的時候傳遞的實參前面也有個*,那麼就是把該實參裡每個元素迴圈取出作為元素賦值給函數的形參,如果調用的時候前面不加*就是把該元祖實參作為一個子元祖傳遞給形參。

def func(*args):

print args

# 執行方式一

func(11,33,4,4454,5)

# 執行方式二

li = [11,2,2,3,3,4,54]

func(*li)


3.4.2 兩個*的參數

兩個**的參數,是字典, 如果在形參前加兩個**那麼它就是字典;調用的時候需要指定k和v,那麼參數調用只能以指定參數來調用或傳遞的實參前面也有2個*(這個實參必須是字典),那麼就 是把該實參賦值給函數的形參,如:

def func(**kwargs):

print args

# 執行方式一

func(name=‘wupeiqi‘,age=18)

# 執行方式二

li = {‘name‘:‘wupeiqi‘, age:18, ‘gender‘:‘male‘}

func(**li)

 

3.4.3 萬能參數
def fname(*args,**kwargs) #只能一個*的在前面,2個*的在後面

print(args)

print(kwargs)

fname(11,22,33,k1=‘v1‘,k2=‘v2‘)

 

3.5 用動態參數實現format功能
format的函數形式是: format(*args,**kwargs)

1)位置參數

fstr=‘I am is {0},my age is {1}‘ #這裡的0和1代表第幾個參數

print(fstr.format(‘alex‘,22))

li=(‘alex‘,33)

print(fstr.format(*li))

2)變數參數

fstr2=‘I am is {name},my age is {age}‘

print(fstr2.format(name=‘pwj‘,age=21))

ld={‘name‘:‘sindy‘,‘age‘:18}

print(fstr2.format(**ld))


4.全域變數

在子程式中定義的變數稱為局部變數,在程式的一開始定義的變數稱為全域變數。
全域變數範圍是整個程式,局部變數範圍是定義該變數的子程式。
當全域變數與局部變數同名時:
在定義局部變數的子程式內,局部變數起作用;在其它地方全域變數起作用。
全域變數,預設用大寫變數名
對全域變數進行重新賦值,需要先global

name=‘wpj‘ #全域變數

age=22

def f1():

global age #先global,再重新賦值

age=22 #x修改全域變數,前面加global

name=‘alex‘ #這是局部變數,只在該函數裡生效,優先使用自己的

print(name)

def f2():

print(name) #引用的是全域變數

f1()

f2()

 

5.三元運算
是if ..else ..的簡寫,
res= 1 if True else 2,如果if後面的條件為True那麼res=1,否則res=2


6.lambda運算式(匿名函數)
匿名函數,lambda後面冒號前面跟的是參數(可以多個),冒號後面跟的是函數體(一句)隱含了return功能, 例如:f2=lambda a1,a2:a1+a2+100

 

7.常用內建函數的介紹
abs() #取絕對值

all(迭代對象) #一個為假,結果為假,all([11,22,33,0])結果為False

any(迭代對象) #,一個為真,結果為真,any((22,(),0)) 結果為True

bin() #把十進位轉換成二進位,print(bin(5)) #結果:0b101

oct() #把十進位轉換成八進位,print(oct(9)) #結果:0o11

hex() #把十進位轉換成十六進位,print(hex(14)) #結果0xe

ascii()#自動執行對象的__repr__方法

callable() #判斷對象是否是可調用對象

 

 

 

 

 

 

 


python基礎之函數內容介紹

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.