函數的基礎

#函數的返回值
#返回值的3種狀況
# 沒有返回值 —— 返回None
# 不寫return
# 只寫return:結束一個函數的繼續
# return None —— 不經常使用
# 返回1個值
# 能夠返回任何數據類型
# 只要返回就能夠接收到
# 若是在一個程序中有多個return,那麼只執行第一個
# 返回多個值
# 用多個變量接收:有多少返回值就用多少變量接收
# 用一個變量接收: 獲得的是一個元組python

函數的參數
參數
#沒有參數
#定義函數和調用函數時括號裏都不寫內容
#有一個參數
#傳什麼就是什麼
#有多個參數
#位置參數
#站在實參的角度上:
#按照位置傳參
#按照關鍵字傳參
#混着用能夠:可是 必須先按照位置傳參,再按照關鍵字傳參數
# 不能給同一個變量傳多個值函數

#站在形參的角度上
#位置參數:必須傳,且有幾個參數就傳幾個值
#默認參數: 能夠不傳,若是不傳就是用默認的參數,若是傳了就用傳的對象

#只有調用函數的時候
#按照位置傳 : 直接寫參數的值
#按照關鍵字: 關鍵字 = 值內存

#定義函數的時候:
#位置參數 : 直接定義參數
#默認參數,關鍵字參數 :參數名 = '默認的值'
#動態參數 : 能夠接受任意多個參數
#參數名以前加*,習慣參數名args,
#參數名以前加**,習慣參數名kwargs
#順序:位置參數,*args,默認參數,**kwargs
# 動態參數有兩種:能夠接受任意個參數
#*args : 接收的是按照位置傳參的值,組織成一個元組
#**kwargs: 接受的是按照關鍵字傳參的值,組織成一個字典
#args必須在kwargs以前
#動態參數的另外一種傳參方式
def func(*args):#站在形參的角度上,給變量加上*,就是組合全部傳來的值。
print(args)作用域

func(1,2,3,4,5)
l = [1,2,3,4,5]
func(*l) #站在實參的角度上,給一個序列加上*,就是將這個序列按照順序打散容器

參數
#形參 定義函數的時候
# 位置參數 :必須傳
# *args :動態參數 能夠接收任意多個按位置傳入的參數
# 默認參數 : 能夠不傳 —— 陷阱
# **kwargs : 動態參數 能夠接受任意多個按關鍵字傳入的參數
#實參 調用函數的時候
# 按照位置傳參數
# 按照關鍵字傳參數
# 能夠混用 位置參數必須在關鍵字傳參以前
# 不能對一個參數重複賦值

內置函數range(start, stop[, step])
start: 計數從 start 開始。默認是從 0 開始。例如range(5)等價於range(0, 5);
stop: 計數到 stop 結束,但不包括 stop。例如:range(0, 5) 是[0, 1, 2, 3, 4]沒有5
step:步長,默認爲1。例如:range(0, 5) 等價於 range(0, 5, 1) 變量

#命名空間 有三種
#內置命名空間 —— python解釋器
# 就是python解釋器一啓動就能夠使用的名字存儲在內置命名空間中
# 內置的名字在啓動解釋器的時候被加載進內存裏
#全局命名空間 —— 咱們寫的代碼但不是函數中的代碼
# 是在程序從上到下被執行的過程當中依次加載進內存的
# 放置了咱們設置的全部變量名和函數名
#局部命名空間 —— 函數
# 就是函數內部定義的名字
# 當調用函數的時候 纔會產生這個名稱空間 隨着函數執行的結束 這個命名空間就又消失了命名空間

#在局部:能夠使用全局、內置命名空間中的名字
#在全局:能夠使用內置命名空間中的名字,可是不能用局部中使用
#在內置:不能使用局部和全局的名字的

# 三元運算符
# 接收結果的變量 = 條件爲真的結果 if 條件 else 條件爲假的結果
# 接收結果的變量 = 「真結果」 if 條件 else 「假結果」
#
# 命名空間 和 做用域
# 三種:內置 全局 局部
# 做用域:全局 局部 globals() locals()
# global 在局部聲明一個全局變量
# nonlocal 在局部聲明最近的上一層局部中的變量
# 做用域鏈 : 小範圍用變量的時候,先從本身的名字空間找,
# 找不到就一層一層向外層找,知道找到爲止。
# 找不到就報錯。
# 函數的嵌套調用和嵌套定義
# 定義在函數內部的函數不能被外界直接調用
# 內部函數能夠使用外部的變量
# 函數名的本質
# 就是一串內存地址
# 能夠賦值、能夠做爲容器類型的元素、函數的參數和返回值 —— 第一類對象數據類型

相關文章
相關標籤/搜索