日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

刚开始的函数

發布時間:2024/9/5 编程问答 53 豆豆
生活随笔 收集整理的這篇文章主要介紹了 刚开始的函数 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
為什么要用函數

如果現在len方法不能用了,我們可以用for循環語句來實現計算長度的功能

l = [1,2,3,4,5,6] count = 0 for i in l:count += 1 print(count)

如果變量的內容變化,就要重新寫一遍,而且不能直觀的看出他的功能,因此這種做法的可讀性差,重復的代碼多,因此要用一種方法把代碼裝起來,也就是定義一個函數,比如

def my_len():l = [1,2,3,4,5,6]count = 0for i in l:count +=1print(count) my_len()

定義函數的時候,要盡量以功能為導向,結果最好不要直接在函數中打印

def my_len(): #函數名的定義l = [1,2,3,4,5,6]count = 0for i in l:count += 1return count #函數的返回值 ret = my_len() #函數的調用,以及返回值的接收 print(ret) my_len() def 函數名():for i in range(10):if i%3 == 0:print(i)return {'a':'b'},2print(i)ret,ret2 = 函數名() print(ret) print(ret2)
結果為
0

    {'a': 'b'}
    2

關于返回值

如果沒有返回值,不寫return返回的是None,只有一個return返回的也是None,return的作用有兩個:

1,返回一個值:直接在return后面加上要返回的內容,中間有空格,可以是任何數據類型

2,終止一個函數的繼續

如果返回一個值,可以返回任何數據類型,返回什么,接收什么

如果返回多個值,用一個變量接收返回值,接收到的是一個元組;返回值如果有多個變量接收,那么返回值得個數和接收變量的個數完全一致

def ret_demo1():'''返回多個值''' return 1,2,3,4def ret_demo2():'''返回多個任意類型的值'''return 1,['a','b'],3,4ret1 = ret_demo1() print(ret1) ret2 = ret_demo2() print(ret2) def ret_demo2():return 1,['a','b'],3,4#返回多個值,用一個變量接收 ret2 = ret_demo2() print(ret2)#返回多個值,用多個變量接收 a,b,c,d = ret_demo2() print(a,b,c,d)#用多個值接收返回值:返回幾個值,就用幾個變量接收 a,b,c,d = ret_demo2() print(a,b,c,d)

###python中用逗號隔開的多個值被認為是一個元組

定義def 關鍵詞開頭,空格之后接函數名稱和圓括號(),最后還有一個":"。

   函數名:函數名只能包含字符串、下劃線和數字且不能以數字開頭。要盡量簡短,并能表達函數功能

   ? 調用時函數名()?要記得加上括號。

二,函數的參數

?

def my_len(lst): #參數:接收參數,形式參數,形參count = 0for i in lst:count += 1return countl = [1, 2, 3, 4] # 參數:傳參數/傳參,實際參數,實參l = [1,2,3,4] len_count = my_len(l) print(len_count) len_count2 = my_len('XXX is somebody') print(len_count2)

?

練習

1寫一個函數,接收參數一個列表或者字符串,2如果這個列表或者字符串的長度大于2,返回True,否則返回False

def func(s_l):if len(s_l) > 2:return Trueelse:return Falseprint(func([1,2,3,4]))  #True print(func('12')) #False

?

?

?

?

參數
形參和實參:
實際的要交給函數的內容,簡稱實參
定義函數的時候只是一個形式,表示這里有一個參數,簡稱形參

傳參數可以傳任意的數據類型,并且傳什么,接受什么
傳遞多個參數,用逗號隔開
def f2(arg1,arg2,arg3): #站在接受、形參的角度上:位置參數print(arg1)print(arg2,arg3) f2(arg3 = 1,arg2 = 2,arg1 = 3)
站在傳參數的角度上看問題:一共有兩種傳參的方式
第一種:按照位置傳參數
第二種:按照關鍵字傳參數
def f(para):  #para形式參數print(para)f(para = 1) 按照關鍵字傳參數和按照位置傳參數是可以混用的
但是,首先傳按位置的,再傳按關鍵字的
按照位置傳完該接受的參數只能接受一個值,不接受或者重復接收都不行 位置參數:
站在實參角度
按照位置傳值:
def mymax(x,y):#此時x=10,y=20the_max = x if x > y else yreturn the_maxma = mymax(10,20) print(ma)
結果:20

按照關鍵字傳值:

def mymax(x,y):#此時x = 20,y = 10print(x,y)the_max = x if x > y else yreturn the_maxma = mymax(y = 10,x = 20) print(ma)
結果:20

