python教程:函式快速入門
阿新 • • 發佈:2022-05-08
函式的定義和使用
def test(x): # x代表形參
'''
2*x+1
:param x:整形數字
:return:返回計算結果
'''
y = 2*x+1
return y
p = test(3) # test()表示執行名為test函式,3代表實參,給x進行賦值
print(p)
函式的定義:
- def: 表示函式的關鍵字
- 函式名: 函式的名稱, 根據函式名呼叫函式
- 函式體: 函式中進行一系列的邏輯計算
- 引數: 為函式執行完畢後, 可以給呼叫者返回資料
一. 為什麼要用函式?
- 減少程式碼量
- 保持一致性
- 易維
二. 函式的引數
函式有三種不同的引數:
普通引數
######### 定義函式 #########
# name 叫做函式func的形式引數,簡稱:形參
def func(name):
print name
# ######### 執行函式 #########
# 'wupeiqi' 叫做函式func的實際引數,簡稱:實參
func('wupeiqi')
預設引數
def func(name, age = 18):
print "%s:%s" %(name,age)
# 指定引數
func('wupeiqi', 19)
# 使用預設引數
func('alex')
注:預設引數需要放在引數列表最後
動態引數 *args
def func(*args):
print args
# 執行方式一
func(11,33,4,4454,5)
# 執行方式二
li = [11,2,2,3,3,4,54]
func(*li)
動態引數 **kwargs
def func(**kwargs):
print args
# 執行方式一
func(name='wupeiqi',age=18)
# 執行方式二
li = {'name':'wupeiqi', age:18, 'gender':'male'}
func(**li)
三. 函式的變數
函式的變數可分為 全域性變數和區域性變數
全域性變數(大寫)
定義:沒有縮排的變數
區域性變數(小寫)
定義:子程式下定義的變數
name = 'lhf' # 這裡就指全域性變數
def change_name():
name = '帥了一比' # 這裡就指區域性變數
print('change_name', name)
change_name()
print(name)
#結果
change_name 帥了一比
lhf
global和nolocal
global宣告是全域性變數,nolocal指定上一級變數
未宣告全域性變數
x = 99
def func():
x = 88
func()
print(x) #輸出99
宣告全域性變數
x = 99
def func()
global x
x = 88
func()
print(x) #輸出88
未指定上一級變數
def func():
count = 1
def foo():
count = 12
foo()
print(count)
func() #輸出1
指定上一級變數
def func():
count = 1
def foo():
nonlocal count
count = 12
foo()
print(count)
func() #輸出12
四. 遞迴函式
ps: 用的好的都是大牛~
就是函式自己呼叫自己
特性:
-
必須有一個明確的結束條件,
-
每次進入深一層遞迴時,問題規模都應有所減少
'''
學習中遇到問題沒人解答?小編建立了一個Python學習交流群:857662006
尋找有志同道合的小夥伴,互幫互助,群裡還有不錯的視訊學習教程和PDF電子書!
'''
def calc(n):
print(n)
if int(n / 2) == 0:
return n # 當上面的條件成立後一個真值,返回到函式
res = calc(int(n / 2))
print(n,res)
return res # 返回res的值,要將真值一層一層傳遞回去
calc(10)
五. lamabda匿名函式
lambda用法,冒號之前的是入參,冒號之後的是表示式,返回的值,最簡單的函式
print [(lambda x:x*x)(x)for x in range(11)]
#結果:[0, 1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
print (lambda x:x*x)(3)
#結果:9
g=lambda x:x*x
print g(4)
#結果:16