Python 函式之函式定義 呼叫 傳參

2021-07-04 22:35:12 字數 1992 閱讀 4604

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

任何程式語言都提供了很多內嵌函式,同時還允許使用者自己定義想要的函式。本節主要講自定義函式。

1、定義函式的規則

2、定義函式語法

語法:

def

functionname

( parameters ) :

"函式文件字串(即函式說明)"

function_suite(函式體)

return [expression]

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

3、函式呼叫

函式被定義後,本身是不會自動執行的,只有在被呼叫後,才會被執行。

下面通過乙個例子來講解函式的呼叫。

def

printstr

(str1) :

"列印任何傳入的字串"

print str1

呼叫上面的列印字串函式

原函式在定義時,定義了乙個形參str1,所以在呼叫函式時,也必須傳入乙個引數,否則會報錯。

printstr

("呼叫字串列印函式")

執行結果:

呼叫字串列印函式
4、傳參

先來看兩個例子。

例項1:傳遞變數

#!/usr/bin/python

#coding=utf-8

defchangenum

(num) :

num += 1

print

"自定義函式中的num = ",num

#定義變數num,賦初始值為10

num = 10

#changenum(num)

print

"函式呼叫後num = ",num

執行結果:

自定義函式中的num =  11

函式呼叫後num = 10

例項2 :傳序列list

#!/usr/bin/python

# -*- coding: utf-8 -*-

defchangelist

(list1) :

print

"函式中的list :",list1

#定義變數num,賦初始值為10

list1 = [1,2,3]

print

"呼叫函式前的list: ",list1

changelist(list1)

print

"呼叫函式後的list:",list1

執行結果:

呼叫函式前的list:  [1, 2, 3]

函式中的list : [1, 2, 3, 'newstr']

呼叫函式後的list: [1, 2, 3, 'newstr']

從上面的結果可以看出,在函式中改變num變數的值,但是在函式呼叫之外num變數的值卻沒有改變。而在第二個例項中,在函式中像list1中增加乙個元素』newstr』,在函式外檢視原list1,發現也增加了乙個元素』newstr』。也就是說在函式中改變list1,原list1也跟著改變。但是從這樣我們就能說在python中,例項1是傳值,例項2是傳引用嗎?

其實非也,和其他語言不一樣,在python中,一切皆物件, python引數傳遞採用的都是「傳物件引用」的方式。實際上,這種方式相當於傳值和傳引用的一種綜合。如果函式收到的是乙個可變物件(比如字典或者列表)的引用,就能修改物件的原始值,相當於通過「傳引用」來傳遞物件。如果函式收到的是乙個不可變物件(比如數字、字元或者元組)的引用,就不能直接修改原始物件,相當於通過「傳值』來傳遞物件,此時如果想改變這些變數的值,可以將這些變數申明為全域性變數。

Python函式定義和函式呼叫

我們已經使用了一些python內建函式,比如print input str 等等。也使用了一些python自帶模組的一些庫函式,比如math模組的abs 函式。函式定義 函式呼叫 函式名 引數 示例 自定義乙個函式,要求傳入乙個任意數值,返回傳入引數的絕對值。defmy abs invalue if...

python基礎 函式定義 呼叫

在python中,定義乙個函式要使用def語句,依次寫出函式名 括號 括號中的引數和冒號 然後,在縮排塊中編寫函式體,函式的返回值用return語句返回。我們以自定義乙個求絕對值的my abs函式為例 定義函式 def my abs x if x 0 return x else return x 函...

python函式定義和呼叫

python是不需要先編譯的,所以這決定了你呼叫函式之前得知道有這個函式,所以執行 前需要有要用到的函式的定義。下面的 在執行的時候,程式看到了函式fun1 fun2 並把相關的資訊記錄下來知道有這麼個函式,但是並沒有去檢視函式內部的東西。等到呼叫函式fun1 時,再檢視函式內部的實現,發現使用了函...