Week3

函數

一、介紹python

編程方式:編程

面向對象:華山派 --》類 --》關鍵字 :classide

面向過程:少林派 --》過程 --》關鍵字:過程 def函數式編程

函數式編程:蛋黃派 --》函數 --》關鍵字:def函數

二、定義   測試

初中函數   x與y , x是因變量y是自變量  y是x的函數 隨着x的變化y都有一個肯定的值,好比 y=2xspa

Python定義  :邏輯結構化與過程化 def  函數名(參數):表明接着寫子代碼   邏輯  再定義返回值 returncode

(過程和函數 關鍵字都是def,實際爲沒有返回值的函數)orm

'''

def fun():
    "定義一個測試函數"
    return ("CPU:" + str(psutil.cpu_times()) + "%")

x = fun()
'''
View Code

 

可重複利用,low例子對象

#Herbie Kim
#!/usr/bin/python
# -*-coding:utf-8-*-

#重複利用
import time


def logger():
    time_format = '%Y-%m-%d %X'
    time_current = time.strftime(time_format)
    with open('a.txt','a+') as f:
        f.write('%s end action\n' %time_current)


def test1():
    print('in the test1')
    logger()

def test2():
    print('in the test2')
    logger()

test1()
test2()
View Code

 

返回值

def test1():
    print('hehe....')

def test2():
    print('hehe....')
    return 0

def test3():
    print('hehe....')
    return 1,'kim',['1','hello'],{'name':'herbie'}

x = test1()
y = test2()
z = test3()
print(x)
print(y)
print(z)
View Code

 

參數:

形參與實參

#形參與實參
def test(x,y):    #x,y 表明形參
    print(x)
    print(y)

#test(1,2)    #()內容實參(位置參數爲x,y賦值)
test(1,y=5)   # y=5 關鍵字參數,關鍵字等於賦值
test(x=3,4)   #報錯,關鍵字參數沒法放在位置參數前
View Code

 

非固定參數

def test4(name,age=18,*args,**kwargs):
    print(name)
    print(age)
    print(args)
    print(kwargs)

test4('kim',age=20,home='liangzhu',cat='tesla')
View Code

 

局部變量做用域於函數中,外部調用沒法生效 (函數中定義)

name = "kim"

def change_name(name):
    print("我原本叫:",name)
    name = "cake"        #局部變量,只做用域於函數內部,並未改變原生變量名name
    print("可是以後叫:",name)

change_name(name)

print(name)

 

全局變量做用於全局一開始就在程序中定義,函數中也可修改局部變量,當變量爲參數或函數沒法修改(但不能改!

name = "kim"

age = 19

def change_name(name):
    global age        #在函數中修改全局變量
    age = 18
    name = "cake"
    print("我原本叫:",name,"今年:",age)
    #name = "cake"        #局部變量,只做用域於函數內部,並未改變原生變量名name
    print("可是以後叫:",name,"今年也:",age)

change_name(name)

print(name)
print(age)

注意:局部變量沒法修改全局變量只有當 此變量是單純的字符串或數字。當變量爲複雜一些的列表、字典能夠修改

names = ["kim","cake","sun"]
def change_name(names):
    names[0] = "金某人"
    print(names)

change_name(names)
print(names)

 

遞歸

若是一個函數在內部本身調用自己,那麼就是遞歸函數;

def care(n):
    print(n)
    return care(n+1)

care(0)

 

特性:

  • 必需要有明確的結束條件
  • 每次進入更深一層遞歸時,問題規模相比上一次遞歸都應有所減小
  • 遞歸效率不高,層數過多會致使棧溢出

使用場景:傳入一個數值一直除以2到沒法除爲止

def care(n):
    print(n)
    if int(n/2) > 0:
        return care(int(n/2))
    print("-->",n)

care(100)
View Code

 

高階函數

變量能夠指向函數,函數的參數能接收變量,那麼一個函數就能夠接收另外一個函數做爲參數。這種函數就稱爲高階函數

def go(x,y,f):

    return f(x) + f(y)

res = go(3,-6,abs)   #abs 能夠將負數轉爲正數

print(res)
相關文章
相關標籤/搜索