1. 程式人生 > 其它 >python教程:函式快速入門

python教程:函式快速入門

函式的定義和使用

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