python基礎 函式

2021-09-24 11:40:26 字數 3849 閱讀 2621

函式作用

1.減少重複**

2.方便修改,更易擴充套件

3.保持**一致性

在 python 中,strings, tuples, 和 numbers 是不可更改的物件,而 list,dict 等則是可以修改的物件。

python 函式的引數傳遞:

python 中一切都是物件,嚴格意義我們不能說值傳遞還是引用傳遞,我們應該說傳不可變物件和傳可變物件。

一、新建函式

def f(index):

print('hello %s'%index) #格式化輸出

f(5)

def add(b,a): # 形參(按順序對應)

print(a)

print(b)

add(7,8) # 傳入實參(函式呼叫,按照形參順序對應)

add(2,5)

列印日誌例項

import time

def logger(n):

time_format = '%y-%m-%d %x'

time_current = time.strftime(time_format)

with open('日誌記錄', 'a') as f: # 建立乙個日誌記錄的檔案

f.write('%s end action%s\n' % (time_current,n)) # 寫入時間\n換行符

def action1(n):

print('starting action1') # 列印內容:starting action1

logger(n) # 列印內容:2019-06-16 19:06:02 end action1

def action2(n):

print('starting action2') # 列印內容:starting action2

logger(n) # 列印內容:2019-06-16 19:06:04 end action2

def action3(n):

print('starting action3') # 列印內容:starting action3

logger(n) # 列印內容:2019-06-16 19:06:02 end action3

action1(1)

action2(2)

action3(3)

二、函式的引數

1、關鍵字引數

def print_info(name, age):

print('name: %s ' % name)

print('age: %d ' % age)

# print_info(39,'xiaohu') #必需引數

print_info(age=28, name='xiaohu') #關鍵字引數(可以不按順序入參)

2、預設引數

def print_info(name,age,***='male'):  # 傳入預設引數***

print('name: %s ' % name)

print('age: %d ' % age)

print('***: %s'%***)

print_info('xiaozhuang',25) # ***不用入參,有個預設值

print_info('jinhua',18,'female') # 預設引數可變

# 輸出結果

name: xiaozhuang

age: 25

***: male

name: jinhua

age: 18

***: female

3、不定長引數

不定長無命名引數

def add(*jia):    # 不定長無命名引數加乙個*

print(jia)

sum =0

for i in jia:

sum += i

print(sum)

add(1,2,3,4,6,7)

# 輸入結果

(1, 2, 3, 4, 6, 7)

23

不定長命名引數

def pr_info(**kwargs):           # 命名引數的加**

print(kwargs) # 以字典的方式列印出來

for i in kwargs:

# print(i) #列印鍵

print('%s:%s'%(i,kwargs[i])) # 通過遍歷拿到鍵和值

pr_info(job = 'it',hobby = 'girls',height=188)

輸出結果如下:

job:it

hobby:girls

height:188

引數位置

# def f(*args,**kwargs):

# pass

# f(1,2,'23',[123,4],name ='alvin',age=23) # 關於不定長引數的位置:*args無命名的放左邊,**kwargs有命名的放右邊,否則報錯

# 如果有預設引數,放左邊

# def func(name,age=22,*args,**kwargs) # 優先順序從左到右

命名引數與無命名引數

def pr_info(*** = 'male',*args,**kwargs):

print(args)

print(kwargs)

for i in kwargs:

# print(i) #列印鍵

print('%s:%s'%(i,kwargs[i]))

pr_info() # 無引數1

# pr_info('female',1,2,56)

pr_info(1,2,56,'female',name = 'hello') # 無命名引數與命名引數

輸入結果如下:

() # 無引數1

{} # 無引數1

(2, 56, 'female') # 無命名引數

# 命名引數

name:hello # 命名引數

4、高階函式

def f(n):

return n*n

def foo(a,b,func):

ret = func(a)+func(b)

print(func(a))

print(func(b))

return ret

print(foo(1,2,f))

執行邏輯:(將函式名作為形參和實參)

foo(1,2,f) # foo(1,2,f)實參 等於 foo(a,b,func)形參

foo(a,b,func) #

ret = func(a)+func(b) # func(a)+ func(b) 相當於 f(n)+f(n) 1*1+2*2;

print(func(a)) # 結果1

print(func(b)) # 結果4

return ret # 結果5

Python基礎 函式

函式設計原則 函式有多種方法獲得輸入產生輸出,一般使用引數作為輸入,return語句配合可變引數的改變作為輸出。函式輸入 函式輸出 def fun args returndef語句 def建立了乙個函式物件並將其賦值給乙個變數。def語句是實時執行的,在模組匯入時執行或者在互動模式下輸入時執行。始終...

python基礎 函式

def funcname params return value 如果沒有return 最後會返回none,如果只寫return 會返回none 返回值個數為乙個,但是可以返回tuple,表面上返回多個值 def f1 return x,y x,y f1 def nop passdef functe...

Python 函式基礎

定義 函式是指將一組語句的集合通過乙個名字 函式名 封裝起來,要想執行這個函式,只需呼叫其函式名即可 為什麼使用函式 減少重複 使程式變的可擴充套件使程式變得易維護 1 定義乙個函式 2def func 使用def關鍵字定義函式 接函式名,括號內可以傳遞引數 3print hello world 函...