函數定義,返回值,傳參,命名空間,閉包
阿新 • • 發佈:2018-06-25
pan 定義變量 結果 動態 lex 動態傳參 代碼 name 作用
函數的返回值: return是返回給函數的調用者
函數外面的代碼想要獲取函數的執行結果,就可以在函數裏,用return語句把結果返回.
註意:在函數的執行過程中主要遇到return語句,就會停止執行並返回結果,
so可以理解為return語句代表著函數的結束
如果未在函數中指定return,那這個函數的返回值為none
函數的返回值,可以返回一個函數名(可以將嵌套函數裏的執行結果return給函數體外,進行執行)
return永遠且只能返回一個值,,如果返回多各值呢?
def func1(name,age):
return [name,age] #這裏加上[]就可以返回[‘alex‘, 18],元祖,字典同理
start = func1(‘alex‘,18)
print(start)
返回:[‘alex‘, 18]
關於函數的返回值
def wraaper():
def inner():
print(666)
return inner
wraaper()() #將inner這個函數的值返回給waaper然後給打印出來
age = 19
def func1():
def func2():
print(age)
age = 73
func2()
func1()
返回:73
函數什麽時候執行?函數調用的時候執行,
函數嵌套:代碼從上至下執行,調用函數.函數裏面從上至下執行.
print(111)
def func1():
print(333)
def func2():
print(444)
def func3():
print(555)
func2()
func1()
print(222)
返回:111,333,222 嵌套函數哦執行順序
函數內部可以再次被定義,執行需要被調用才執行
age = 19
def func1():
age = 73
print(age)
def func2():
print(age)
func2()
func1()
返回:73,73
說明,在執行finc2的時候改函數裏面沒有定義age的變量,所以他就開始一級一級的往上去找.
age = 19
def func1():
print(age)
def func2():
print(age)
func2()
func1()
返回:19,19
加深印象說明函數嵌套情況下,他是一級一級往外面去找的,你看,函數裏面(局部作用域)沒有了,就在函數外面(全局作用域)去找.
函數傳參:
- 實參角度:
- 形參角度
- *args 接收的是實參對應的,所有位置參數(剩余,無意義),並將其,放在元祖中,
- **kwargs 他講所有的關鍵字參數(無意義)放到一個字典中
函數定義,返回值,傳參,命名空間,閉包