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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

Python函数之初体验

發布時間:2025/3/21 python 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Python函数之初体验 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

定義函數

在Python中,定義一個函數要使用def語句,依次寫出函數名、括號、括號中的參數和冒號:,然后,在縮進塊中編寫函數體,函數的返回值用return語句返回。

我們先定義一個求字符串長度的函數(無參數、無return)為例:

1 #函數定義 2 def mylen(): 3 """計算s1的長度""" 4 s1 = "hello world" 5 length = 0 6 for i in s1: 7 length = length+1 8 print(length) 9 10 #函數調用 11 mylen()

注釋:每一個函數都應該對功能和參數進行相應的說明,應該寫在函數下面第一行。以增強代碼的可讀性。

調用:就是?函數名()?要記得加上括號,好么好么好么。

?

函數的返回值:

一般在函數中都添加一行:return ***

1 #函數定義 2 def mylen(): 3 """計算s1的長度""" 4 s1 = "hello world" 5 length = 0 6 for i in s1: 7 length = length+1 8 return length 9 10 #函數調用 11 str_len = mylen() 12 print('str_len : %s'%str_len)

簡單做一個形容:函數好比一個加工廠,參數(非必要)好比是原材料,return的值好比加工出來的產品。

共有三種情況:無產品輸出、一個產品、多個產品

1、沒有返回值:無return、return、return None

? ? 這三種情況都相當于return None即無返回值

? ? 常規寫法:函數末尾 直接return?

? ? 注意:return的其他用法,就是一旦遇到return,結束整個函數。但并不是一個函數只能有一個return這個語句。如下:

1 def test_return(x): 2 if x > 0: 3 return x 4 else: 5 return 0 1 def ret_demo(): 2 print(111) 3 return 4 print(222) 5 6 ret = ret_demo() 7 print(ret)
# 試一下,看看最后print什么?是111 222都打印了么?

2、返回一個值?

只需在return后面寫上要返回的內容即可。

1 #函數定義 2 def mylen(): 3 """計算s1的長度""" 4 s1 = "hello world" 5 length = 0 6 for i in s1: 7 length = length+1 8 return length 9 10 #函數調用 11 str_len = mylen() 12 print('str_len : %s'%str_len)

注意:return和返回值之間要有空格,可以返回任意數據類型的值

3、返回多個值

1 def ret_demo1(): 2 '''返回多個值''' 3 return 1,2,3,4 4 5 6 def ret_demo2(): 7 '''返回多個任意類型的值''' 8 return 1,['a','b'],3,4 9 10 ret1 = ret_demo1() 11 print(ret1) 12 ret2 = ret_demo2() 13 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)

函數的參數

先來一段代碼體驗一下:

#函數定義 def mylen(s1):"""計算s1的長度"""length = 0for i in s1:length = length+1return length#函數調用 str_len = mylen("hello world") print('str_len : %s'%str_len)

我們告訴mylen函數要計算的字符串是誰,這個過程就叫做?傳遞參數,簡稱傳參,我們調用函數時傳遞的這個“hello world”和定義函數時的s1就是參數。

上面講過參數好比一個原材料,函數屬于加工廠。在加工之前需要將原材料傳遞到工廠,這個過程就相當于傳參的過程。

參數有兩種:形參、實參

我們調用函數時傳遞的這個“hello world”被稱為實際參數,因為這個是實際的要交給函數的內容,簡稱實參。

定義函數時的s1,只是一個變量的名字,被稱為形式參數,因為在定義函數的時候它只是一個形式,表示這里有一個參數,簡稱形參

站在實參角度:

    1、按照位置傳參

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

    2.按照關鍵字傳值

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)

    3.位置、關鍵字形式混著用

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)

  

  正確用法

      問題一:位置參數必須在關鍵字參數的前面

      問題二:對于一個形參只能賦值一次 

?

站在形參角度

位置參數

如果定義函數時填寫了位置參數,調用該函數時必須輸入相應的參數

1 def mymax(x,y): 2 #此時x = 10,y = 20 3 print(x,y) 4 the_max = x if x > y else y 5 return the_max 6 7 #調用mymax不傳遞參數 8 ma = mymax() 9 print(ma) 10 11 #結果 12 TypeError: mymax() missing 2 required positional arguments: 'x' and 'y'

默認參數

為什么要有默認參數:將變化比較小的值設置成默認參數,降低調用函數的難度。

  1.默認參數的定義

def stu_info(name,sex = "male"):"""打印學生信息函數,由于班中大部分學生都是男生,所以設置默認參數sex的默認值為'male'"""print(name,sex)stu_info('alex') stu_info('eva','female')

  2.參數陷阱:默認參數是一個可變數據類型

  默認參數很有用,但使用不當,也會掉坑里。默認參數有個最大的坑,演示如下:

  先定義一個函數,傳入一個list,添加一個END再返回:

def add_end(L=[]):L.append('END')return L

  當你正常調用時,結果似乎不錯:

>>> add_end([1, 2, 3]) [1, 2, 3, 'END'] >>> add_end(['x', 'y', 'z']) ['x', 'y', 'z', 'END']

  當你使用默認參數調用時,一開始結果也是對的:

>>> add_end() ['END']

  但是,再次調用add_end()時,結果就不對了:

>>> add_end() ['END', 'END'] >>> add_end() ['END', 'END', 'END']

  很多初學者很疑惑,默認參數是[],但是函數似乎每次都“記住了”上次添加了'END'后的list。

  原因解釋如下:

  Python函數在定義的時候,默認參數L的值就被計算出來了,即[],因為默認參數L也是一個變量,它指向對象[],每次調用該函數,如果改變了L的內容,則下次調用時,默認參數

  的內容就變了,不再是函數定義時的[]了。

  所以,定義默認參數要牢記一點:默認參數必須指向不變對象!

