【Python基礎入門系列】第05天:Python函數

? ? ? ??前面我們寫過九九乘法表,但如果我要七七乘法表或五五乘法表的話,你會看到三者代碼極其類似,只是循環變量不同,那么如何做到代碼重用,而不是簡單拷貝黏貼修改呢,其實可是使用函數完成這一功能!

先來試著看一看這個函數:

def?table(row,col,sep=3):for?i?in?range(1,?row?+?1):for?j?in?range(1,?col?+?1):if?j?<=?i:print("%d*%d = %2d"?%?(i,?j,?i?*?j),?end='%*s'%(sep,' '))print('')
#一次編碼,到處運行
table(8,8)
table(5,5,8)

?

下面就來介紹一下今天的內容--》python函數

?

1.函數定義

函數就是完成特定功能的代碼塊,本質上是對代碼的封裝

語法格式:

def?函數名([參數1],[參數2]....[參數n]):
函數體
  • 函數名命名規則同變量名,要滿足標識符命名規則

  • 不能和系統函數重名,否則系統函數無法使用

  • 函數定義分兩部分函數頭和函數體

  • 函數體,就是實現功能的代碼段,以:開頭,必須縮進

  • 函數名的命名風格:一般建議用下劃線分隔的小寫單詞組成:say_hello

    ?

函數的優點:

  • 代碼可復用

  • 代碼可維護性高

  • 容易排錯

  • 可讀性好

  • 利于團隊開發

?

?

2 函數參數

2.1 實參和形參

  • 形參:就是函數定義時小括號里的變量

  • 實參:函數調用的時候,小括號里的表達式

  • 函數可以沒有形參和實參

2.2 參數分類

  • 位置參數,要求實參順序必須和形參順序完全一致,由形參順序決定實參順序

    def say_hello(name,age,home):print('大家好,我是{},我今年{}歲了,我來自{}'.format(name,age,home))say_hello('王二妮',18,'湖北武漢') #實參個數、順序必須和形參一致

    ?

  • 關鍵字參數,函數調用時,實參可以是鍵值對,鍵就是形參名字,這樣的調用,實參不必關心形參的順序。

    def say_hello(name,age,home):print('大家好,我是{},我今年{}歲了,我來自{}'.format(name,age,home))say_hello(name='王二傻',home='大連',age=20) #三個關鍵字參數
    say_hello('大傻',home='美國',age=30) #兩個關鍵字參數
    sya_hello('二傻',24,home='何方') ? #一個關鍵字參數

    ?

  • 默認值,如果形參在定義的時候給定一個值,那么函數在調用時就可以不傳實參,可以簡化調用

    def my_power(x,n=2):return (x) ** n
    my_power(3)
    my_power(4,0.5)def test(a=[]):a.append('end')print(a)
    test([1,2,3])
    test() ? #['end']
    test() ? #['end','end']
    • 默認值參數必須放到最右邊

    • 如果傳了實參,那么實參優先,不會使用默認值

    • 默認值只計算一次

    • 默認值必須是不可變對象

  • 可變參數,傳入的參數個數是可變的,可以是1個、2個到任意個,還可以是0個。

    #使用*接收任意數量的位置參數
    #注意:*的不定長參數被當做元組處理
    
    def demo(a,b,*args):print(a,b,args)demo(12,33,90)
    demo(1,2,3,4,5)
    a=(1,2,3)
    demo(*a)#使用**接收任意數量的關鍵字參數
    #注意:**的不定長參數被當做字典處理
    def demo1(a,**args):print(a,args)
    demo1(1,name='kk',age=3)
    b = {'a':20,'b':12,'c':32}
    demo(**b)

    ?

2.3 參數組合

  • 形參順序須按照以下順序:位置參數、默認值參數、*args,**kwargs

