Python中的函數參數有冒號 聲明後有-> 箭頭

来源:https://www.cnblogs.com/python960410445/archive/2019/11/29/11960460.html
-Advertisement-
Play Games

在python3.7 環境下 函數聲明時能在參數後加冒號,如圖: 可能有疑問,python不是動態類型語言 ,難不成還能指定參數類型? 來看一下列印結果: 但同時也確實能傳其他類型的值 如:f("test",123) 那結果如何呢? 如下: 當然會報錯了啊,返回值是一個字元串,int型不能參與字元串 ...


在python3.7 環境下 函數聲明時能在參數後加冒號,如圖:

 def f(ham: str, eggs: str = 'eggs') -> str :
     print("Annotations:", f.__annotations__)
     print("Arguments:", ham, eggs)
     return ham + ' and ' + eggs
 
 print(f("test","abc"))

可能有疑問,python不是動態類型語言 ,難不成還能指定參數類型?

來看一下列印結果:
在這裡插入圖片描述
但同時也確實能傳其他類型的值 如:f("test",123)

那結果如何呢? 如下:
在這裡插入圖片描述
當然會報錯了啊,返回值是一個字元串,int型不能參與字元串拼接,那參數後寫一個:str 和 ->str是什麼意思呢?

PS:如有需要Python學習資料的小伙伴可以加點擊下方鏈接自行獲取
note.youdao.com/noteshare?id=2dce86d0c2588ae7c0a88bee34324d76

在官方文檔指明.__annotations__是函數的參數註釋和返回值註釋:

所以列印出Annotations: {'ham': <class 'str'>, 'eggs': <class 'str'>, 'return': <class 'str'>}

其實並沒有指定類型 只是寫函數的人提醒用函數的人最好傳什麼類型的參數,因為最後需要兩個參數進行字元串拼接;

當然,也可以直接寫字元串提醒:

def f(ham: "傳一個字元串", eggs: str = 'eggs') -> str :
    print("Annotations:", f.__annotations__)
    print("Arguments:", ham, eggs)
    return ham + ' and ' + eggs

print(f("test",123))

而聲明函數後那個箭頭:"->" 是返回值的註釋,-> str 意思即是提醒函數使用者返回值會是一個str型。


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

