函數進階

来源:https://www.cnblogs.com/a2534786642/archive/2018/12/07/10085487.html
-Advertisement-
Play Games

1. 動態傳參 *, ** : 形參: 聚合 位置參數* -> 元組 關鍵字** -> 字典 實參: 打散 列表, 字元串, 元素 -> * 字典 -> ** 形參順序: 位置, *args, 預設值, **kwargs "無敵傳參" def func(*args, **kwargs): argum ...


 

1. 動態傳參

  *, ** :

  形參: 聚合

  位置參數* -> 元組

def func(*args, a, b, c):
    print(a, b , c, args)
func(1,2,3,4,5,6,7, a=8, b=9,c=10)

 

  關鍵字** -> 字典

def func(**kwargs):
    print(kwargs)
func(a=1, b=2, c=3, haha="呵呵", good="not bad")

 

  實參: 打散

  列表, 字元串, 元素 -> *

  字典 -> **

  形參順序:

  位置, *args, 預設值, **kwargs

  "無敵傳參"

    def func(*args, **kwargs): arguments參數 keyword-arguments關鍵字參數

      pass

複製代碼
def hash(*args, **kwargs):
    pass
def id(*args, **kwargs): 
    pass
def input(*args, **kwargs): 
    pass
複製代碼

 

  這幾個函數都是這種"無敵傳參"的模式

2. 作用域和名稱空間

  名稱空間: 用來存放名字(變數, 函數名, 類名, 引入的模塊名)的

  1. 全局名稱空間: 我們在py文件中自己寫的變數, 函數.....

  2. 內置名稱空間: 我們python解釋器提供好的一些內置內容(print, input....)

  3. 局部名稱空間: 在我們執行函數的時候.會產生一個局部名稱空間. 放的是: 函數內部的內容(變數, 函數,類...)

  名稱空間可能會有無數個, 局部名稱空間而言. 相對是獨立的.一般互不幹擾

作用域:

  1. 全局作用域: 內置+全局

  2. 局部作用域: 局部

  globals() 查看全局作用

  locals() 查看當前作用域

複製代碼
def num():
    a = 20
    b = 30
    print(locals()) # 查看當前作用域中的內容
    print(globals()) # 查看全局作用域中的內容
num()
複製代碼

 

3. 函數的嵌套

  在函數中聲明函數

  在內部函數中使用變數的時候, 查找順序: 先找自己 -> 上一層 -> 上一層..全局 -> 內置

複製代碼
def func1():
    print("1")
    def func2():
        print("2")
        def func3():
            print("3")
        print("4")
        func3()
        print(5)
    print("6")
    func2()
    print("7")
func1()   #  1 6 2 4 3 5 7
複製代碼

 

4. nonlocal和global關鍵字

  global: 在局部引入全局變數

  nonlocal: 在局部...內層函數引入外層離他最近的那個變數.

  只舉一個全局變數的例子

複製代碼
flag = False 

def login():
    global flag  # 全局變數的調用
    uname = input("用戶名:")
    upwd = input("密碼:")
    if uname == "alex" and upwd == "123":
        flag = True
    else:
        flag = False

 


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

-Advertisement-
Play Games
更多相關文章
  • 給定數據利用神經網路演算法模型進行計算,利用FP、BP演算法,求得模型最優值。 神經網路初步學習使用。 ...
  • //接受數據請求public function client($pz){ //參數1是:網路協議, //AF_INET: IPv4 網路協議。TCP 和 UDP 都可使用此協議。一般都用這個,你懂的。 //AF_INET6: IPv6 網路協議。TCP 和 UDP 都可使用此協議。 //AF_UNI ...
  • 1.首先感謝同事 2.之前一直在做angularjs的項目,目前vue火熱,所以自己搭建了一個的vue框架,在此作為記錄 vue+vux-ui這裡就不介紹了,有很多博客都寫的很詳細了。 下麵簡單記錄下axios 和 mock 1.axios <1> 安裝axios <2> 使用axios 1.因為有 ...
  • 適配器模式(Adapter Pattern)又叫做變壓器模式,變壓器把一種電壓變換為另一種電壓。 定義: 將一個類的介面變換成客戶端所期待的另一種介面,從而使原本因介面不匹配而無法一起工作的兩個類能夠在一起工作。 適配器模式就是將一個介面或類轉換成其它的介面或類,適配器相當於一個包裝器,類圖如下所示 ...
  • 用CEF4Delphi取網頁元素時碰到ElementInnerText里含有"&nbsp;" 比如網頁源碼里是"內容&nbsp;"取出來顯示就變成"內容?" 搜索大部分是說把"&nbsp;"替換成其它字元即可 但實際操作怎麼也替換不了,就算變數為AnsiString也不行 最後用了以下方法解決 參考 ...
  • GitHub 上有一個名為《What the f*ck Python!》的項目,這個有趣的項目意在收集 Python 中那些難以理解和反人類直覺的例子以及鮮為人知的功能特性, 並嘗試討論這些現象背後真正的原理! ...
  • 1.單引號和轉義引導 2.拼接字元串 3.格式化字元串 4.常用方法 #去掉空格和特殊符號 #字元串的搜索和替換 #字元串的測試和替換函數 #字元串的分割 #string模塊 ...
  • 對象是否存活 Java的GC基於可達性分析演算法(Python用引用計數法),通過可達性分析來判定對象是否存活。這個演算法的基本思想是通過一系列"GC Roots"的對象作為起始點,從這些節點開始向下搜索,搜索所走過的路徑稱為引用鏈,當一個對象到GC Roots沒有任何引用鏈相連時(圖論稱之為不可達), ...