3 函數調用

  • 函數調用必須在函數定義之后

  • 函數調用必須能夠正確傳遞實參

    
    def demo(a,b,c=0,*arg1,**arg2):print(a,b,c,arg1,arg2)
    demo(1,3,k=4)
    demo(1,2,3,4,5)
    demo(1,b=3,c=3,d=5)
    demo(*(1,2,3),**{'name':12}) #任何函數都可通過這種形式傳遞參數

    ?

4 返回值

可以通過return語句返回計算結果。

  • return的作用一個是終止函數的執行,所有執行了return后,其后的語句不會被執行

  • 如果沒有return語句,則默認返回的是None

  • return還可以返回給調用者數值

  • return可以返回一個值,如果要返回多個值,那么返回的是一個元組

    ?

    語法:

    def demo2():return 1
    def demo3():return 1,2,3
    print(demo2())
    print(demo3()) #(1,2,3)

    ?

5 文檔字符串

函數文檔字符串documentation string (docstring)是在函數開頭,用來解釋其接口的字符串。簡而言之:幫助文檔

  • 包含函數的基礎信息

  • 包含函數的功能簡介

  • 包含每個形參的類型,使用等信息

文檔字符串書寫規則:

  • 必須在函數的首行

  • 使用三引號注解的多行字符串(''' ''') 或(""" """)

  • 函數文檔的第一行一般概述函數的主要功能,第二行空,第三行詳細描述。

    def?test():"""函數名:test功能:測試參數:無返回值:無"""print("函數輸出成功")#使用__doc__屬性查看文檔字符串
    print(test.__doc__)

    ?

6.參數傳遞

python的參數傳遞是簡單的值傳遞,當然這里的值是指變量的引用(地址),不是變量的值。不存在值傳遞和引用傳遞的區分。簡而言之,python的參數傳遞可以稱之為對象引用傳遞,對象可以分為:

  • 不可變對象:int、float、None、complex、bool、tuple、str,range

    • 在函數內部不可能修改函數外部的變量

  • 可變對象: dict、list

    • 可以在函數內部修改

7 空函數

借助于pass語句實現,函數體不完成任何功能,只有一個pass語句

def test():pass

8 匿名函數

不再使用def 函數名()這種形式定義函數,而是使用lambda來創建匿名函數

特點:

  • lambda只是一個表達式,函數體比def簡單的多

  • lambda的函數體不再是代碼塊

  • lambda只有一行,增加運行效率

語法:lambda [arg1,arg2....argn]:函數體
add = lambda a,b:a + b
print(add(3,5))

9.函數類型

函數也是一種類型,我們自定義的函數就是函數對象,函數名保存了函數對象的引用(地址)

def test():print('我是測試函數')print(test) #函數名是變量,指向了函數對象
pf = test ? #pf變量也指向了函數對象,所以也可以通過pf調用test函數
pf()

10.傳入函數

一個函數就可以接收另一個函數作為參數,這種函數就稱之為高階函數,也可以稱之為傳入函數。可以實現通用編程,排序等復雜功能

?

總結

本節給大家介紹了 Python ?函數的使用,對于初步了解的同學可能不大友好,還需要自己把不明白的地方多看多查資料深入了解。

參考:

https://www.runoob.com/python/python-functions.html
https://www.liaoxuefeng.com/wiki/1016959663602400/1017105145133280

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/455893.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/455893.shtml
英文地址,請注明出處:http://en.pswp.cn/news/455893.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【Java基礎】 JQuery的常用操作

jQuery的常用操作一、隱藏顯示對象id為test的元素的display修改成了“none”&#xff0c;即隱藏了id為test的元素&#xff1a;$(#test).css(display,none)或$(#test).style.display"none"我們經常用到的是切換一個元素的隱藏與現實&#xff0c;下面給出代碼&#xff…

store_coding_state (cs_cm)的作用

// 以下是對當前宏塊進行編碼&#xff08;這里的編碼主要目的是為了計算按當前組合方式編碼// 生成碼流的大小&#xff0c;因此編碼前要保存當前編碼狀態&#xff0c;編碼完成后必須恢復現場&#xff09;// S T O R E C O D I N G S T A T E //-----------------------…

