Python3學習筆記(十四) 函式

2021-08-26 02:19:18 字數 4514 閱讀 6998

函式是組織好的,可重複使用的,用來實現單一,或相關聯功能的**段。

函式能提高應用的模組性,和**的重複利用率。已經知道python提供了許多內建函式,比如print()。但你也可以自己建立函式,這被叫做使用者自定義函式。

規則如下:

python定義函式使用def關鍵字,一般格式如下:

def 函式名(引數列表):

函式體

預設情況下,引數值和引數名稱是按函式宣告中定義的順序匹配起來的。

def

printsth

(s):

print(s)

printsth("hello world")

輸出:

hello world

return的函式:

def

calarea

(width, height):

return width * height

printsth(calarea(10, 10))

輸出:

python中,型別屬於物件,變數是沒有型別的。

a = "abc"

a = [1, 2, 3]

在以上例子中,[1, 2, 3]屬於list型別,abc屬於string型別,而變數a是沒有型別的,它只是乙個物件的引用(乙個指標),可是是指向list物件,也可以指向string物件。

python中,stringstuples,numbers是不可更改物件,而listdic則是可修改物件。

python函式的引數傳遞:

python傳遞不可變物件例項:

tempa = 0

defchangeint

(a):

a = 10

changeint(tempa)

printsth(tempa)

輸出:

例項中,有int物件為0,指向它的變數為tempa,在傳遞給changeint函式時,按傳值的方式複製了變數tempatempaa都指向了同乙個int物件,在a=10時,生成了乙個新的int物件10,並讓a指向了它。

python傳遞可變物件例項:

originlist = [1, 2, 3]

def(li):

print(originlist)

輸出:

[1, 2, 3, 4]

以下是呼叫函式時可使用的正式引數型別:

必須引數須以正確的順序傳入函式,呼叫時的數量必須和宣告時一樣。

關鍵字引數和函式呼叫關係緊密,函式呼叫使用關鍵字引數來確定傳入的引數值。

使用關鍵字引數允許函式呼叫時引數的順序與宣告時不一致,因為python直譯器能夠用引數名匹配引數值。

def

printsth

(age, name):

print("名字:", name)

print("年齡:", age)

printsth(name="hello world", age=100)

輸出:

名字: hello world

年齡: 100

呼叫函式時,如果沒有傳遞引數,則會使用預設引數。

def

printsth

(name, age=100):

print("名字:", name)

print("年齡:", age)

printsth("hello world")

輸出:

名字: qfxl

年齡: 100

當需要乙個函式能處理比初宣告時更多的引數時。這些引數叫做不定長引數。

def

printsth

(*varargs):

print(varargs)

printsth("hello world")

輸出:

(『hello world』,)

加了星號*的引數會以元組(tuple)的形式匯入,存放所有未命名的變數引數。

還有一種不定引數的形式是宣告兩個***這樣的引數會以字典的形式匯入。

def

printsth

(**varargs):

print(varargs)

printsth(a=1, b=2)

輸出:

宣告函式時,引數中星號*可以單獨出現。如果單獨出現**之後的引數必須用關鍵字傳入。

def

test

(a, b, *, c):

return a + b + c

print(test(1, 2, c=3))

輸出:

python中使用lambda來建立匿名函式。

所謂匿名函式,意思是不用def關鍵字來定義函式。

lambda函式的語法只包含乙個語句。

lambda [arg1 [,arg2,…..argn]]:expression

sum = lambda a, b: a + b

print(sum(1, 1))

輸出:

python中,程式的變數並不是在哪個位置都可以訪問的,訪問許可權決定於這個變數在哪賦值的。

python一共有4中作用域:

l->e->g->b的規則查詢,在區域性找不到,便會去區域性外的區域性找(閉包),再會去全域性找,最後去內建中找。

x = int(10)  # 內建作用域

g_x = 0

# 全域性作用域

defouter

(): o_x = 1

# 閉包函式外的函式中

definner

(): i_x = 2

# 區域性作用域

當內部作用域想修改外部作用域變數時,就要用到globalnonlocal關鍵字。

name = "qfxl"

defchangename

():global name

print(name)

name = "xyh"

changename()

print(name)

輸出:

qfxl

xyh

如果要修改巢狀作用域(enclosing作用域,外層非全域性作用域)中的變數則需要nonlocal關鍵字。

def

changename

(): name = "qfxl"

definner

():nonlocal name

name = "xyh"

print(name)

inner()

print(name)

changename()

輸出:

xyh

xyh

Python3學習筆記 三 函式

在python中,一切皆為物件,函式也可以賦給乙個變數,就是指向乙個函式物件的引用,相當於給這個函式起了乙個 別名 a max a 1,2,3 3 a 123 可以對可迭代物件進行操作 3 函式的定義 def power x,n 2 可以計算計算x4 x5 s 1 while n 0 n n 1s ...

Python3學習筆記

最近在起步學python,聚合一下這個過程中蒐集的資源和對一些基本知識做個小總結,語法基於python3,方便以後查詢。python官方文件 不錯的基礎課程 基本語法 演算法 建模 練習 以下是整理常用可能遺忘的基礎點 python3中的輸入是input 獲得使用者輸入的字串 a input ple...

python3學習筆記

redis訊息佇列的使用 coding utf 8 created on tue mar 26 15 58 34 2019 author admin import redis class redisqueue object def init self,name,namespace queue red...