函式的定義和使用
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
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/470594.html
標籤:其他
上一篇:Python中,如何使用 IPython 除錯(debug)程式
下一篇:Arrays.sort