第十五屆北京師范大學程序設計競賽決賽(網絡同步賽) B lca水 D 思維,找規律...

第十五屆北京師范大學程序設計競賽決賽&#xff08;網絡同步賽&#xff09; B. Borrow Classroom 題意&#xff1a;一棵樹&#xff0c;點 1為根&#xff0c;一個人從點 b到 點 c再到點 1&#xff0c;第二個人從點 a出發&#xff0c;問第二個人能否截住第一個人。 tags&#xff…

macbook所有型號大全_蘋果筆記本型號大全

很多朋友在選購蘋果筆記本也就是MacBook的時候都會考慮究竟買哪一個系列會比較好&#xff0c;下面就為大家介紹一下蘋果筆記本型號大全都有什么&#xff0c;希望以下的介紹能夠幫助到您。蘋果筆記本型號大全目前蘋果筆記本有以下的幾個主要的型號&#xff1a;1、MacBook Air是目…

【Python基礎入門系列】第06天:Python 模塊和包

在計算機程序的開發過程中&#xff0c;隨著程序代碼越寫越多&#xff0c;在一個文件里代碼就會越來越長&#xff0c;越來越不容易維護。 為了編寫可維護的代碼&#xff0c;我們把很多函數分組&#xff0c;分別放到不同的文件里&#xff0c;這樣&#xff0c;每個文件包含的代碼…

Css中的選擇器

Css選擇器 CSS代碼用來修飾 HTML元素. 要用CSS代碼設置樣式, 首先要選中HTML元素. 用來選中 元素的 代碼稱為 選擇器, 或 選擇符. html元素是指, 標簽與標簽包裹內容的整體. 常用的選擇器有如下幾種&#xff1a; 1、標簽選擇器 標簽選擇器&#xff0c;此種選擇器影響范圍大…

福州聯通與市政府攜手 共筑新型智慧城市

“福州聯通今年將投入專項資金&#xff0c;在福州市區建設NB-IoT網絡&#xff0c;包括2000個載扇部署&#xff0c;建設一張覆蓋完備、性能領先的窄帶物聯網。”據介紹&#xff0c;去年9月&#xff0c;福州聯通與福州市政府正式簽署《共同推進窄帶物聯網&#xff08;NB-IoT&…

流媒體技術的國內外動態

1、大規模流媒體應用中關鍵技術的研究 支持大規模用戶在線使用的流媒體應用是Internet中極富潛力的一項“重磅級用”,但由于Internet缺乏服務質量(QoS)與相應的安全保障,并且網絡和終端系統又存在著較大的異構性,這使得在Internet上構建支持大規模用戶的在線流媒體應用面臨很多…

空間直線與平面的交點

這內容屬于計算幾何&#xff0c;在 3D游戲開發編程基礎 或者在游戲開發中的數學和物理算法 這種資料上也可以找到相關的內容和代碼。或者更廣泛點稱為是計算機圖形學&#xff0c; 接下來我們進入正題&#xff0c;如果直線不與平面平行&#xff0c;將存在交點。如下圖所示&#…

iphone導出視頻 無法連接到設備_拷貝iphone照片,顯示無法連接設備?TRIZ 3秒鐘解決...

手機存儲滿了&#xff0c;想把手機里面的照片和視頻拷貝出來。 又不想交給蘋果cloud的“蘋果稅”。USB手動連上IPHONE&#xff0c;結果每次復制了幾百兆&#xff0c;就會彈出“無法連接設備”&#xff0c;導致拷貝失敗。并且每次重新連接之后&#xff0c;刪掉的照片又出現在手機…

【Python基礎入門系列】第07天:Python 數據結構--序列

