這篇文章帶給大家的內容是關於python中函數部分內容的解析,有一定的參考價值,有需要的朋友可以參考一下,希望對你有幫助。
在python中,變數沒有類型,一個物件的引用,類型屬於物件
變數的本質上是一個佔位符!通常用小寫字母命名變數。
一:語法
def 函數名稱(參數清單):
函數體
(函數名稱命名一般以小寫字母單底線數字等組合)
#二:常用函數的型別
(1)帶參數的函數:參數須以正確的順序傳入函數
(2)預設參數函數:未傳遞參數,則會使用預設參數,預設參數不在最後,會報錯!
(3)關鍵字參數:函數呼叫使用關鍵字參數來決定傳入的參數值
(4)不定長參數:函數能處理比當初宣告時更多的參數,
①*args中所有的變數都會被包裝成一個元組存放所有未命名的變數
②**args中所有變數都會被包裝成一個字典
( 5)宣告函數時,參數中星號* 可以單獨出現,*之後的參數必須用關鍵字傳入
(6)匿名函數,使用lambda函數建立匿名函數
①lambda 只是一個表達式,函數體比def 簡單很多
②lambda的主體是一個表達式,而不是一個代碼塊
③函數擁有自己的命名空間,並且不能訪問自己參數列表之外或全域命名空間裡的參數。
三:python 函數的參數傳遞:
不可變型別:
類似 c 的值傳遞,如 int、string、tuple。
如fun(a),傳遞的只是a的值,沒有影響a物件本身。
例如在fun(a)內部修改a 的值,只是修改另一個複製的對象,不會影響a 本身.
可變類型:
類似c 的引用傳遞,如列表,字典。如fun(la),則是將la 真正的傳過去,修改後fun外部的la也會受影響
python中一切都是對象,嚴格意義我們不能說值傳遞還是引用傳遞,我們應該說傳不可變物件和傳輸可變物件
四:變數作用域
python 中的作用域一般有四種:
L (Local) 局部作用域
E (Enclosing) 閉包函數外的函數中
G (Global) 全域作用域
B (Built-in) 內建作用域
找出規則是L-> ;E->G->B
Python 中只有模組(module),類別(class)以及函數(def、lambda)才會引入新的作用域,其它的程式碼區塊(如if/ elif/else/、try/except、for/while等)是不會引入新的作用域的,也就是說這些語句內定義的變量,外部也可以存取。
五:全域變數與局部變數
定義在函數內部的變數擁有一個局部作用域,定義在函數外的擁有全域作用域。
當內部作用域想要修改外部作用域的變數時,就要用到global和nonlocal關鍵字了。
(1)global用來修改全域變數的值
(2)nonlocal要修改嵌套作用域(enclosing 作用域,外層非全域作用域)中的變數則需要nonlocal 關鍵字了
六:函數呼叫中的技巧(重要)
函數名稱.__doc__取得函數的幫助文件
函數名稱可以作為另一個函數的形參
多個傳回值以元組的方式傳回
內部函數,不修改全域變數可以存取全域變數! !
內部函數,修改同名全域變量,則python會認為它是局部變數! !
七:關於命名
(1)檔名:全小寫,可以使用底線
(2)函數名稱:小寫,小駝峰原則
(3)變數名稱:全部小寫,底線連接
詳細的命名規則參考PEP8
八:幾個特殊的函數
map
reduce
filter
# --------------------------------------------------------------------------# # 函数的语法及调用 # --------------------------------------------------------------------------# def func(func_name, number): # 函数的定义 """打印输入的任何字符串""" print(func_name, number) return 'Done' func('func_1', 'faith') # 函数的调用 # --------------------------------------------------------------------------# # 不定长参数函数,封装成元组 # --------------------------------------------------------------------------# def func_1(func_name, *number): """ 打印输入的任何字符串 """ print(type(number)) print(func_name, number) return 'Done' func_1('func_1', 1, 2, 2, 3) def func_2(func_name, number): # print(type(number)) print(func_name, number) return 'Done' func_2('func_2', (1, 2, 2, 3)) def func_3(func_name, *number): print(func_name) print(number[3]) # 根据元组index中一部分变量 print(number[4]) return 'Done' func_3('func_3', 1, 2, 2, 3, 'aaa', 'abc') # get out question: the number of index isn't known in most case! # --------------------------------------------------------------------------# # 不定长参数函数,封装成字典 # --------------------------------------------------------------------------# def func_4(func_name, **number): # 可变参数必须在函数参数的最后 # print(type(number)) print(func_name, number) return 'Done' func_4('func_4', name='faith') # --------------------------------------------------------------------------# # 命名关键字函数 # --------------------------------------------------------------------------# def func_5(a, x, c, *, china, uk): print('func_5:', china, uk) print(a, x, c) func_5(1, 2, 3, china='bJ', uk='rs') # 调用时必须加上关键字 # func_5(1, 2, 3, 'bJ', 'rs') # --------------------------------------------------------------------------# # 函数应用之-递归 # --------------------------------------------------------------------------# def my_sum(i): if i < 0: raise ValueError # 抛出错误 elif i <= 1: return i else: return i + my_sum(i - 1) print(my_sum(1.4)) # --------------------------------------------------------------------------# # 传递不可变对象实例 # --------------------------------------------------------------------------# def change_int(a): a = 10 b = 2 change_int(b) print(b) # 结果是2 # --------------------------------------------------------------------------# # 传递可变对象实例 # --------------------------------------------------------------------------# def change_me(mylist): mylist.append([1, 2, 3, 4]) print("函数内取值: ", mylist) return myList = [10, 20, 30] change_me(myList) print("函数外取值: ", myList) # --------------------------------------------------------------------------# # 函数内修改全局变量的值 # --------------------------------------------------------------------------# money = 200 # 模块里面的全局变量 def add_money(): global money money = money + 1 return money print("修改后的值money = ", add_money()) # --------------------------------------------------------------------------# # 匿名函数 # --------------------------------------------------------------------------# sum_1 = lambda arg1, arg2: arg1 + arg2 # 调用sum函数 print("相加后的值为 : ", sum_1(10, 20)) print("相加后的值为 : ", sum_1(20, 20)) # 单独编译一个文件时候输出结果 if __name__ == "__main__": pass
以上是python中函數部分內容的解析的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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分詞工具來處理文�...

如何使用正則表達式匹配到第一個閉合標籤就停止?在處理HTML或其他標記語言時,常常需要使用正則表達式來�...


熱AI工具

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

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

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

EditPlus 中文破解版
體積小,語法高亮,不支援程式碼提示功能

SublimeText3 Linux新版
SublimeText3 Linux最新版

WebStorm Mac版
好用的JavaScript開發工具

禪工作室 13.0.1
強大的PHP整合開發環境

Atom編輯器mac版下載
最受歡迎的的開源編輯器