python基礎學習11----函數

来源:https://www.cnblogs.com/sfencs-hcy/archive/2018/09/08/9610954.html
-Advertisement-
Play Games

一.函數的定義 return語句不寫或後邊不加任何對象即為return None 二.函數的參數 無參數 一個參數 多個參數 必須參數 必須按照正確順序和數量傳入參數 關鍵字參數 預設參數 預設參數必須放在必須參數的後面 不定長參數 參數帶一個星號* 參數帶兩個星號** 定義函數的參數時請以必須參數 ...


一.函數的定義

def 函數名(參數列表):
    函數體
    return語句

return語句不寫或後邊不加任何對象即為return None

二.函數的參數

無參數

def func1():
    print("沒有參數")

一個參數

def func1(a):
   return a

多個參數

def func1(a,b,c):
   return a+b+c

必須參數

  必須按照正確順序和數量傳入參數

def func1(name,age,job):
   print("name:%s age:%d job:%s"%(name,age,job))
func1("sfencs",20,"IT")

關鍵字參數

def func1(name,age,job):
   print("name:%s age:%d job:%s"%(name,age,job))
func1(age=20,name="sfencs",job="IT")

預設參數

預設參數必須放在必須參數的後面

def func1(name,age,job="IT"):
   print("name:%s age:%d job:%s"%(name,age,job))
func1("sfencs",20)
func1("Alan",25,"teacher")

不定長參數

參數帶一個星號*

def func1(*args):
    print(args)
func1(1,2,3,"sfencs")#(1, 2, 3, 'sfencs')以元組形式保存

參數帶兩個星號**

def func1(**args):
    print(args)
func1(age=20,name="sfencs",job="IT")#{'age': 20, 'name': 'sfencs', 'job': 'IT'}以字典形式保存

定義函數的參數時請以必須參數、預設參數、帶一個星號的不定長參數、帶兩個星號的不定長參數的順序定義形參

三.參數傳遞

不可變類型

def func1(a):
    a=5
b=10
func1(b)
print(b)#輸出為10

可變類型

def func1(list1):
    list1.append("sfencs")
list2=[1,2,3]
func1(list2)
print(list2)#[1, 2, 3, 'sfencs']list2會改變

四.變數作用域

L (Local) 局部作用域
E (Enclosing) 閉包函數外的函數中
G (Global) 全局作用域
B (Built-in) 內建作用域

按照L-->E-->G-->B的順序查找

內部作用域修改外部作用域變數

global

count=20
def function() :
    global count#不加這句話會報錯
    print (count)#20
    count=5
    print(count)#5
function()
print(count)#5

nonlocal 

修改嵌套作用域

def function1() :
    count=20
    def function2():
        nonlocal count
        count=5
        print(count)#5
    function2()
    print(count)#r此時輸出為5,若不加nonlocal count則輸出為20
function1()

五.遞歸函數

#斐波那契數列為0,1,1,2,3,5,8,13,21,34.......
def fibon(n):
    if n<=2 :
        return n-1
    return fibon(n-1)+fibon(n-2)
print(fibon(7))#輸出數列中第七個數,為8

  

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 1、什麼是RabbitMQ工作隊列 我們在應用程式使用消息系統時,一般情況下生產者往隊列里插入數據時速度是比較快的,但是消費者消費數據往往涉及到一些業務邏輯處理導致速度跟不上生產者生產數據。因此如果一個生產者對應一個消費者的話,很容易導致很多消息堆積在隊列里。這時,就得使用工作隊列了。一個隊列有多個 ...
  • Java當中的類集框架 類集框架 ,那麼什麼是類集框架,集合的種類有哪些,類集框架的基礎結構。 類集框架是一組類和介面的集合,位於 包當中,是用來用戶存儲和管理對象的,在這個類集合框架中,我們主要學習的為三大類, 分別是集合,列表和映射。 集合,列表,映射 Set為集合 ,在集合中的對象是不按照順序 ...
  • 1、什麼是RabbitMQ MQ(Message Queue):消息隊列,是服務端設計的一個可以存儲大量消息的隊列,並提供客戶端操作隊列的方法:生產隊列(向隊列中添加數據)、消費隊列(從隊列中取數據)。RabbitMQ就是基於消息隊列的一個典型應用。RabbitMQ除了普通的生產消費功能,還有一些高 ...
  • 本文首發於我的個人博客: "尾尾部落" 1. Iterator介面 Iterator介面,這是一個用於遍歷集合中元素的介面,主要包含hashNext(),next(),remove()三種方法。它的一個子介面LinkedIterator在它的基礎上又添加了三種方法,分別是add(),previous ...
  • Web框架本質 我們可以這樣理解:所有的Web應用本質上就是一個socket服務端,而用戶的瀏覽器就是一個socket客戶端。 這樣我們就可以自己實現Web框架了。 半成品自定義web框架 可以說Web服務本質上都是在這十幾行代碼基礎上擴展出來的。這段代碼就是它們的祖宗。 用戶的瀏覽器一輸入網址,會 ...
  • 好久沒寫博客了,小伙伴們最近在幹嘛呢? 最近在搞AI開放平臺,就類似騰訊優圖,百度人工智慧平臺~~. 說得是很高大上啦,核心技術的演算法並不是我寫的。我負責搞API介面,寫前端。 前端的Vue和Bootstrap,兩門技術是目前前端比較流利的。最近也在搞Vue,感覺挺吃力的~_~ 正文 pycharn ...
  • 在寫爬蟲的時候總是遇到一些以圖片的形式展示的信息,因此要怎麼解析圖片上的信息呢?在Google上查了一下,需要安裝pytesseract和pillow(我用的python3.7)和Tesseract-OCR 1. 安裝pytesseract pip insatll pytesseract 2. 安裝 ...
  • 以下代碼是單片機程式,51單片機,編譯器為HT-IDE3000, 簡單來說 頭文件中只能申明, 變數在頭文件中申明時,要加上extern 這個關鍵字用來告訴編譯器,變數在其它的文件中定義,為什麼要在頭文件中申明變數? >因為想在其它文件里的代碼中使用這些變數, 如在a.c中使用b.c里定義的變數, ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...