這篇文章帶給大家的內容是關於Python中函數的全面總結(附實例),有一定的參考價值,有需要的朋友可以參考一下,希望對你有所幫助。
一.形參的動態參數: 動態參數,用於參數不確定時用.
格式:
def fun (*args) fun(args)
1. 動態接收位置參數:動態參數必須在位置參數後.
列子1.假如參數不確定時,如下的列子,每人飯量不一樣,吃的種類不一樣,此時用到動態傳參.
def fun(*food): #*表示的是不定参数,可以传递任意个信息,参数名称还是food,且接收到的信息为元祖() print("我要吃",food) fun("米饭") #*表示位置参数的动态传参 结果为我要吃 ('米饭',) fun("一锅米饭","一箱辣条","一桶方便面","可口可乐")#我要吃 ('一锅米饭', '一箱辣条', '一桶方便面', '可口可乐') fun ("一碗米饭","辣条","雪碧") #结果为我要吃 ('一碗米饭', '辣条', '雪碧')
列子2.
def fun (*food,a,b): print("我要吃",food,a,b) fun("苹果","梨子","香蕉") #此时程序会报错,全被food接收了,a和b永远接收不到参数. def fun (a,b,*food): print("我要吃",a,b,food) fun("苹果","梨子","香蕉","橘子") #我要吃 苹果 梨子 ('香蕉', '橘子')
2.有預設值參數時:順序: 位置參數, 動態參數*, 默認值參數
def chi(a, b, *food, c="娃哈哈"): print(a, b, food, c) chi("香蕉", "菠萝") #香蕉 菠萝 () 娃哈哈 默认值生效 chi("香蕉", "菠萝", "葫芦娃") #香蕉 菠萝 ('葫芦娃',) 娃哈哈 默认值生效 chi("香蕉", "菠萝", "葫芦娃", "口罩") # 香蕉 菠萝 ('葫芦娃', '口罩') 娃哈哈 默认值生效 chi("香蕉", "菠萝", "葫芦娃", "口罩",c="苹果")#香蕉 菠萝 ('葫芦娃', '口罩') 苹果
這時候我們發現所有的預設值都生效. 這時候如果不給關鍵字傳參. 那麼你的預設值是永遠都生效的.
3.動態接收關鍵字參數: 最終順序(*): 位置參數> *args > 預設值參數> **kwargs
1.在python中可以動態的位置參數, 但是*這種情況只能接收位置參數,無法接收關鍵字參數. 在python中使⽤**來接收動態關鍵字參數.(形參只有位置參數和預設值參數兩種類型)
*args 位置參數接收到的是元組
##**kwargs 關鍵字的動態傳參, 接收到的是字典例如
def func(**kwargs): # key word arguments print(kwargs) #{'a': 10, 'b': 20, 'jay': '周杰伦', 'jj': '林俊杰'} func(a=10, b=20, jay="周杰伦", jj="林俊杰")2.無敵模式,什麼都可以接
def fun(*args, **kwargs): print(args, kwargs) fun("3","2",a="hello") #('3', '2') {'a': 'hello'}4.* 和** 在實參用法的意思
1
在實參位置* 表示打散,打散的是可迭代物件例如列表和字串等.在形參上表示的是聚合.def func(*args): # 在這裡. 其實相當於把傳進來的參數做了一次聚合, 聚合成一個元組
print(args)
lst = "娃哈哈"
func(*lst) # 在實參位置* 表示打散, 打散的是可迭代物件
2.在實參位置** 打散的是字典
def func(**kwargs): # ** 把接收到的關鍵字參數打包(聚合)成字典
print(kwargs) # 一定是字典
dic = {"張無忌": "明教教主", "謝遜": "金毛獅王", "範瑤": "光明右使"}
func(張無忌=dic['張無忌'] , 謝遜=dic['謝遜'], 範瑤=dic['範瑤'])
func(**dic) # 這裡的** 是把字典打散. 字典的key作為參數的名字, 字典的值作為參數的值傳遞給形參 兩個結果一樣都為{'張無忌': '明教教主', '謝遜': '金毛獅王', '範瑤': '光明右使'}
二.命名空間:
def fun(): a=10 fun() print(a) #a 此时不存在我們給存放名字和值的關係的空間起一個名字叫: 命名空間. 我們的變數在儲存的時候就是儲存在這片空間中的.
1.命名空間分類:
1. 全域命名空間--> 我們直接在py檔中, 函數外宣告的變數都屬於全域命名空間
2.局部命名空間--> 在函數中聲明的變數會放在局部命名空間
3. 內建命名空間--> 存放python解釋器為我們提供的名字, list, tuple, str, int這些都是內建命名空間
2.載入順序:
1. 內建命名空間2. 全域命名空間3. 局部命名空間(函數被執行的時候)
3.取值順序:
1. 局部命名空間2. 全域命名空間3. 內建命名空間
三.作用域就是作用範圍, 依生效範圍來看分為全域作域與局部作用域
全域作用域: 包含內建命名空間和全域命名空間. 在整個檔案的任何位置都可以使用(遵循從上到下逐行執行).
局部作用域: 在函數內部可以使用.
作用域命名空間:
1. 全域作用域: 全域命名空間內建命名空間
2. 局部作用域: 局部命名空間
我們可以透過
globals()函數來查看全域作用域中的內容, 也可以透過locals()來查看局部作用域中的變數和函數資訊. locals()查看的是目前作用域中的內容
def fun(): a=10 print(locals()) #{'a': 10} fun() print(globals()) #显示的没有a的信息 print(locals()) #此时和globals一样,显示的没有a的信息,因为他显示的是当前作用域中的内容.
四.函數的巢狀主要用到兩個函數,
global 和nonlocal
nonlocal: 在局部, 引入離他最近的那一層的變數,不能再第一層函數將全域的變數引進來.
PHP中的字串處理函數(String Functions) 全總結
#
以上是Python中函數的全面總結(附實例)的詳細內容。更多資訊請關注PHP中文網其他相關文章!