python內置序列類型最常見的是列表&#xff0c;元組和字符串。&#xff08;序列是python中最基礎的數據結構&#xff0c;而數據結構是計算機存儲&#xff0c;組織數據的方式。&#xff09; 另外還提供了字典和集合的數據結構&#xff0c;但他們屬于無順序的數據集合體&#xf…

Css顏色和文本字體

Css顏色,文本字體 css顏色表示法 顏色名表示&#xff0c;比如&#xff1a;red 紅色&#xff0c;gold 金色16進制數值表示&#xff0c;比如&#xff1a;#ff0000 表示紅色&#xff0c;這種可以簡寫成 #f00RGB顏色: 紅(R)、綠(G)、藍(B)三個顏色通道的變化 background-color: r…

springBoot(20):使用Spring Session實現集群-redis

一、session集群的解決方案1.1、擴展指定server利用Servlet容器提供的插件功能&#xff0c;自定義HttpSession的創建和管理策略&#xff0c;并通過配置的方式替換掉默認的策略。缺點&#xff1a;耦合Tomcat/Jetty等Servlet容器&#xff0c;不能隨意更換容器。1.2、利用Filter利…

docker desktop ubuntu鏡像_原創 | Docker入門,看了不理解,假一賠命

寫在前面這篇博客適合誰&#xff1f;對于Docker并不了解&#xff0c;只是有一點模糊的感覺&#xff0c;覺得Docker可以當成虛擬機用之類的只是下載了Docker軟件&#xff0c;對于怎么配置&#xff0c;怎么玩&#xff0c;第一步干什么&#xff0c;完全一無所知其二&#xff0c;我…

Windows - Windows下安裝MSI程序遇到2503和2502錯誤

三個步驟可以解決這個問題&#xff1a; 1&#xff09; 以管理員身份開啟命令行模式并鍵入msiexec /package <msi文件路徑> 2&#xff09; 修改組策略 計算機配置 ->> 管理模板 ->> Windows組件 ->> Windows Installer ->> 始終以提升的權限進行安…

如何確定h.264的碼率

A:如何確定h.264的碼率&#xff1f; 碼率 編碼產生的總比特數 * 幀頻 / 編碼總幀數碼率控制機制就是使編碼器編碼產生的碼流盡量符合你設定的碼率。從上面的公式可以看出&#xff0c;當編碼幀數和幀頻確定后&#xff0c;碼率控制要做的就是控制編碼產生的比特數。 A:我現在想…

【Python基礎入門系列】第08天:Python List

Python內置的一種數據類型是列表&#xff1a;list。list是一種有序的集合&#xff0c;可以隨時添加和刪除其中的元素。 LIST 列表 比如&#xff0c;列出班里所有同學的名字&#xff0c;就可以用一個list表示&#xff1a; >>> classmates [liuwang, xuezhang, al…

金屬磁記憶傳感器封裝

金屬磁記憶傳感器封裝 摘 要 通過分析壓力傳感器和FBG傳感器的結構,針對金屬磁記憶傳感器自身特點,結合井下作業要求,提出了金屬磁記憶傳感器的封裝設計原則;根據該原則,設計出了一種金屬磁記憶傳感器的封裝結構,并對其進行了有限元模擬分析;對封裝后的金屬磁記憶傳感器實物進…

【Python基礎入門系列】第09天:Python tuple

Python 中的數據結構是通過某種方式組織在一起的數據元素的集合&#xff0c;這些數據元素可以是數字、字符、甚至可以是其他數據結構 在 Python 中&#xff0c;最基本的數據結構是序列&#xff08;在前面文章我們也說過序列&#xff09;&#xff0c;序列中的每個元素都有一個序…

黑客攻防:關于工業網絡安全的那些事

1、概述 隨著工業信息化的快速發展以及工業4.0時代的到來&#xff0c;工業化與信息化的融合趨勢越來越明顯&#xff0c;工業控制系統也在利用最新的計算機網絡技術來提高系統間的集成、互聯以及信息化管理水平。未來為了提高生產效率和效益&#xff0c;工控網絡會越來越開放&am…