1. 程式人生 > >函式的基礎知識整理

函式的基礎知識整理

#函式的定義與使用
#函式的定義與使用
#1.無引數的函式:
#定義函式,並不會執行;
def hello():
    #函式體
    print('hello')
#呼叫函式
hello()
print(len('hello'))
#2.帶有引數的函式
def fun1(name):
    #name='xijiao'
    #定義函式時的變數稱為形式引數,其變數名可以隨便任意起;
    print('hello %s'%(name))
fun1('xijiao')         #在呼叫函式時的引數稱為實際引數,此引數是必須要存在的。


#函式返回值與return語句
#呼叫函式時一般有返回值;沒有返回值時,在python中預設返回值為None
def hello():
    print('hello')
res=hello()     #將函式呼叫賦給一個變數
print(res)      #列印該變數

def hello():
    #return 返回時返回的是的表示式或者變數
    return 'hello'
res=hello()
print(res)


#return的應用
#隨機生成20個學生成績,判斷這20個學生成績的等級:
import random       # 倒入random模組,這是一個隨機生成工具
def level(score):   #定義帶有引數成績的等級函式
    if 90<score<=100:
        return 'A'  #return返回'A'
    elif 80<score<=90:
        return 'B'
    elif 70<score<=80:
        return 'C'
    else:
        return 'D'
def main():           #定義主函式
    for i in range(20):
        score = random.randint(1,100)   #隨機生成20個1-100的整數成績
        print('成績為%s:等級為%s'%(score,level(score)))
main()              #執行主函式

scores=[]             # 定義一個空列表
for i in range (20):  #隨機生成所有的成績
    scores.append(random.randint(1,100))
for score in scores:  #根據所有的成績來判斷等級
    print('成績為%s,等級為%s'%(score,level(score)))

#None的解釋:
#在C中:布林值為ture,false,但是在python中,布林值為Ture,False
#一般情況下,當沒有返回值的時候,我們可以將其定義為None,或者在C或者java中,空可以定義為null,nil,undefined
var=None
print(type(var))        #<class 'NoneType'>
a=print()
print(a)                #列印結果為None
#當函式如果有返回值,可以講函式賦值給一個變數:
m=max([1,2,3,4,5])      #將列表的最大值賦給m
print(m)                #列印結果為5

#返回值有多個時
def fun(a):              #a=[1,34,56,24,99,76,4]
    #接收一個列表,求該列表的最大值,最小值和平均值
    max1=max(a)
    min1=min(a)
    avg1=sum(a)/len(a)
    #在python函式中,只能返回一個值;
    #如果一定要返回多個值,那麼就回把返回的值封裝為一個元組資料
    return max1,min1,avg1
variables=fun([1,34,56,24,99,76,4])
print(variables,type(variables))  #(99, 1, 42.0) <class 'tuple'>,它的型別是一個元組

#形參——必選引數
def add(x,y,z):     #在這裡x,y,z是形式引數
    return x+y+z
print(add(3,4,5))   #而這裡的3,4,5是實際引數,即x=3,y=4,z=5
#形參——預設引數
#如果實參只有一個,x=...,y=2
#如果實參只有 兩個,x=2,y=3
def mypow(x,y=2):
    return x**y
print(mypow(2))   #實參只有一個,x=2,,預設引數y=2,所以求得2**2=4
print(mypow(2,3)) # 實參有兩個,x=2,y=3,此時列印結果為2**3=8

#print內建函式,預設的end='\n',進行換行,當然,我們也可以指定end的值
print('hello')
print('world')
print('hello',end=',')
print('world')

#形參--可變引數
#可變引數,*變數名;
#*args,args實質上是一個元組:
def mysum(*args):
    print(args,type(args))   #(1, 2, 3, 5, 4) <class 'tuple'>
    return sum(args)
print(mysum(1,2,3,5,4))

#如果已經存在:列表,但是要把列表的每一個元素作為引數,可以直接*li進行解包
li=range(1,11)
# li=(1,2,3)
# li={1,2,3}
print(mysum(*li))    #*li將列表中的每一個元素拿出來,變為元祖型別


#形參--關鍵字引數
#**kwargs關鍵字引數;接受的kwargs是字典型別;
def fun(**kwargs):
    print(kwargs,type(kwargs))   #列印結果為{'a': 1, 'b': 2} <class 'dict'>
fun(a=1,b=2)      #實際引數應該為字典型別
d={
    'a':1,
    'b':2
}
fun(**d)
#<div id=s_tabwidth=100height=200>網頁</div>
def make_html(label,value,**kwargs): #(必選引數,預設引數,關鍵字引數)
    s=''        #定義一個空的字串
    for k,v in kwargs.items():       #遍歷關鍵字引數裡的key-value值
        s+='%s=%s'%(k,v)          #給空的字串裡新增關鍵字引數的key-value 值
    html='<%s %s>%s</%s>'%(label,s,value,label)
    return html
print(make_html('div','網頁',id='s_tab',width=100,height=200))