Python适合数据科学、Web开发和自动化任务,而C 适用于系统编程、游戏开发和嵌入式系统。Python以简洁和强大的生态系统著称,C 则以高性能和底层控制能力闻名。

2小時內可以學會Python的基本編程概念和技能。 1.學習變量和數據類型,2.掌握控制流(條件語句和循環),3.理解函數的定義和使用,4.通過簡單示例和代碼片段快速上手Python編程。

Python在web開發、數據科學、機器學習、自動化和腳本編寫等領域有廣泛應用。 1)在web開發中,Django和Flask框架簡化了開發過程。 2)數據科學和機器學習領域,NumPy、Pandas、Scikit-learn和TensorFlow庫提供了強大支持。 3)自動化和腳本編寫方面,Python適用於自動化測試和系統管理等任務。

兩小時內可以學到Python的基礎知識。 1.學習變量和數據類型,2.掌握控制結構如if語句和循環,3.了解函數的定義和使用。這些將幫助你開始編寫簡單的Python程序。

如何在10小時內教計算機小白編程基礎?如果你只有10個小時來教計算機小白一些編程知識,你會選擇教些什麼�...

使用FiddlerEverywhere進行中間人讀取時如何避免被檢測到當你使用FiddlerEverywhere...

Python3.6環境下加載Pickle文件報錯:ModuleNotFoundError:Nomodulenamed...

如何解決jieba分詞在景區評論分析中的問題?當我們在進行景區評論分析時,往往會使用jieba分詞工具來處理文�...


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

VSCode Windows 64位元 下載
微軟推出的免費、功能強大的一款IDE編輯器

mPDF
mPDF是一個PHP庫,可以從UTF-8編碼的HTML產生PDF檔案。原作者Ian Back編寫mPDF以從他的網站上「即時」輸出PDF文件,並處理不同的語言。與原始腳本如HTML2FPDF相比,它的速度較慢,並且在使用Unicode字體時產生的檔案較大,但支援CSS樣式等,並進行了大量增強。支援幾乎所有語言,包括RTL(阿拉伯語和希伯來語)和CJK(中日韓)。支援嵌套的區塊級元素(如P、DIV),

MantisBT
Mantis是一個易於部署的基於Web的缺陷追蹤工具,用於幫助產品缺陷追蹤。它需要PHP、MySQL和一個Web伺服器。請查看我們的演示和託管服務。

WebStorm Mac版
好用的JavaScript開發工具

ZendStudio 13.5.1 Mac
強大的PHP整合開發環境