Python3中函數基礎

函數是對功能或者動作的封裝,它的主要目的是:最大化代碼重用和最小化代碼冗餘,以及對複雜過程的分解。

1:函數的定義與調用

在Python中使用如下的語法進行定義一個函數:

def name(arg1,arg2,... argN):
	statements
	return value

def語句是一條可執行的語句,當它運行的時候,會創建一個新的函數對象。並將它賦值給一個變量名(也就是函數名)。

def  add(a,b): # 代碼執行到這裏時,創建了一個函數對象,並把它賦值給add
	print('a=',a,' b=',b)
	return a+b


# 函數調用:
print(add(1,3))
print(add('1','3'))
print(add([1,2,3,4],['abc','ert']))

2:函數的返回值

在Python中每個函數都有一個返回值,如果自己沒有顯式返回,函數默認返回None,其中函數返回值可以是任意類型的單個值,可以是任意類型的多個值。

# 1:返回默認值 None
def print_msg(s):
	print(f'hello {s}')

ret = print_msg(111)
print(ret)  # None


# 2:返回單個值
def  add(a,b): # 代碼執行到這裏時,創建了一個函數對象,並把它賦值給add
	print('a=',a,' b=',b)
	return a+b
ret = add(1,3)
print(ret) # 返回4

ret = add('hello','ixusy88')
print(ret) # 返回 helloixusy88

# 3:返回多個值
def  add(a,b): # 代碼執行到這裏時,創建了一個函數對象,並把它賦值給add
	print('a=',a,' b=',b)
	return a,b,a+b     # 返回元組;也可以返回列表等其他類型數據
ret = add(1,3)
print(ret) # 返回4

ret = add('hello','ixusy88')
print(ret) # 返回 ('hello', 'ixusy88', 'helloixusy88')

# 也可以 使用序列賦值:
a,b,ret = add('hello','ixusy88')
print(a,b,ret ) # 輸出:hello ixusy88 helloixusy88

3:形參和實參

形參:在函數聲明的位置。 給出來的參數叫形參。 形式上的一個參數. 用一個變量來表示;
形參的分類
1. 位置參數 按照位置來聲明形參
2. 默認值參數, 當給參數傳遞值的時候,默認值不起作用; 不給值,默認值起作用.;保證你至少有個值能用
順序: 位置參數必須放在前面。 默認值參數必須放在後面

實參:在函數調用的時候,把實參的值賦值給形參的過程叫傳參;在函數調用的地方給出的具體的值叫實參. 實際參數;
實參的分類:
1. 位置參數.:按照位置, 給形參賦值;
2. 關鍵字參數:按照形參的名字給參數賦值;
3. 混合參數,:位置參數必須放在前面, 關鍵字參數放後面;

# 形參,定義函數的時候的參數:位置參數必須放在前面,默認值參數必須放在後面
def show_msg(name,age,sex='男'):
	msg = f'name is {name}, age is {age},sex is {sex}. '
	print(msg)


# 實參:調用函數的時候,實際給函數傳遞的值。
# 位置參數:按照定義的位置傳遞
show_msg('ixusy88',18)

# 關鍵字參數:使用默認值
show_msg(name='hahha',age=38)
# 關鍵字參數:不使用默認值
show_msg(name='hahha',age=38,sex='女')

# 混合參數:位置參數必須放在前面, 關鍵字參數放後面;
show_msg('混合參數hahha',age=38,sex='女')

4:參數傳遞

在Python中參數的傳遞其實就是賦值操作,是變量名給變量名賦值(即通過對象引用),其結果就是兩個變量指向了相同的對象:

# 不可變對象:
def func(a):
	a = 200 # 這個的修改不會影響到外部
	print('0-----:',id(a),a)
s = 100

func(s)
print('1-----:',id(s),s)

"""
輸出結果:
0-----: 1775928288 200
1-----: 1775925088 100
"""
print('*'*60)

# 可變對象:
def func_2(a):
	a[0] = 100 # 這裏的修改會影響到外部的變量,因爲兩者都指向一個可變數據類型。
	print('0-----:',id(a),a)
 
lst = [1,2,3]
print('1-----:',id(lst),lst)
func_2(lst)
print('2-----:',id(lst),lst)


"""
1-----: 2036762659272 [1, 2, 3]
0-----: 2036762659272 [100, 2, 3]
2-----: 2036762659272 [100, 2, 3]
"""

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章