python學習之函式(三) 函式與過程

2022-08-17 03:03:19 字數 2215 閱讀 4255

1.函式與過程的區別:

有返回值的是函式,沒有返回值的是過程;

函式(function):有返回值

過程(procedure):簡單特殊,沒有返回值

嚴格來說,python只有函式,沒有過程。沒有返回值的函式,預設有乙個返回值none

2.返回值:

返回值可以是多種型別,也可以返回多個資料,可以用陣列打包返回,也可以用元組一起返回,沒有型別限制

3.函式變數的作用域:

區域性變數(local variable):在函式中定義的引數和變數是區域性變數,在函式外是無法使用的,因為函式呼叫完之後,棧就將函式資料清除,所以外部是無法呼叫的

全域性變數(global variable):作用域是整個模組,整個**都可以訪問,可以在函式中使用,最好不要在函式中修改,如果在函式中修改全域性變數,會在函式中,新建乙個區域性變數,名字和全域性變數一致,但是不會影線全域性變數的值

def decision(price,rate):

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)

4.global關鍵字:可以用來修改成全域性變數

count = 5

def test1():

count = 10

print(count)

print(count

5.內嵌函式:在函式內部定義另乙個函式;

def fun1():

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

注意:內嵌函式在呼叫的時候,只能在定義函式的內部能呼叫,不能全域性呼叫

5.閉包():如果在乙個內部函式裡,對外部作用域(但不是在全域性作用域)裡進行引用,則內部函式就被認為是閉包

注意:閉包是由內嵌函式演變而來,全域性是不能呼叫閉包的

#閉包

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)

#----------

def fun1():

x=4def fun2():

nonlocal x

x*=x

return x

return fun2()

print(fun1())

global適用於函式內部修改全域性變數的值; nonlocal適用於巢狀函式中內部函式修改外部變數的值

如果沒有使用以上關鍵字,對全域性變數或者外部變數進行修改,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...