Python函式基礎注意

2021-09-25 09:19:06 字數 2490 閱讀 2368

傳遞的是不可變型別

string, tuple(),number中的內容是不可變的

def

func1

(num)

:print

(num)

#20print(+

str(

id(num)))

num =

10print

(num)

#10print(+

str(

id(num)))

num =

50print

(num)

#50print(+

str(

id(num)))

temp =

20func1(temp)

print

(temp)

#20print(+

str(

id(temp)

))

輸出:

20

1050

20

同一位址指向同一值,num和temp並不是指固定的位置的值,num和temp中儲存的是值的位址,傳遞的是位址內的值。

傳遞的是可變型別

list,dict{},set是可變的

def

func2

(lis)

:print

(lis)

print(+

str(

id(lis)))

lis[0]

=100

print

(lis)

print(+

str(

id(lis)))

li =[1

,2,3

,4,5

]print

(li)

print(+

str(

id(li)))

func2(li)

print

(li)

print(+

str(

id(li)

))

輸出:

[1, 2, 3, 4, 5]

[1, 2, 3, 4, 5]

[100, 2, 3, 4, 5]

[100, 2, 3, 4, 5]

函式始終改變的都是列表li位址中的內容,列表中的內容是可變的。

乙個有趣的引用傳遞的例子:

def

ddd(num=

):for i in

range(3

):print

(num)

print(+

str(

id(num)))

ddd(

)ddd([1

,3,4

])ddd(

)

輸出:

[0, 1, 2]

[1, 3, 4, 0, 1, 2]

[0, 1, 2, 0, 1, 2]

第一次呼叫ddd()且沒有傳遞引數時,使用值為空列表的預設引數位址;

當有傳遞引數時,使用傳遞引數的位址並按方法中的內容改變該位址中的值;

當沒有傳遞引數時,再次使用預設引數位址並改變其中的內容。

給每乙個引數定義乙個關鍵字,通過關鍵字呼叫引數。優點:允許函式呼叫時的引數的順序與定義時不一致。

func1(

*arr)

:print

(arr)

func1(

'1',

' 4'

,'hhh'

)#輸出(1, 4, 'hhh')

# *後面的變數存放所有未命名的變數引數,如沒有指定引數內容則是乙個空元組。

func2(

**arr)

:print

(arr)

func2(x=

1, y=

6, z=

'hhhh'

)#輸出:

#**後面表示的是鍵值對的引數字典,如沒有指定引數內容則是乙個空字典。

func3(

*args,

**kwargs)

:pass

#代表乙個空語句

格式:

lambda 引數1, 引數2, ……, 引數n:expression

expression中不能包含其他語句,但可以呼叫其他函式。

sum

=lambda num1, num2:num1 + num2

print

(sum(1

,2))

輸出:3

特點:1.簡單匿名函式 : lambda函式只是乙個表示式,函式體比def簡單。

2.不復用的函式 : 需要乙個抽象簡單的功能又不想單獨命名定義乙個函式。

3.為了**清晰 : 簡短更清晰易懂。

關於python函式幾點注意

有時候為了先構架好整個框架然後在逐步新增各種功能,這時候可能就會使用到空函式先佔位,這裡用到的就是pass語句 def nop pass defage judge age if age 18 pass對於函式輸入輸出型別錯誤後可能會造成麻煩,為了避免,經常會在函式中限制輸入輸出模擬,這招也是在做題時...

Python基礎 函式

函式設計原則 函式有多種方法獲得輸入產生輸出,一般使用引數作為輸入,return語句配合可變引數的改變作為輸出。函式輸入 函式輸出 def fun args returndef語句 def建立了乙個函式物件並將其賦值給乙個變數。def語句是實時執行的,在模組匯入時執行或者在互動模式下輸入時執行。始終...

python基礎 函式

def funcname params return value 如果沒有return 最後會返回none,如果只寫return 會返回none 返回值個數為乙個,但是可以返回tuple,表面上返回多個值 def f1 return x,y x,y f1 def nop passdef functe...