?

位置,關鍵字混著用:

def mymax(x,y):#此時x = 10,y = 20print(x,y)the_max = x if x > y else yreturn the_maxma = mymax(10,y = 20) print(ma)

站在形參角度:

位置參數必須傳值:

def mymax(x,y):#此時x = 10,y = 20print(x,y)the_max = x if x > y else yreturn the_max#調用mymax不傳遞參數 ma = mymax() print(ma)#結果 TypeError: mymax() missing 2 required positional arguments: 'x' and 'y'

默認參數

1.正常使用

默認參數:將變化比較小的值設置成默認參數

是可以不傳的參數
在不傳參數的情況下可以使用默認的值
如果傳了,就會使用傳的值
2.默認參數的定義
def classmate(name,sex=''):print('姓名:%s,性別%s'%(name,sex))classmate('尤悅') classmate('曹超') classmate('張建超') classmate('曉梅','')
結果:

姓名:尤悅,性別男
姓名:曹超,性別男
姓名:張建超,性別男
姓名:曉梅,性別女

?

3.參數陷阱:默認參數是一個可變數據類型,但是盡量避免使用可變數據類型

lst = [] def func(l = lst):l.append(1)print(l)func() func() func() func()

結果為:

[1]
[1, 1]
[1, 1, 1]
[1, 1, 1, 1]

?

lst = [] def func(l = lst):l.append(1)print(l)func([]) func([]) func([]) func([])
結果為:

[1]
[1]
[1]
[1]

形參
位置參數
默認參數
*****動態參數******
def func(a,b,c,*args,key = "key"): #在參數前面加個*,這個參數就變成動態參數了print(a,b,c)print(key)print(args) #使用的時候,所有接收過來的參數都被組織成一個元組的形式 func(2,4,4,5,"asff",[1,3],key = "alex")
結果:

  2 4 4
  alex
  (5, 'asff', [1, 3])

def func(a,*args,key = "alex",**kwargs):print("a:",a)print("args:",args)print("key:",key)print("kwargs:",kwargs)func(5) # a: 5 # args: () # key: alex # kwargs: {} func(5,6,7) # a: 5 # args: (6, 7) # key: alex # kwargs: {} func(5,6,7,b='hahaha',c='hehehe') # a: 5 # args: (6, 7) # key: alex # kwargs: {'b': 'hahaha', 'c': 'hehehe'} func(5,6,7,key='小小酥',b='hahaha',c='hehehe') # a: 5 # args: (6, 7) # key: 小小酥 # kwargs: {'b': 'hahaha', 'c': 'hehehe'} func(5,b='hahaha',c='hehehe') # a: 5 # args: () # key: alex # kwargs: {'b': 'hahaha', 'c': 'hehehe'}

用函數實現傳入多個數字相加

def my_sum(*args):sum = 0for i in args:sum += ireturn sum ret = my_sum(1,24,5,7)  #37 print(ret) ret2 = my_sum(24,5,7)  #36 print(ret2) def stu_info(**kwargs):    #**kwargs按關鍵字的動態參數print(kwargs)print(kwargs['name'],kwargs['sex'])stu_info(name = 'alex',sex = 'male')
結果

  {'name': 'alex', 'sex': 'male'}
  alex male

def func(*args,**kwargs):print(args)print(kwargs)func(1,2,3,5,key='5')
結果為

  (1, 2, 3, 5)
  {'key': '5'}

#魔性的用法 def my_sum(*args): #聚合print(args)sum_2 = 0for i in args:sum_2 += ireturn sum_2 l = [1,24,5,7] ret = my_sum(*l) #按順序打散 print(ret)
結果

  (1, 24, 5, 7)
  37

def func(**kwargs):print(kwargs)func(b=2,a=1) dic = {'a':1,'b':2} func(**dic)
結果:

  {'b': 2, 'a': 1}
  {'a': 1, 'b': 2}

def func(*args,**kwargs):print(args)print(kwargs)func(1,2,3,4,5)
結果:

  (1, 2, 3, 4, 5)
  {}

動態參數總結:

動態參數
*args :接收所有按照位置傳的參數,接收到的是參數組成的元祖
**kwargs :接收所有按照關鍵字傳的參數,接收到的是參數組成的字典

所有的參數的順序:位置參數,*args,默認參數,**kwargs

魔性的用法:
在調用函數的時候,可以打散:*l(按順序打散)、**dic(打散)

定義函數的規則:

