。函式**塊以def關鍵字開頭,後接函式識別符號名稱和圓括號()。
。函式內容以冒號起始,並且縮排。
。函式中的docstring是可選的,可寫可不寫,建議寫上。
。任何傳入引數和自變數必須放在圓括號中間,圓括號之間可以用於定義引數。
。return[表示式]結束函式,選擇性地返回乙個值給呼叫方。不帶表示式的return相當於返回none。
def hello(name):
"""this function accepts a name and concatenate it with 'hello'
args:
name:str,name of one person
returns:
hello_name:the concatenate string
"""hello_name='hello'+name
return hello_name
。使用函式名直接呼叫函式。
。如果定義的函式存在引數,呼叫的時候一定要給出,否則會報錯。
t=hello('jane')
print(t)
輸出結果:
呼叫函式的時候可以使用以下幾種引數:
。必要(required)引數
。關鍵(keyword)字引數
。預設(default)引數
。邊長(variable-length)引數
必要引數是指必須按照函式定義的引數列表的定義,按照順序傳入,如change_list函式就必須傳入mylist引數,如果沒有按照要求進行傳遞引數,將會報錯:
當使用關鍵字引數對函式進行呼叫的時候,要按照函式定義的引數名進行賦值,這樣允許不按照函式定義的引數順序進行賦值,因為python直譯器這是可以將引數傳入變數進行對應。
def test(a,b):
print(a)
print(b)
test(b=2,a=1)
輸出結果:
預設引數指的是當引數的值沒有在呼叫時指定的話,函式將為引數賦值乙個預先定義好的值,預設引數的位置應當位於引數列表的最後:
def test(a,b=5):
print(a)
print(b)
test(1)
test(1,2)
輸出結果:
當函式需要處理的變數的數目不確定的時候可以使用變長引數,變長引數在函式定義的時候名字沒有預先確定,在定義函式的時候在變數前面增加乙個「*」,表示這是乙個變長變數:
#*args接收單個引數
#**kwargs接收字典型鍵值對
def printinfo(*args,**kwargs):
print(args)
print(kwargs)
printinfo(1,'asdas',name='asd',age=12)
輸出結果:
在函式體中定義的變數具有區域性作用域,他們只能在定義他們的函式之內被訪問;全域性變數可以在程式內被所有的函式訪問。
#如果在區域性使用全域性變數,不加global視為在區域性新建乙個變數,與原變數位址空間不同。
a=50
def test():
a=100
print(a)
test()
print(a)
輸出結果:
#新增global,標記為全域性變數
a=50
def test():
global a
a=100
print(a)
test()
print(a)
輸出結果:
a=50
def test():
num=a
print(num)
test()
print(a)
輸出結果:
python中引數的傳遞都是引用傳遞,傳遞的是位址空間,也可以說傳遞的是變數所佔的位址空間
def change_list(mylist,str_):
print('inside function{}'.format(mylist))
#a指向傳過來的str_的位址空間
str_=str_+'def'
print(str_)
lst=[1,2,3]
b='abc'
change_list(lst,b)
#經過函式的處理,lst最後增加了乙個元素
#經過函式的處理,a,b都指向'abc'的位址空間
print(lst)
print(b)
輸出結果:
匿名函式的定義方法與前面講的傳統的使用def的方法是不同,使用lambda關鍵字定義匿名函式。
。匿名函式可以接收任意數目的引數,但是返回值只能是乙個值或者表示式,他們不能包含命令或者多個表示式。
。lambda函式具有自己的命名空間,他們除了引數列表中的變數以及全域性變數之外無法訪問其他的變數。
。lambda函式無法直接被用來列印變數,lambda函式需要乙個表示式。
sm=lambda x,y:x+y
res=sm(1,2)
print(res)
輸出結果: python學習筆記(五)
python裡的流程控制語句 if expression statements s else statements s identationerror 縮排錯誤,縮排4個空格 true 非空的值 string,tuple,list,set,dict false 0,null,其他空值 需要多次判斷使...
python 學習筆記 (五)
遞迴函式,如果乙個函式在內部呼叫自身本身,這個函式就是遞迴函式。該包下的iterable方法是用來判斷物件是否可以迭代 from collections import iterable 遞迴算階乘 def fact n if n 1 return 1 return n fact n 1 print ...
Python學習筆記(五)
set set 持有一系列元素,這一點和 list 很像,但是set的元素沒有重複,而且是無序的,這點和 dict 的 key很像。建立 呼叫 set 並傳入乙個 list,list的元素將作為set的元素 s set a b c set會自動去掉重複的元素。訪問 由於set儲存的是無序集合,所以我...