函式可以將相關功能打包並引數化,在python中,可以建立4種函式:
全域性函式:全域性物件(包括函式)可以由建立該物件的統一模組(同乙個.py檔案)中的任意**訪問呼叫。其他模組也可以呼叫訪問。
區域性函式:區域性函式定義在其他函式內,只對對其進行定義的函式可見。
lamda函式:是乙個表示式,這類函式要比通常的函式收到更多的限制。
方法:方法是與特定資料型別關聯的函式,並且只能與資料型別關聯在一起使用。
關於python的官方手冊,可以登入python官方指南檢視,著重利用,library reference與 global module index。要著重查詢某個資料型別提供了哪些屬性(或方法),可以dir(str)
函式獲取。
引數的返回值可以是單獨的乙個值,也可以是一組值,還可以是組合型別的值。如果return不帶引數,或者根本就沒有使用return語句,那麼函式將返回none。
1.預設引數
使用parameter = default
可以指定函式的乙個預設引數,當呼叫函式時,可以不傳遞給函式該引數而使用預設值。預設引數應當放置在位置引數之後。
給定預設值時,預設值實在定義def函式時建立的,而不是呼叫時建立的。例如:
i = 5
deff
(arg=i):
print(arg)
i = 6
f()out:5
最常見的情況為:
def
f(a, l=):
return l
print(f(1))
print(f(2))
print(f(3))
輸出為
[1]
[1, 2]
[1, 2, 3]
因此對於列表,字典,集合等可變資料型別,應當使用如下方式定義:
def
f(a, l=none):
if l is
none:
l =
return l
2.引數與引數拆分
(1)我們可以使用序列拆分操作符*來提供位置引數,例如,function(*list)
,如果列表包含的資料項多於函式的引數,則可以使用分片的方法,如下是乙個使用序列拆分符號的函式形式:
def
cal_area
(a,b,c):
return a*b*c
k = [10,11,12]
print(cal_area(*k))
(2)使用拆分操作符建立可變數量的位置引數的函式。
def
sum_up
(*args):
sum1 = 0
for arg in args:
sum1 = sum1 + arg;
return sum1
k = [1,2,3,4,5,6,7,8,9]
print(sum_up(*k))
def
sum_up
(*args,power = 10):
sum1 = 0
for arg in args:
sum1 = sum1 + arg * power;
return sum1
將*本身作為引數也是可能的,用於表明在*不應該再出現位置引數,但關鍵字引數是允許的。
def
sum_up
(a,b,c,*,power = 10):
return a*b*c*power
print(sum_up(10,2,3))
def
print_info
(**args):
for key in args:
print(key,':',args[key])
k = dict(name='kai',gender = 'man',age=10)
print_info(**k)
(4)訪問全域性範圍的變數
language = false
defa_function
():if language == true:
print('true')
else:
print('false')
如上所示,python處理該函式時,會先在區域性(a_function())範圍內進行查詢,由於沒有找到,有在全域性(.py)範圍內進行查詢,並找到其定義位置。
language = 1
defa_function
():global language
language = 2
a_function()
print(language)
global的用法為,告訴python,這個變數為全域性變數,而不是建立乙個同名的本地變數。如果沒有global語句,程式也可以執行,python會在區域性範圍內查詢,由於找不到就建立乙個language區域性變數,而不改變全域性的language變數。
(5)lambda函式
lambda parameters : expression
lambda函式的expression不能包含分支或者迴圈(但允許使用條件表示式),也不能包含return或yield語句,呼叫lambda函式時,返回的結果是對表示式計算產生的結果。如果expression是乙個元組,就應當使用()將其括起來。
area = lambda a,b,c:a*b
*cprint(area(1,2,3))
(6)斷言
def
a_function
(*args):
assert all(args),'0 argument'
sumup = 0
for arg in args:
sumup = sumup + arg
return sumup
k = [0,1,2,3,4]
print(a_function(*k))
在函式有錯誤或進行不正確計算時,可以使用斷言進行測試,語法格式如下:
assert boolen_expression,optional_expression
當boolen_expression為false時,產生乙個assertionerror異常,如果給定了optional_expression,則將其最為assertionerror的乙個引數。
waldm
Python基礎學習 函式(五)
usr bin env python3 n 100 n int input 輸入乙個數字 sum 0 counter 1 while counter n sum sum counter counter 1 print 1 到 d 之和為 d n,sum usr bin python3 計算面積函式 ...
python基礎學習筆記(五)
字串基本操作 所有標準的序列操作 索引 分片 乘法 判斷成員資格 求長度 取最小值和最大值 對字串同樣適用,前面已經講述的這些操作。但是,請注意字串都是不可變的。字串的方法 字串從string 模組中 繼承 了很多方法,這裡只介紹一些特別有用的。1 find find 方法可以在乙個較長的字串中查詢...
python基礎學習 函式基礎
author feng lin date 2018 8 27 返回值的三種情況 一.沒有返回 返回none 不加 return 預設返回none return 執行到這裡跳出函式體 return none 不常用,沒意義 defmy return print my defmy return none...