python 培訓第三章 ,函數,裝飾器,模組,內建函數之一函數

來源:互聯網
上載者:User

標籤:python

目錄:

函數樣本
裝飾器
模組
內建函數
一、函數樣本:

 1、定義函數:
    def fun(args):
      ‘描述資訊‘
      函數體
    return 傳回值

  定義函數的三種形式:
    無參函數
def foo():
print(‘in the foo‘)

                        foo()                         有參函數:                        def bar(x,y):                        print(‘in the bar‘)                        bar(1,2)                        空函數:                        def func():                        pass        空函數的應用樣本:

def put():
pass

def get():
pass

def cd():
pass

def ls():
pass

def auth():
pass
3、調用函數:
三種形式:
語句形式:

def foo():
print(‘in the foo‘)

foo()
運算式形式:

def my_max(x,y)
if x>y:
return x
else:
return y

res = my_max(1,2)
res = 10 * my_max(1,2)
作為另外一個函數的參數:my_max(1,my_max(2,3)):
#先比較2與3的最大值,再與1作比較;

4、函數的傳回值三種形式:
不返回函數:

def foo():
print(‘in the foo‘)

res = foo()
print(res)

返回一個函數:

def foo():
return 1
res = foo()
print(res)

返回多個:

def foo():
return 1,‘s‘,[1,2,3]
res = foo()
print(res)

5、函數的參數:

def func(x,y): #形參在調用時才真正佔用記憶體空間,調用結束則釋放記憶體空間;
print(x)
print(y)

func(1,2) #實參真實佔用記憶體空間;

def func(x,y):
if type(x) is int and type(y) is int:
return x+y

func(1,‘a‘)

def func(x,y): #使用文檔注釋來提醒使用者輸入參數類型;
‘‘‘
‘‘‘
return x+y

func(1,‘a‘)

def func(x:int,y:int)->int: #只是一個提示作用;
pass
print(func.annotations)

從實參的角度,
按位置傳值:
def foo(x,y):
print(x,y)
foo(1,2)

按關鍵字傳參:key = value
def foo(x,y):
print(x,y)
foo(y=2,x=1) #優點:不用按位置來輸入參數;

針對同一個形參,要麼按照位置要麼按照關鍵字為形參傳值;關鍵字參數必須寫到位置參數的右邊;
如:foo(1,x=1,y=2) 此方法會報錯;

從形參的角度:位置參數,預設參數,
可變長參數*args;**kwargs;
按位置定義的形參:
def foo(x,y,z): #位置參數;也就是必傳值參數;
print(x)
print(y)
print(z)

foo(1,2,3)
foo(y=2,x=1,z=3)

按預設參數的形參:
def foo(x,y=1): #y就是預設參數;但也可以去賦值;預設參數建議不要使用列表或字典等可變類型;必須放在預設參數之後;
print(x)
print(y)
foo(1)

按可變長參數的形參:
def foo(x,y=1,*args): #可變長參數必須放在位置參數與預設參數的後面;此情況一般不使用位置參數;
print(x)
print(y)
print(args)

foo(1,2,3,4,54,6,3,y=2) #錯
foo(1,2,3,4,54,y=2,3,5) #錯
foo(1,2,3,4,54,6,3) #對

def foo(x,y,args):
print(x)
print(y)
print(
args)

l=[‘a‘,‘b‘]
foo(1,2,1) #args的形式就等於1,2,3,4,5 解包;

(‘a‘,‘b‘)

def foo(x,y,z):
print(x)
print(y)
print(z)

foo(1,2,3)

l=[1,2,3]
foo(*l)

def foo(x,**kwargs):
print(x)
print(kwargs)

foo(1,y=3,z=2)
dic = {‘a‘:1,‘b‘:2}
foo(1,**dic) #foo(1,a=1,b=2)

def foo(x,y,z):
print(x,y,z)

foo({‘a‘:1,‘b‘:2,‘c‘:3}) #foo(a=1,b=2,c=3),要把a,b,c改成x,y,z
foo(
{‘x‘:1,‘y‘:2,‘z‘:3})

註:位置參數 -> 預設參數,*args, *kwargs
1、
args 相當於展開按照位置的方式去寫;
2、**kwargs 相當於把kwargs按照關鍵字的方式去寫;

函數可以被當做資料來傳遞

def func()
print(‘in the fun‘)

fl = fun
fl()

函數可作為參數:高階函數:
def foo(x):
x()
foo(func)

傳回值可以是函數:
##########################################

可以作為容器類型的元素:
func_dic={
‘func‘:func
}

func_dic[‘func‘]()

可以作函數的傳回值
"""
函數接受一個或多個函數作為輸入或者函數輸出(返回)的值是函數時,我們稱這樣的函數為高階函數
"""
def foo():
print("傳回值")

def bar(func):
return func
f = bar(foo)
f()
bar(foo())
函數嵌套
1、嵌套調用
#嵌套函數的意義相當於把一個大需求拆成多個小需求然後組合一起,以如下為例
max2函數式做兩個值得大小比如如果要做多個如10 100個就需要在max4中組合
def max2(x,y):
return x if x > y else y

def max4(a,b,c,d):
res1=max2(a,b)
res2=max2(res1,c)
res3=max2(res2,d)
return res3

print(max4(10,99,31,22))

2、函數嵌套定義
#函數的嵌套定義
def f1():#第一步進入f1函數
def f2():#第二部f1函數體中有f2函式宣告
print(‘from f2‘)
def f3():#第四部f2函數體中有f3函式宣告
print(‘from f3‘)
f3()#第五部f2函數體中運行f3函數
f2()#第三部f1函數體重運行f2內容

f1()

python 培訓第三章 ,函數,裝飾器,模組,內建函數之一函數

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.