1.python中函數概述
概念
模塊化編程的思想
有組織,可共享(重復使用,實現特定的功能的代碼塊)
提高程序的可維護性,提高開發效率,提高代碼的重用性
定義一個函數
1.語法:def 函數名稱(形參列表):函數體/代碼塊return 返回值
2.定義參數介紹
def :關鍵字 用于函數的定義,函數的構建,表示當前正在定義一個函數
函數名稱: 函數的名字,方便調用函數
():定義函數,向3函數中傳遞所有參數 需要在此處定義
函數體:以 冒號開頭,縮進表示區域,多行代碼組成
return: 表示函數的結束,返回一個結果給調用方,可以省略不寫,返回一個None
3.函數名稱的命名規則遵循標識符的命名規則不能使用系統內置的函數名稱,避免函數的沖突和覆蓋
函數的調用
自定義變量 = 函數名稱(實參列表)
函數需要調用才執行
調用的次數沒有限制
函數的類型
系統內置的函數u()print()
自定義函數()
2.函數氵參數
參數的類型
形參: 定義函數時,在()中定義的形式參數,在函數調用時才分配空間,函數調用完畢后回收空間形參是有一定的生命周期的
實參: 函數被調用時,在()中填入的參數,實際數據
2.形參
類型1:普通參數,以正確的順序和數量聲明的參數
類型2:關鍵字參數,函數調用時使用關鍵字參數來確定傳入的數據,允許函數嗲用是參數順序和申明時不一致
類型3:默認參數 在調用時,實參可以不傳遞,當前默認參數需要在普通參數后面定義
命名關鍵字參數
這個*就是用來分隔關鍵字參數和普通參數的
*本身不是一個參數
參數的順序
普通參數 默認參數 收集參數在實參前面加上*,會將容器類參數,拆分出來進行傳遞
4.返回值
有返回值的函數:使用 return 返回結果
沒有返回值的函數執行過程的函數,不需要接受最終的 處理結果+
return 關鍵字返回多個值 也OK
python中函數參數和返回值
返
python中函數文檔
help()查看函數文檔
__doc__ 查看函數文檔
自定義函數文檔在函數的代碼塊的開頭使用多行注釋 描述函數的說明有一種函數叫做匿名函數,匿名函數就是沒有名字唄lambda表達式->創建匿名函數語法:lambda 參數列表 : 函數體(方法體)案例:add = lambda a,b : a+bprint(add(1,2)
python中函數參數的傳遞
python中變量的生命周期
可更改對象和不可更改對象可更改對象:在內存中存儲的數據是允許更改的list dict不可更改對象: 在內存中復制一個空間 相當于創建了一個父本一樣Number String tuple set參數的傳遞傳遞的參數是不可更改對象: 值傳遞傳遞的參數是可更改對象: 地址傳遞
五 變量的生命周期和作用域
變量的作用域
定義在函數內的變量,具有局部作用域
定義在函數外的變量,函數外,具有全局的作用域
作用域
全局變量:在函數外部聲明的變量,具有全局作用域在函數外部和函數內部正常訪問和操作
局部變量:在函數內部聲明的變量,具有局部的作用域在函數內部進行訪問查看當前可以使用的局部變量locals() 返回值 字典類型的當前函數的可以使用的局部變量 globals() 查看當前位置的所有的全局變量
變量作用域的轉換
將局部變量轉換為全局變量global 變量名使用global 提升了的變量才是嚴格意義上的變量,后續可以對其進行各種操作而直接在函數外聲明的全局變量,只可以才局部進行訪問,無法進行修改等而其他 操作global 對于當前位置來說,知識當前提升了 其他函數也是相當于普通的外部變量,但是無法修改其變量值num1 = 1def f1():函數內部可以訪問,num1,不能修改num1在當前位置提升變量的作用域 def f2():num2 = 2,局部變量,在外部訪問num2,在當前位置 用global修飾就可以在外部訪問num2了在當前位置,可以修改,無法修改
回顧
重點:定義格式調用實際參數 *函數文檔這個可有用的函數參數各種 類型的參數 的傳遞函數返回值多個值的情況變量的作用域global變量的聲明周期(可變對象和不可變對象)參數的值傳遞和地址傳遞能不能改的問題
作業
1. 打印1-100之間所有能被7整除但是不能被5整除的所有數2. 簡易計算器: 實現 加 減 乘 除編寫計算器函數 (調用這個計算器函數) 1. 從控制臺打印如下圖形123456234567345612456123561234612345