1. 程式人生 > >【oldboy】博客是必須寫的哦-第二階段

【oldboy】博客是必須寫的哦-第二階段

python

1)函數參數

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

#形參和實參
def description(x):  #此處x為形參
    pass

ret = description('123')  #123為實參
print ret

#return函數
def m():
    return 1  #函數執行到return處,會跳出,return後的代碼不會執行
    print 2

#指定參數
def student(name,age):  #指定參數可以不按照順序傳參
    print name,age

student(age=23,name="孔憲超")


#默認參數:1)此處name="張艷林",要是函數參數不指定,采用默認值;
#2)要是函數形參既有默認參數,也有其他參數:(其他參數,默認參數)
def drive(age,name="張艷林"):
    temp = name + '開車去東北'
    return temp

ret = drive(23)
print ret

#動態參數1
def f1(*args):  #*args:會把傳入的數據當做元祖元素處理:可以傳入所有數據類型
    print args,type(args)

f1(123,234,[123],{'k1':11})

#動態參數2
def f2(**kwargs):  #**kwargs會把傳入的數據當做字典元素:只能傳入字典
    print kwargs,type(kwargs)

f2(k1=111,k2=222)

#動態類型3
def f3(*args,**kwargs):  #將二者結合起來,python內部會自己分類參數,此處默認參數不能放到最後面
    print args,kwargs

f3(123,{'k1':1},k1=111,k2=222)

#動態類型4
def f4(*args):
    print args,type(args)

li = [1,2,3]
f4(li)  #列表當做元祖的元素
f4(*li) #直接把列表的元素當做元祖的元素

def f5(**kwargs):
    print kwargs,type(kwargs)

dic = {'k1':1,'k2':2}
f5(k1=dic)
f5(**dic)  #直接把字典元素傳遞給字典

2)全局變量和局部變量

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

#全局變量:一般采用大寫 局部變量:一般采用小寫

p = 'alex'

def func1():
    a = 123
    #global p  如要修改全局變量,需要加global關鍵字
    p = 'eric'  #這個地方變量p='alex',是重新創建了一個對象,不是對全局變量修改
    print a

def func2():
    a = 456
    print p
    print a

func1()
func2()

3)練習題

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

#寫函數:判斷傳入字符串中[數字],[字母],[空格]以及[其他]的個數
def f1(s):
    al_num = 0
    space_num = 0
    digit_num = 0
    others_num = 0
    for i in s:
        if i.isalpha():
            al_num += 1
        elif i.isdigit():
            digit_num += 1
        elif i.isspace():
            space_num += 1
        else:
            others_num += 1
    return (al_num,digit_num,space_num,others_num)

str = f1('12 a.')
print "字母個數為{0},數字個數為{1},空格個數為{2},其他個數為{3}".format(str[0],str[1],str[2],str[3])

#寫函數:判斷用戶傳入的對象(字符串、列表、元祖)長度是否大於5
def f2(s,li,tu):
    if len(s) > 5:
        print "s長度大於5,等於%s" %(s)
    else:
        print "s長度小於5,等於%s" %(s)
    if len(li) > 5:
        print "li長度大於5,等於%s" %(li)
    else:
        print "li長度小於5,等於%s" %(li)
    if len(tu) > 5:
        print "tu長度大於5,等於%s" %(tu)
    else:
        print "tu長度小於5,等於%s" %(tu)

f2('123451',[123],(12345678,))  #此處註意單元素元祖(123,),不寫逗號會被當做int

#寫函數:檢查傳入列表的長度,如果大於2,則保留前2個長度的內容,並將新內容返回給調用者
def f3(li):
    if len(li) > 2:
        li = li[0:2]
    return li

ret = f3(['123',{"k2":222},123,{"k1":1}])
print ret

#寫函數:檢查傳入字典的每一個value的長度,如果大於2,則僅保留前2個產地股的內容,並將新內容返回給調用者
def f4(**kwargs):
    value1 = kwargs["k1"]
    value2 = kwargs["k2"]
    if len(value1) > 2 and len(value2) >2:
        kwargs["k1"] = value1
        kwargs["k2"] = value2
    return kwargs

dic = {"k1":"v1v2","k2":[11,22,33,44]}
ret = f4(**dic)  #**kwargs的傳值方式:k1 = value或者**dic
print "di字典的元素為%s:" %(ret)


【oldboy】博客是必須寫的哦-第二階段