函式作用
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 函...