標籤:可變參數 全域變數 ping san use lse global 多個 fan
1)定義: 函數是指將一組語句的集合通過一個名字(函數名)封裝起來,要想執行這個函數,只需調用其函數名即可。
2)使用函數的好處:1、簡化代碼;2、提高代碼的複用性;3、代碼可擴充
3)舉個例子:
def sayhello(): #使用關鍵字def定義函數,後面是函數名
print(‘hello world‘) #函數體
sayhello() #調用函數
4)參數傳遞
def calc(a,b): #a,b為形參,形式參數
res=a*b
print(‘%s * %s=%s‘%(a,b,res))
calc(7,8) #實參,實際參數
注意:形參變數只有在被調用時才分配記憶體單元,在調用結束時,即刻釋放所分配的記憶體單元。因此,形參只在函數內部有效。
5)四種形參類型
1.位置參數:字面意思也就是按照參數的位置來進行傳參,比如說上面的calc函數,a和b就是位置參數,位置參數是必傳的,有幾個位置參數在調用的時候就要傳幾個,否則就會報錯了。
2.預設參數,預設參數就是在定義形參的時候,給函數預設賦一個值。例如:
def op_file(file_name,content=None): #content為預設值參數,非必填
f = open(file_name,‘a+‘,encoding=‘utf-8‘)
f.seek(0)
if content: #不為空白代表寫
f.write(content)
f.flush()
else:
all_user=(f.read()) #all_user 局部變數,只能在函數內使用
return all_user #調用完函數之後,返回結果
f.close()
3.可變參數,可變參數用*來接收,非必傳參數,不限制參數個數,把傳過來的參數放到元祖裡,一一對應。
def syz(*args): #可變參數,即參數組
print(args)
# username=args[0] #多個參數時,按照下標取資料
syz()
syz(‘zhangsan‘,‘35435345‘)
4.關鍵字參數,用**來接收,非必傳參數,不限制個數,傳過來的參數,放到字典裡
def syz2(**kwargs): #關鍵字參數
print(kwargs)
syz2()
syz2(name=‘zhangsan‘,age=38)
syz2(name=‘zhangsan‘,age=38,addr=‘回龍觀‘,home=‘四川‘)
6)函數的傳回值
每個函數都有傳回值,如果沒有在函數裡面指定傳回值的話,在python裡面函數執行完之後,預設會返回一個None,函數也可以有多個傳回值,如果有多個傳回值的話,會把傳回值都放到一個元組中,返回的是一個元組。
為什麼要有傳回值呢,是因為在這個函數操作完之後,它的結果在後面的程式裡面需要用到。
函數中的傳回值使用return,函數在遇到return就立即結束。
def calc(a,b):
c=a*b
return c,a,b #函數傳回值
res=calc(5,6) #把函數的傳回值賦給res
print(res)
7)局部變數和全域變數
局部變數意思就是在局部生效的,出了這個變數的範圍,這個變數就失效了,比如上面的c就是一個局部變數,出了這個函數之後,就沒有c這個值了
全域變數的意思就是在整個程式裡面都生效的,在程式最前面定義的都是全域變數,全域變數如果要在函數中修改的話,需要加global關鍵字聲明,如果是list、字典和集合的話,則不需要加global關鍵字,直接就可以修改。
name =‘zhangsan‘ #全域變數
def sayname():
global name #如果要修改全域變數,需要聲明一下,你修改值是全域變數
name=‘lisi‘
print(name)
新手學習python(五)函數