?  要修改上面的例子,我們可以用None這個不變對象來實現:

def add_end(L=None):if L is None:L = []L.append('END')return L

  現在,無論調用多少次,都不會有問題:

>>> add_end() ['END'] >>> add_end() ['END']

  為什么要設計str、None這樣的不變對象呢?因為不變對象一旦創建,對象內部的數據就不能修改,這樣就減少了由于修改數據導致的錯誤。此外,由于對象不變,多任務環境下

  同時讀取對象不需要加鎖,同時讀一點問題都沒有。我們在編寫程序時,如果可以設計一個不變對象,那就盡量設計成不變對象。

動態參數

  按位置傳值多余的參數都由args統一接收,保存成一個元組的形式?

def mysum(*args):the_sum = 0for i in args:the_sum+=ireturn the_sumthe_sum = mysum(1,2,3,4) print(the_sum) def stu_info(**kwargs):print(kwargs)print(kwargs['name'],kwargs['sex'])stu_info(name = 'alex',sex = 'male') 1、2、3、4從左到右定義# def f(a,b,*args,defult=6,**kwargs): # #位置參數,*args,默認參數,**kwargs # print(a,b,args,defult)

總結:

Python的函數具有非常靈活的參數形態,既可以實現簡單的調用,又可以傳入非常復雜的參數。

默認參數一定要用不可變對象,如果是可變對象,程序運行時會有邏輯錯誤!

要注意定義可變參數和關鍵字參數的語法:

*args是可變參數,args接收的是一個tuple;

**kwargs是關鍵字參數,kwargs接收的是一個dict。

以及調用函數時如何傳入可變參數和關鍵字參數的語法:

可變參數既可以直接傳入:func(1, 2, 3),又可以先組裝list或tuple,再通過*args傳入:func(*(1, 2, 3));

關鍵字參數既可以直接傳入:func(a=1, b=2),又可以先組裝dict,再通過**kwargs傳入:func(**{'a': 1, 'b': 2})。

使用*args和**kwargs是Python的習慣寫法,當然也可以用其他參數名,但最好使用習慣用法。

命名的關鍵字參數是為了限制調用者可以傳入的參數名,同時可以提供默認值。

定義命名的關鍵字參數在沒有可變參數的情況下不要忘了寫分隔符*,否則定義的將是位置參數。

轉載于:https://www.cnblogs.com/buyisan/p/7252398.html

總結

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

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

主站蜘蛛池模板: 网友自拍咪咪爱 | 午夜一二三 | 内射无码专区久久亚洲 | 亚洲av无码潮喷在线观看 | 色窝| 久久视频免费看 | 亚洲深夜视频 | 公交顶臀绿裙妇女配视频 | av影视网 | 国产又粗又长又黄视频 | av导航福利 | 高清无码一区二区在线观看吞精 | 久久一级免费视频 | 野外吮她的花蒂高h在线观看 | 中文字幕丰满孑伦无码专区 | 日韩精品在线不卡 | 亚洲欧美国产视频 | 亚洲不卡在线视频 | 哺乳援交吃奶在线播放 | 亚洲 欧美 另类 综合 偷拍 | 精品人妻少妇嫩草av无码 | 红杏出墙记| 老熟妇午夜毛片一区二区三区 | 琪琪电影午夜理论片八戒八戒 | 天堂av在线免费 | 久久久久久国产视频 | 久草视频国产 | 狼人伊人久久 | 亚洲三级影院 | 国产又粗又猛又爽又黄的视频一 | 国产69精品久久久久久久 | 日韩图片区 | 国产性生活一级片 | 少妇性l交大片免费观看 | 日韩有码电影 | 你懂得在线视频 | 国产xxxxx视频 | 国产在线1区 | 懂色av一区二区夜夜嗨 | 日韩午夜免费 | 成人小视频在线播放 | 91精产品一区观看 | 伊人久久国产精品 | 牛牛精品视频 | 精品人妻一区二区三区香蕉 | 黄色片网站在线 | 性欧美视频在线观看 | 男女那个视频 | 在线免费观看国产精品 | 欧美精品一卡 | 日本不卡视频在线播放 | 日韩一区二区三区四区五区 | 欧美日韩午夜激情 | 欧美特黄aaaaaa | 成人区精品一区二区婷婷 | 色热热 | 久久成人精品一区二区 | 欧美日韩国产一级片 | 九色婷婷 | 欧美性在线视频 | 五月婷在线观看 | 亚洲国产极品 | 日本三级日本三级日本三级极 | 欧美a久久 | 四虎成人在线视频 | 德国性经典xxxx性hd | 精品无码久久久久久久久成人 | 51精品国产人成在线观看 | 天天久久综合网 | 中文字幕第一页在线视频 | 免费看h网站 | 日本做受 | 激情视频网 | 99riav国产精品视频 | 国产精品无码AV无码国产 | 欧美激情免费看 | 澳门黄色| 狼人伊人av| 歪歪6080| 久久久久久一区二区 | 国产69久久精品成人看 | 自拍21区| 欧美又大粗又爽又黄大片视频 | 91国内视频 | 亚洲乱妇| 中文字幕一区二区人妻在线不卡 | 亚洲国产精品va在线 | 久色国产| 久久手机免费视频 | 午夜精品久久久久久99热 | 亚洲国产成人一区二区 | 三级麻豆| 青草草在线观看 | 青青草国产在线播放 | 国产毛片高清 | 欧美区一区 | 色www.| 波多野结衣一区二区三区高清av | 亚洲AV无码精品自拍 |