python基礎學習五 函式

2021-08-07 15:43:40 字數 3378 閱讀 2536

函式可以將相關功能打包並引數化,在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...