【oldboy】博客是必須寫的哦-第二階段
阿新 • • 發佈:2017-12-26
python1)函數參數
#!/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】博客是必須寫的哦-第二階段