python foo函数_python——函数
python——函數
函數是什么
函數一詞來源于數學,但編程中的「函數」概念,與數學中的函數是有很大不同的,編程中的函數在英文中也有很多不同的叫法。在BASIC中叫做subroutine(子過程或子程序),在Pascal中叫做procedure(過程)和function,在C中只有function,在Java里面叫做method。
在python中函數它相當于一個獨立的代碼塊,可以被重復使用,如果需要增加一個功能或者修改一個功能,只需要,增加或者修改函數即可。
函數分類
內置函數
python解釋器已經為我們定義好的參數,比如:len(),sum(),max()等
函數的定義
列子:定義函數使用def關鍵字,后面是函數名,函數名不能重復
def fun():#定義一個函數,后面是函數名
print("Hello World")#函數體
我們看一下實列
def函數名(參數1,參數2,參數3,....):'''注釋名'''函數體return 返回的值
一旦執行到return,整個函數就結束了。如果沒有return,會默認返回None。return可以返回多個參數,這多個參數用元組封裝。
函數的參數
1.形參和實參
函數在調用的時候,可以傳入參數,有形參和實參,簡單點說,形參就是函數接收的參數,而實參就是你實際傳入的參數。
形參:形參變量只有在被調用時才分配內存單元,在調用結束時,即刻釋放所分配的內存單元。因此,形參只在函數內部有效。
實參:實參可以是常量、變量、表達式、函數等,無論實參是何種類型的量,在進行函數調用時,它們都必須有確定的值,以便把這些值傳送給形參。函數調用結束返回主調用函數后則不能再使用該形參變量。
形參,實參如下:
#1、位置參數:按照從左到右的順序定義的參數
位置形參:必選參數
位置實參:按照位置給形參傳值#2、關鍵字參數:按照key=value的形式定義的實參
無需按照位置為形參傳值
注意的問題:1. 關鍵字實參必須在位置實參右面2. 對同一個形參不能重復傳值#3、默認參數:形參在定義時就已經為其賦值
可以傳值也可以不傳值,經常需要變得參數定義成位置形參,變化較小的參數定義成默認參數(形參)
注意的問題:1. 只在定義時賦值一次2. 默認參數的定義應該在位置形參右面3. 默認參數通常應該定義成不可變類型#4、可變長參數:
可變長指的是實參值的個數不固定
而實參有按位置和按關鍵字兩種形式定義,針對這兩種形式的可變長,形參對應有兩種解決方案來完整地存放它們,分別是*args,**kwargs===========*args===========
def foo(x, y, *args):print(x, y) #1 2
print(args) #(3, 4, 5)
foo(1, 2, 3, 4, 5)-----------------------------------------------
def foo(x, y, *args):print(x, y) #1 2
print(args) #(3, 4, 5)
foo(1, 2, *[3, 4, 5])-----------------------------------------------
deffoo(x, y, z):print(x, y, z) #1 2 3
foo(*[1, 2, 3])-----------------------------------------------
def foo(*args, x, y):print(x, y)print(args)
foo(1, 2, *[3, 4, 5]) #報錯
===========**kwargs===========
def foo(x, y, **kwargs):print(x, y) #1 2
print(kwargs) #{'c': 3, 'a': 1, 'b': 2}
foo(1, y=2, a=1, b=2, c=3)----------------------------------------------
def foo(x, y, **kwargs):print(x, y) #1 2
print(kwargs) #{'c': 3, 'a': 1, 'b': 2}
foo(1, y=2, **{'a': 1, 'b': 2, 'c': 3})-----------------------------------------------
deffoo(x, y, z):print(x, y, z) #2 3 1
foo(**{'z': 1, 'x': 2, 'y': 3})===========*args+**kwargs===========
def foo(x, y, *args, **kwargs):print(x, y) #1 2
print(args) #(3, 4, 5)
print(kwargs) #{'c': 4, 'b': 3, 'd': 5}
foo(1, 2, 3, 4, 5, b=3, c=4, d=5)----------------------------------------------
*后定義的參數,必須被傳值(有默認值的除外),且必須按照關鍵字實參的形式傳遞def foo(x, y, *args, a=1, b, **kwargs):print(x, y) #1 2
print(args) #(3, 4, 5)
print(a) #1
print(b) #3
print(kwargs) #{'c': 4, 'd': 5}
foo(1, 2, 3, 4, 5, b=3, c=4, d=5)View Code
2.默認參數
默認參數就是在定義形參的時候,給函數默認賦一個值,比如說數據庫的端口這樣的,默認給它一個值,這樣就算你在調用的時候沒傳入這個參數,它也是有值的
#port=3306為默認值參數
def connect(ip,port=3306):print(ip,port)#如果給一個port值,則傳新給的值
connect('118.1.1.1',3307)#如果不填,則使用默認參數
connect('118.1.1.1')View Code
使用函數
使用的原則
函數使用的時候,要保證先定義,后調用
例子如下:
函數即“變量”,“變量”必須先定義后引用。未定義而直接引用函數,就相當于在引用一個不存在的變量名#測試一
deffoo():print('from foo')
bar()
foo()#報錯
#測試二
defbar():print('from bar')deffoo():print('from foo')
bar()
foo()#正常
#測試三
deffoo():print('from foo')
bar()defbar():print('from bar')
foo()#會報錯嗎?
#結論:函數的使用,必須遵循原則:先定義,后調用#我們在使用函數時,一定要明確地區分定義階段和調用階段
#定義階段
deffoo():print('from foo')
bar()defbar():print('from bar')#調用階段
foo()View Code
調用函數方式1 語句形式:foo()
2 表達式形式:3*len('hello')
3 當中另外一個函數的參數:range(len('hello'))
嵌套函數
嵌套函數說直接點就是在函數還有另一個函數
函數嵌套還分為調用和定義
我們先看一下調用:
defmax(x,y):return x if x > y elseydefmax4(a,b,c,d):
res1=max(a,b)
res2=max(res1,c)
res3=max(res2,d)returnres3print(max4(1,2,3,4))View Code
接下來我們看一下嵌套函數的定義:
deff1():print('from f3')
f1()View Code
函數的特性
函數是第一類對象,即函數可以當作數據傳遞
比如:#1 可以被引用
#2 可以當作參數傳遞
#3 返回值可以是函數
#3 可以當作容器類型的元素
列1:
defdemo():print("demo1")
a=demo
b=a
b()View Code
總結
以上是生活随笔為你收集整理的python foo函数_python——函数的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 电子商务公司创业计划书
- 下一篇: python属于汇编语言还是高级语言_p