一周排行
    -Advertisement-
    Play Games
  • 前言 本文介紹一款使用 C# 與 WPF 開發的音頻播放器,其界面簡潔大方,操作體驗流暢。該播放器支持多種音頻格式(如 MP4、WMA、OGG、FLAC 等),並具備標記、實時歌詞顯示等功能。 另外,還支持換膚及多語言(中英文)切換。核心音頻處理採用 FFmpeg 組件,獲得了廣泛認可,目前 Git ...
  • OAuth2.0授權驗證-gitee授權碼模式 本文主要介紹如何筆者自己是如何使用gitee提供的OAuth2.0協議完成授權驗證並登錄到自己的系統,完整模式如圖 1、創建應用 打開gitee個人中心->第三方應用->創建應用 創建應用後在我的應用界面,查看已創建應用的Client ID和Clien ...
  • 解決了這個問題:《winForm下,fastReport.net 從.net framework 升級到.net5遇到的錯誤“Operation is not supported on this platform.”》 本文內容轉載自:https://www.fcnsoft.com/Home/Sho ...
  • 國內文章 WPF 從裸 Win 32 的 WM_Pointer 消息獲取觸摸點繪製筆跡 https://www.cnblogs.com/lindexi/p/18390983 本文將告訴大家如何在 WPF 裡面,接收裸 Win 32 的 WM_Pointer 消息,從消息裡面獲取觸摸點信息,使用觸摸點 ...
  • 前言 給大家推薦一個專為新零售快消行業打造了一套高效的進銷存管理系統。 系統不僅具備強大的庫存管理功能,還集成了高性能的輕量級 POS 解決方案,確保頁面載入速度極快,提供良好的用戶體驗。 項目介紹 Dorisoy.POS 是一款基於 .NET 7 和 Angular 4 開發的新零售快消進銷存管理 ...
  • ABP CLI常用的代碼分享 一、確保環境配置正確 安裝.NET CLI: ABP CLI是基於.NET Core或.NET 5/6/7等更高版本構建的,因此首先需要在你的開發環境中安裝.NET CLI。這可以通過訪問Microsoft官網下載並安裝相應版本的.NET SDK來實現。 安裝ABP ...
  • 問題 問題是這樣的:第三方的webapi,需要先調用登陸介面獲取Cookie,訪問其它介面時攜帶Cookie信息。 但使用HttpClient類調用登陸介面,返回的Headers中沒有找到Cookie信息。 分析 首先,使用Postman測試該登陸介面,正常返回Cookie信息,說明是HttpCli ...
  • 國內文章 關於.NET在中國為什麼工資低的分析 https://www.cnblogs.com/thinkingmore/p/18406244 .NET在中國開發者的薪資偏低,主要因市場需求、技術棧選擇和企業文化等因素所致。歷史上,.NET曾因微軟的閉源策略發展受限,儘管後來推出了跨平臺的.NET ...
  • 在WPF開發應用中,動畫不僅可以引起用戶的註意與興趣,而且還使軟體更加便於使用。前面幾篇文章講解了畫筆(Brush),形狀(Shape),幾何圖形(Geometry),變換(Transform)等相關內容,今天繼續講解動畫相關內容和知識點,僅供學習分享使用,如有不足之處,還請指正。 ...
  • 什麼是委托? 委托可以說是把一個方法代入另一個方法執行,相當於指向函數的指針;事件就相當於保存委托的數組; 1.實例化委托的方式: 方式1:通過new創建實例: public delegate void ShowDelegate(); 或者 public delegate string ShowDe ...