1.定義:def 關鍵詞開頭,空格之后接函數名稱和圓括號()。 2.參數:圓括號用來接收參數。若傳入多個參數,參數之間用逗號分割。
    參數可以定義多個,也可以不定義。
    參數有很多種,如果涉及到多種參數的定義,應始終遵循位置參數、*args、默認參數、**kwargs順序定義。
    如上述定義過程中某參數類型缺省,其他參數依舊遵循上述排序 3.注釋:函數的第一行語句應該添加注釋。 4.函數體:函數內容以冒號起始,并且縮進。 5.返回值:return [表達式] 結束函數。不帶表達式的return相當于返回 Nonedef 函數名(參數1,參數2,*args,默認參數,**kwargs):"""注釋:函數功能和參數說明"""函數體……return 返回值

調用函數的規則:
1.函數名()函數名后面+圓括號就是函數的調用。 2.參數:圓括號用來接收參數。若傳入多個參數:應按先位置傳值,再按關鍵字傳值具體的傳入順序應按照函數定義的參數情況而定 3.返回值如果函數有返回值,還應該定義“變量”接收返回值如果返回值有多個,也可以用多個變量來接收,變量數應和返回值數目一致無返回值的情況: 函數名()有返回值的情況: 變量 = 函數名()多個變量接收多返回值: 變量1,變量2,... = 函數名() 參數總結:

?

?

轉載于:https://www.cnblogs.com/xyhh/p/10833455.html

總結

以上是生活随笔為你收集整理的刚开始的函数的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 日日日插插插 | 在线免费色 | 91影院在线播放 | 日本熟妇成熟毛茸茸 | 国产精品原创 | 小小姑娘电影大全免费播放 | 成人在线播放视频 | 8050午夜一级毛片久久亚洲欧 | 国产精品福利小视频 | 国产精品久久欧美久久一区 | 视频黄色免费 | 28一20岁女人一级 | 日本久久精品视频 | 欧美香蕉网 | 久久精品区 | 免费在线黄网站 | 韩国精品一区二区三区 | a级小视频| 好男人www在线视频 我们的2018在线观看免费高清 | 国产精品人人做人人爽人人添 | 激情毛片视频 | 黄色片免费的 | 午夜精品成人毛片非洲 | 91手机在线 | 精品婷婷色一区二区三区蜜桃 | 久久免费视频3 | 四虎影视黄色 | 成人免费视频国产免费麻豆 | 免费不卡毛片 | 欧美aⅴ在线 | 在线免费观看日韩视频 | 激情小说激情视频 | 日本美女高潮 | 日本一区二区三区视频在线观看 | 美女色网站 | 嫩草私人影院 | 韩国欧美三级 | 激情另类视频 | 激情中文字幕 | 天天操夜夜操 | 女王人厕视频2ⅴk | 爱情岛论坛亚洲品质自拍 | 国产视频手机在线观看 | ass日本粉嫩pics珍品 | 涩涩视频网站在线观看 | 奇米影 | 视频在线一区二区三区 | 中文字幕人成 | 成人免费无码大片a毛片 | 一本久道在线 | 韩国无码av片在线观看网站 | 国产不卡精品 | 国产一区二区在线播放 | 日韩手机看片 | 香蕉福利 | 色婷av| 亚洲av无码国产精品久久久久 | 亚洲天堂2024 | 免费黄色大片网站 | 免费成人黄色网址 | 粗大黑人巨茎大战欧美成人免费看 | 91精品福利在线 | 国产只有精品 | 日本黄色三级网站 | 午夜精品在线免费观看 | 亚洲高清毛片一区二区 | 韩国妻子的朋友 | 亚洲国产第一 | 国产91一区在线精品 | 国产精品久久免费 | av免费观看入口 | 七七久久 | 精产国品一二三产区m553麻豆 | 国产又粗又长又黄的视频 | 亚洲天堂伊人网 | 精品久久久久久久免费人妻 | 免费涩涩网站 | 欧美自拍偷拍第一页 | 日本高清视频www | 丰满雪白极品少妇流白浆 | 无码一区二区精品 | 日韩电影第一页 | 日韩一级免费视频 | 久久成人毛片 | 成人午夜淫片100集 伊人久久国产 | а√在线中文网新版地址在线 | 永久视频在线观看 | 91偷拍一区二区三区精品 | jav中文字幕 | 夜色在线影院 | 三级色网 | 午夜窝窝 | 色网址在线 | 巨乳在线播放 | 国产精品久久久久久一区二区 | 国产尤物av尤物在线看 | 亚洲免费观看高清完整版在线 | 182在线视频 | 五月激情婷婷网 |