函式基礎 函式引數及函式簡單應用

2021-08-13 17:01:53 字數 4893 閱讀 5032

1 為什麼要有函式?沒有函式帶來的困擾?

組織結構不清晰,可讀性差

**冗餘

可擴充套件性差

2 什麼是函式

具備某乙個功能的工具—>函式

事先準備工具—>函式的定義

拿來就用、重複使用—>函式的呼叫

ps:先定義後呼叫

3 函式的分類:

內建函式:len,max(10,11),help(函式名)

自定義函式:def

語法:

def 函式名(引數1,引數2,...):

"""注釋"""

函式體return 返回值

函式型別與變數
def

print_tag

(): print('*'*20)

print_tag()

print(print_tag) #列印變數print_tag對應的記憶體位址

定義函式階段,只檢測語法,不執行**

定義階段:

def

bar():

#定義乙個函式名字為bar

print('from bar')

呼叫階段:
bar()   #呼叫函式
函式的使用:先定義後呼叫
def

bar():

print('from bar')

deffoo

(): print('from foo')

bar() #先定義後呼叫

foo() #foo函式呼叫bar函式

定義函式的三種形式

第一種:無參函式

def

auth

():#無參函式

name=input('name>>>').strip()

password=input('password>>>').strip()

if name == 'lqx'

and password == '123':

print('login successfull')

else:

print('login err')

auth()

第二種:有參函式
def

auth

(name,password):

if name == 'lqx'

and password == '123':

print('login successfull')

else:

print('login err')

definteractive

(): name=input('name>>>').strip()

password=input('password>>>').strip()

auth(name,password) #引數傳入auth中

interactive()

第三種:空函式
def

auth

():pass

defput

():pass

defget

():pass

defls

():pass

函式的返回值

return的特點

1、函式內可以有多個return,但是只能執行一次return

2、執行return函式就立刻結束,並且return的後值當做本次呼叫的結果返回

def

foo():

print('first')

return

1 print('second')

return

2 print('third')

return

3foo()

返回的值沒有型別限制
def

bar():

print('from bar')

deffoo

():return bar #返回bar

print(foo() is bar)

a=foo()

a() #這裡的a()就是bar()函式

返回值的個數
1、沒有return:預設返回none

2、return值:值本身

3、return多個值:返回乙個元組

def

foo():

pass

return

1,'a',[1,2],

a=foo()

print(a)

函式呼叫的三種形式
def

my_max

(x,y):

if x >= y:

return x

else:

return y

res1=my_max(1,2)

res2=my_max(1,2)*10

res3=my_max(my_max(1,2),3)

print(res1,res2,res3)

函式的引數分類兩種
形參:在定義階段括號內指定的引數,相當於變數名

實參:在呼叫階段括號內傳入的值稱為實參,相當於值

在呼叫階段,實參的值會繫結給形參,在呼叫結束後解除繫結

def

foo(x,y):

#x=1,y=2

print(x,y)

foo(1,2)

在python中引數的分類

位置引數:按照從左到右的順序依次定義的引數

位置形參:必須被傳值,多乙個少乙個都不行

位置實參:與形參一一對應傳值

def

foo(x,y):

print(x,y)

foo(2,1)

關鍵字引數:在函式呼叫時,按照key=value的形式定義的實參
特點:指名道姓地給形參傳值,不在依賴與位置

注意:

1、關鍵字實參必須在位置實參的後面

2、不能為同乙個引數賦值多次

def

foo(name,age,***):

print(name,age,***)

foo('lqx',18,'male')

foo(name='lqx',age=18,***='male')

預設引數:在函式定義階段,就已經為形參賦值了
特點:定義階段已經有值意味著呼叫階段可以不用傳值

位置引數通常用於經常變化的引數,而預設引數指的是大多數情況下都一樣的

注意:

1、預設引數必須放到位置形參的後面

2、預設引數的值只在定義時被賦值一次

3、預設的引數的值通常應該是不可變型別(str,int,tuple)

def

register

(name,age,***='male'):

print(name,age,***)

register('egon1',18) #位置實參,傳參

register('egon2',18) #關鍵字實參,傳參

register('egon3',18) #位置實參,預設引數,傳參

register('alex',38,'female') #關鍵字實參,預設引數,傳參

可變長引數:在呼叫函式時,實參值的個數不固定

*args的用法:(多餘的值以元組的形式保留)

# *args的用法:

deffoo

(x,y,*args):

#args=(4,5,6,7)

print(x,y)

print(args)

foo(1,2,4,5,6,7)

foo(*[1,2,4,5,6,7]) #這裡的*的意思是把list中的值解壓

**kwargs的用法:(多餘的值以字典的形式保留)
#**kwargs的用法

deffoo

(x,y,**kwargs):

print(x,y)

print(kwargs)

foo(x=1,y=2,z=3,a=5,b=6)

foo(**) #這裡的**的用法是把dict中的值解壓

*args和**kwargs的用法:
def

bar(x,y,z):

print(x,y,z)

def(*args,**kwargs):

#args=(1) kwargs=

bar(*args,**kwargs) #bar(*(1),**)

命名關鍵字引數:指的是定義在*後的引數,該引數必須被傳值(除非它有預設值),而且必須按照key=value的形式傳參
def

foo(x,y,*args,n):

#這裡的n必須使用關鍵字傳參

print(x,y)

print(args)

print(n)

foo(1,2,3,4,5,n=1231)

Python基礎 函式 函式引數

引數就是傳入的值 示例 usr bin env python3 coding utf 8 函式的引數和預設引數 defregist name,age,city shenzhen print name name print age age print city city 執行結果 d pythonpr...

函式基礎(一) 函式 引數

說明一點奧,如果你前置文章沒有看懂,那麼不建議你直接看這個 因為看了也是浪費時間,沒有意義 好,接下來就是python的靈魂部分了 函式 在歷史的長河中,遇到複雜問題的時候,人們總是想能不能對這個問題簡單化處理 於是,模組啊,函式啊什麼的,包括各種演算法就接踵而至了 那函式原先是怎麼想出來的呢?在原...

函式基礎和函式引數

1.什麼是函式 1 概念 函式就是對實現某一特定功能的 段的封裝 機器 2 分類 系統函式 系統已將定義了,程式設計師可以直接使用的函式,比如 print,input,type,ord,chr,bin,len,id等 別人造好的機器 自定義函式 程式設計師自己定義使用的函式 自己造機器 2.函式的定...