-Advertisement-
Play Games
更多相關文章
  • 整合思路 將工程的三層結構中的JavaBean分別使用Spring容器(通過XML方式)進行管理。 整合持久層mapper,包括數據源、會話工程及mapper代理對象的整合; 整合業務層Service,包括事務及service的bean的配置; 整合表現層Controller,直接使用springm ...
  • AQS是併發編程中非常重要的概念,它是juc包下的許多併發工具類,如CountdownLatch,CyclicBarrier,Semaphore 和鎖, 如ReentrantLock, ReaderWriterLock的實現基礎,提供了一個基於int狀態碼和隊列來實現的併發框架。本文將對AQS框架的 ...
  • ``` # 迴文單詞是從左到右和從右到左讀相同的單詞。 # 例如:“detartrated”和“evitative”是迴文 str_in = input('Input:') # 方法一 count = 0 for i in range(len(str_in)): if str_in[i] == st... ...
  • 一、效果圖 二、具體效果實現代碼 1 public static void main(String[] args) { 2 int[][] array = new int[10][10]; 3 int num = 1; 4 for(int i=0;i<array.length;i++){ 5 6 i ...
  • 任何一個java對象都天然繼承於Object類,線上程間實現通信的往往會應用到Object的幾個方法,比如wait(),wait(long timeout),wait(long timeout, int nanos)與notify(),notifyAll()幾個方法實現等待/通知機制,同樣的, 在j... ...
  • 2.1、anaconda的安裝 ​ 1 、安裝可執行程式 ​ 2 、配置環境變數 ​ 根據環境變數的 去查找可執行程式文件,如果查找到就執行,如果查找不到就報錯。 ​ 3 、python的多版本相容問題 ​ 修改可執行程式的文件名,再配置環境變數 ​ 4 、hash案例 2.2、requests模塊 ...
  • 生活中,當你閑暇之餘瀏覽資訊的時候,當你搜索資料但繁雜信息夾雜時候,你就會想,如何更為準確的定位需求信息。今天就為你帶來: 分頁查詢 需求分析:在列表頁面中,顯示指定條數的數據,通過翻頁按鈕完成首頁/上一頁/下一頁/尾頁的查詢 數據分析: 通過觀察,頁面上需要顯示下麵的幾個數據:當前頁:curren ...
  • 安裝 SQLAlchemy 報錯 安裝命令 報錯截圖 編碼錯誤,這裡我們需要改下源碼 解決方案 重新安裝,安裝成功 參數文章: ...
一周排行
    -Advertisement-
    Play Games
  • 前言 在我們開發過程中基本上不可或缺的用到一些敏感機密數據,比如SQL伺服器的連接串或者是OAuth2的Secret等,這些敏感數據在代碼中是不太安全的,我們不應該在源代碼中存儲密碼和其他的敏感數據,一種推薦的方式是通過Asp.Net Core的機密管理器。 機密管理器 在 ASP.NET Core ...
  • 新改進提供的Taurus Rpc 功能,可以簡化微服務間的調用,同時可以不用再手動輸出模塊名稱,或調用路徑,包括負載均衡,這一切,由框架實現並提供了。新的Taurus Rpc 功能,將使得服務間的調用,更加輕鬆、簡約、高效。 ...
  • 順序棧的介面程式 目錄順序棧的介面程式頭文件創建順序棧入棧出棧利用棧將10進位轉16進位數驗證 頭文件 #include <stdio.h> #include <stdbool.h> #include <stdlib.h> 創建順序棧 // 指的是順序棧中的元素的數據類型,用戶可以根據需要進行修改 ...
  • 前言 整理這個官方翻譯的系列,原因是網上大部分的 tomcat 版本比較舊,此版本為 v11 最新的版本。 開源項目 從零手寫實現 tomcat minicat 別稱【嗅虎】心有猛虎,輕嗅薔薇。 系列文章 web server apache tomcat11-01-官方文檔入門介紹 web serv ...
  • C總結與剖析:關鍵字篇 -- <<C語言深度解剖>> 目錄C總結與剖析:關鍵字篇 -- <<C語言深度解剖>>程式的本質:二進位文件變數1.變數:記憶體上的某個位置開闢的空間2.變數的初始化3.為什麼要有變數4.局部變數與全局變數5.變數的大小由類型決定6.任何一個變數,記憶體賦值都是從低地址開始往高地 ...
  • 如果讓你來做一個有狀態流式應用的故障恢復,你會如何來做呢? 單機和多機會遇到什麼不同的問題? Flink Checkpoint 是做什麼用的?原理是什麼? ...
  • C++ 多級繼承 多級繼承是一種面向對象編程(OOP)特性,允許一個類從多個基類繼承屬性和方法。它使代碼更易於組織和維護,並促進代碼重用。 多級繼承的語法 在 C++ 中,使用 : 符號來指定繼承關係。多級繼承的語法如下: class DerivedClass : public BaseClass1 ...
  • 前言 什麼是SpringCloud? Spring Cloud 是一系列框架的有序集合,它利用 Spring Boot 的開發便利性簡化了分散式系統的開發,比如服務註冊、服務發現、網關、路由、鏈路追蹤等。Spring Cloud 並不是重覆造輪子,而是將市面上開發得比較好的模塊集成進去,進行封裝,從 ...
  • class_template 類模板和函數模板的定義和使用類似,我們已經進行了介紹。有時,有兩個或多個類,其功能是相同的,僅僅是數據類型不同。類模板用於實現類所需數據的類型參數化 template<class NameType, class AgeType> class Person { publi ...
  • 目錄system v IPC簡介共用記憶體需要用到的函數介面shmget函數--獲取對象IDshmat函數--獲得映射空間shmctl函數--釋放資源共用記憶體實現思路註意 system v IPC簡介 消息隊列、共用記憶體和信號量統稱為system v IPC(進程間通信機制),V是羅馬數字5,是UNI ...