1.函式與過程的區別:
有返回值的是函式,沒有返回值的是過程;
函式(function):有返回值
過程(procedure):簡單特殊,沒有返回值
嚴格來說,python只有函式,沒有過程。沒有返回值的函式,預設有乙個返回值none
2.返回值:
返回值可以是多種型別,也可以返回多個資料,可以用陣列打包返回,也可以用元組一起返回,沒有型別限制
3.函式變數的作用域:
區域性變數(local variable):在函式中定義的引數和變數是區域性變數,在函式外是無法使用的,因為函式呼叫完之後,棧就將函式資料清除,所以外部是無法呼叫的
全域性變數(global variable):作用域是整個模組,整個**都可以訪問,可以在函式中使用,最好不要在函式中修改,如果在函式中修改全域性變數,會在函式中,新建乙個區域性變數,名字和全域性變數一致,但是不會影線全域性變數的值
def decision(price,rate):4.global關鍵字:可以用來修改成全域性變數final_price = price * rate
old_price = 70
return final_price
old_price = float(input("輸入原價:"))
rate = float(input("輸入折扣:"))
print(old_price)
print("折扣**:",decision(old_price,rate)
count = 55.內嵌函式:在函式內部定義另乙個函式;def test1():
count = 10
print(count)
print(count
def fun1():5.閉包():如果在乙個內部函式裡,對外部作用域(但不是在全域性作用域)裡進行引用,則內部函式就被認為是閉包print("fun1()正在被呼叫")
def fun2():
print("fun2()正在被呼叫")
fun2()
fun1()
fun2()
執行結果:
fun1()正在被呼叫
fun2()正在被呼叫
traceback (most recent call last):
file "/users/zoezhang/pycharmprojects/learnpython/learn-內嵌函式.py", line 8, in
fun2()
nameerror: name 'fun2' is not defined
注意:內嵌函式在呼叫的時候,只能在定義函式的內部能呼叫,不能全域性呼叫
注意:閉包是由內嵌函式演變而來,全域性是不能呼叫閉包的
#閉包def funx(x):
def funy(y):
return x*y
return funy
#呼叫方法一
print(funx(1)(2))
#呼叫方法二
i=funx(8)
print(i(5))
在python3之前,內部函式是不能直接更改全域性變數的,會報錯,需要間接使用容器型別來解決,因為容器型別不是儲存在棧裡,所以可以使用,更改方式如下:
#----------------def fun1():
x=[2]
def fun2():
x[0] *= x[0]
return x[0]
return fun2()
print(fun1())
在python3之後,增加乙個關鍵字nonlocal(同型別函式關鍵字glocal)
#----------global適用於函式內部修改全域性變數的值; nonlocal適用於巢狀函式中內部函式修改外部變數的值def fun1():
x=4def fun2():
nonlocal x
x*=x
return x
return fun2()
print(fun1())
如果沒有使用以上關鍵字,對全域性變數或者外部變數進行修改,python會預設將全域性變數隱藏起來
Python(三)之函式
定義乙個函式只要以 def 開頭即可,python內建了很多有用的函式,我們可以直接呼叫。def function name arg1 function body return value函式名 function name 函式名以字母或下劃線開頭,並且區分大小寫 函式引數 arg1 呼叫乙個函式時...
python學習之函式與異常
1 python函式 函式引數的傳遞 defcalc a,b c a b return c 1.位置實參 result calc 10,20 print result 關鍵字實參 result1 calc b 20,a 10 print result1 函式內部的的引數傳遞 如果是不可變物件,在函式...
Python之函式(三)函式的注釋與命名空間
函式的注釋 def func user,password 密碼加密 param user 使用者名稱 str param password 密碼 str return 加密的密碼 md5 print user,password 函式注釋 在函式體中 就出現注釋 填寫對應功能即可 print func...