在程式設計意義上的函式其實是指完成某種操作的**塊,當然這個是個人的理解,但是這個概念在所有的程式語言中都是通用的。這個**塊用來完成某寫特定的操作。但是在數學上的函式卻是表示某種對應關係,這兩者之間還是有一定的區別的。但是在某種角度上講我們所程式設計的這種**塊其實就是表示的是引數與返回值之間的關係。從這個角度上來說其實也可以看做是兩個函式的概念是一樣的。
在python中函式是邏輯結構化和過程化的程式設計方式
# python 中定義函式的方式
# def 定義函式的關鍵字
# test 函式名
# ():定義引數
deftest
(x):
# 函式體
print
("this is function"
) x+=
1print
(x)test(6)
# 無引數的函式
deftest()
:return2*
3+1;
a = test(
)print
(a)
為什麼要使用函式,在工作或者開發中,有些工作是重複的並且常用的,如果將這些重複常用的工作做乙個抽象總結,抽象出來乙個適合全部功能使用的**。通過這樣的方式,就將一些特定的功能從整體中抽取出來,從而簡化了**,提高了開發效率。在使用相同功能的時候就直接呼叫者函式就可以了。
# python 中定義函式的方式
# def 定義函式的關鍵字
# test 函式名
# ():定義引數
deftest
(x):
# 函式體
print
("this is function"
) x+=
1print
(x)test(6)
deftest()
:return2*
3+1;
a = test(
)print
(a)
使用函式的好處
過程在python就是乙個沒有返回值的函式。過程的本質也是一種函式
def
test01()
: message =
'this is test nihui'
print
(message)
deftest02()
: msg =
"hello world!"
print
(msg)
return msg
t1 = test01(
)t2 = test02(
)print
(t1)
print
(t2)
從上面**的輸出效果來看,如果在python中沒有顯式的指定返回值,其實python會預設返回乙個none,從這個角度上來看其實過程就是乙個沒有返回值的函式。下面就來看看如下的擴充套件。
def
test01()
: message =
'this is test nihui'
print
(message)
deftest02()
: msg =
"hello world!"
print
(msg)
return msg
deftest03()
:return1,
2,3,
4,[123,12
,"1321"],
(213
,"34"),
t1 = test01(
)t2 = test02(
)t3 = test03(
)print
(t1)
print
(t2)
print
(t3)
在python中返回多個值的時候返回的是乙個元組,之前了解過元組是不可變的,第一層元素是不能修改的。其實在返回的時候將所有的值看做是乙個元組返回整體。返回的其實還是乙個元素。
形式引數形參變數只能在呼叫的時候被分配記憶體單元,在呼叫結束的時候立即釋放為變數分配的記憶體空間,當然這個形參只在指定的函式內部是有效的,在函式執行結束的時候就不可以使用這個變數了。
實際引數實際引數是作為變數傳入到函式中進行操作的引數,可以是常量、變數、表示式、函式等。在進行操作的時候必須指定的引數值。
def
calc
(x,y)
: res = x**y;
return res
res = calc(2,
3)print
(res)
位置引數和關鍵字
位置引數,缺一少一都不行
關鍵字引數,無須一一對應,缺一不行多乙個不行。
def
test
(x,y,z)
:print
(x)print
(y)print
(z)test(1,
2,3)
# 關鍵字引數
deftest
(x,y,z)
:print
(x)print
(y)print
(z)test(y=
1,z=
2,x=
3)
如果混合使用位置引數必須在關鍵字引數的左邊,例如下一些使用會報錯
test(1,
3,y=2)
test(1,
3,z=
2,y=4)
test(z=2,
1,3)
預設引數
def
handle
(x,type
="nihui"):
print
(x)print
(type
)
handle(
"test"
)handle(
"test"
,type
="hello"
)handle(
'hello'
,"world"
)
引數組
在字串拼接的時候 * 表示與列表有關,** 就是與列表有關,那麼這裡提到的引數組的使用也跟這個地方是一樣的。
在python中定義函式的時候,有時需要對函式引數做擴充套件,這個時候就是用到引數組。在使用的時候,如果傳入多個值的時候,可以只取其中的乙個值來使用。如果不傳值的時候就為空。
def
test
(x,*args)
:print
(x)print
(args)
test(1,
2,3,
4,5,
6)deftest
(x,**kwargs)
:print
(x)print
(kwargs)
test(
1,y=
2,z=3)
位置引數和關鍵字引數,乙個引數不能傳兩邊值
test(
1,y=
1,z=
2,z=3)
test(1,
2,21,
312,y=
2,z=4)
#這個函式可以接收任何形式的引數,就看你對這些引數如如何處理了。
deftest
(x,*args,
**kwargs)
:print
(x)print
(args)
print
(kwargs)
test(
123,
123,
123,
123,
,y=2
,z=3
)
上面的內容分析了關於函式的定義,以及函式引數的使用方式,了解了什麼叫做函式,什麼叫做過程。以及位置引數和關鍵字引數等概念。 python中full函式 Python函式混亂
我正在學習 python.我有乙個函式readwrite filename,list filename的型別為string.list是乙個包含要在檔案中重寫的字串的列表.我有乙個簡單的函式呼叫,如下所示 fname hello.txt readwrite xx fname,datalist 我面臨的...
python order函式 Python函式之二
關鍵字引數 kwargs def foo kw if y in kw print kw y foo x 123,y 1232 如上面的示例關鍵字引數用於函式呼叫,通過 鍵 值 形式加以指定。這種方式可以根據傳入的引數來決定函式的執行方向。可以讓函式更加清晰 容易使用,同時也清除了引數的順序需求,及時...
python學習筆記(二) python基礎函式
python之所以強大好用,離不開可以呼叫的各種庫,同時也和他自身函式相關,下面為學習python函式相關知識後整理知識點。1 python函式引數 python函式定義簡單但靈活度非常大。除正常定義的必選引數外,還可以使用預設引數,可變引數,關鍵字引數。預設引數 def power 5 x 2 在...