Python課堂筆記 函式

2021-10-19 08:37:54 字數 4813 閱讀 8178

def

student_name

(name)

:# 函式冒號起始,下面縮排代表以下都是該函式的內容

"列印學生的名字"

# 相當於函式的注釋,解釋函式的功能

print

('姓名:'

, name)

return

返回多個值。

def

student_name_and_age()

: name =

input

('請輸入姓名\n'

) age =

int(

input

('請輸入年齡\n'))

return name,age

rst = student_name_and_age(

)# 預設返回乙個tuple

name, age = student_name_and_age(

)# 將tuple的值拆分,依次返回至每乙個變數

函式的巢狀呼叫

def

worker

(s):

rst =10/

float

(s)return rst

defgroup_leader

(s):

rst = worker(s)*2

return rst

defcto

(s):

return group_leader(s)

位置引數

位置引數是最簡單的一種函式呼叫的方式。位置引數須以正確的順序傳入函式,數量必須和宣告時的一樣。

def

student_name_and_age

(name, age):.

..student_name_and_age(

'葉鍇',24

)

預設引數

呼叫函式時,預設引數的值如果沒有傳入,則被認為是預設值。

def

student_name_and_age

(name, age=

'不願透露'):

...student_name_and_age(

'葉鍇'

)student_name_and_age(

'趙一默',25

)

可變引數

傳入的引數個數是可變的,可以是1個、2個到任意個,還可以是0個,這些可變引數在函式呼叫時自動組裝為乙個tuple。

def

all_student_names

(*names):.

..all_student_names(

'葉鍇'

,'趙一默'

,'李默'

)

關鍵字引數

允許傳入0個或任意個含引數名的引數,這些關鍵字引數在函式內部自動組裝為乙個dict。

def

student_info

(name, age,

**kw)

:print

(f'我的名字叫:,年齡:,其他資訊:')if

'city'

in kw:

print

(',來自:'

, kw[

'city'])

student_info(

'葉鍇',24

, height=

187, city=

'北京'

)

def

score_info

(name,

**kw):if

'語文成績'

in kw:

print

(name,

'的語文成績:'

, kw[

'語文'])

if'數學成績'

in kw:

print

(name,

'的數學成績:'

, kw[

'數學'])

defperson_info

(name, age,

**kw)

:print

('姓名:'

, name,

',年齡'

, age)

score_info(name,

**kw)

score_cfg =

person_info(

'葉鍇',19

,**score_cfg)

命名關鍵字引數

如果要限制關鍵字引數的名字,可以用命名關鍵字引數。

def

print_person_info

(name, age,

*, height, weight)

:# *號後的引數都叫命名關鍵字引數

print(.

..)print_person_info(

'葉鍇',19

, height=

187, weight=

62.5

)# 命名關鍵字引數呼叫時必須寫清引數名

在定義函式時,可以組合使用以上5種引數。但是,引數定義的順序必須是:必選引數、預設引數、可變引數、命名關鍵字引數和關鍵字引數。

注意:最好不要同時組合太多。

def

student_info

(name, age=18,

*books, city,

**kw)

:# 如果函式定義中已經有了乙個可變引數,後面跟著的命名關鍵字引數就不再需要乙個特殊分隔符*了..

.student_info(

'葉鍇',19

,'高數'

,'線代'

,'英語'

, city=

'北京'

, height=

187, weight=

63)

區域性變數作用域:在函式內

全域性變數作用域:在函式外

函式優先使用區域性變數,在沒有區域性變數的情況下,使用全域性變數。

注意:定義在函式內部的變數,函式結束之後自動消亡。

def

change_my_name()

:global name # 當函式中對外面的某一變數賦值時,預設這個變數為區域性變數。因此,在賦值前想呼叫該變數時,需定義global變數,才能呼叫該變數在外面定義的值

print

('我的名字曾經是'

, name)

name =

'葉鍇'

print

('我的名字現在是'

, name)

name =

'葉君'

change_my_name(

)

lambda的主體是乙個表示式,而不是乙個**塊,僅僅能在lambda表示式中封裝有限的邏輯進去。

lambda函式擁有自己的命名空間,且不能訪問自有引數列表之外或全域性命名空間裡的引數。

# lambda 若干個輸入引數 : 返回值的表示式

(lambda arg1, arg2: arg1 + arg2)(1

,2)add =

lambda arg1, arg2: arg1 + arg2

add(1,

2)

# 函式名其實就說指向函式的變數

my_print =

print

my_print(

'a')

# 函式名也可以作為乙個變數,傳入其他函式

deffunc_x

(x, f)

:return f(x)

func_x(-1

,abs

)# abs為絕對值函式

乙個函式可以接收另乙個函式作為引數,這種函式就稱之為高階函式。

mapmap()函式接受兩個引數,乙個是函式,乙個是iterable(可迭代物件)。map將傳入的函式依次作用到序列的每個元素,並把結果作為新的iterator返回。

reduce

用傳給reduce中的函式function(兩個引數)先對集合中的第1、2個元素進行操作,得到的結果再與第三個資料用function函式運算,依此類推,最後得到乙個結果。

sorted

預設按照公升序排序,當宣告reverse=true時降序排序。

閉包閉包從表現形式上定義為:如果在乙個內部函式裡,對在外部作用域(但不是在全域性作用域)的變數進行引用,那麼內部函式就被認為是閉包(closure)。

注意:返回閉包時,返回函式不要引用任何迴圈變數,或後續會發生變化的變數。

裝飾器用來「裝飾」python的用具,使得**更具有python簡潔的風格。換句話說,它是一種函式的函式,因為裝飾器傳入的引數就說乙個函式,然後通過實現各種功能來對這個函式的功能進行增強。

# 裝飾器輸入乙個函式,輸出乙個函式

defprint_working

(func)

:def()

:print

(f' is working...'

) func(

)

裝飾器最大的優勢是用於解決重複性的操作,其主要使用的場景如下:

偏函式通過設定引數的預設值,降低函式呼叫的難度。

python 函式 課堂筆記 12 21

python 函式 函式是組織好的,可重複使用的,用來實現單一,或相關功能的 報 語法 def 函式名 引數列表 引數體return 可以返回多個值,返回的多個值組成乙個元組,返回值加上一對中括號,則返回乙個列表 函式分為定義和呼叫 可更改 mutable 與不可更改 immutable 物件 在p...

課堂筆記08 函式

函式也是 個物件 函式 來儲存 些可執 的 並且可以在需要時,對這些語句進 多次 調 語法 def 函式名 形參1,形參2,形參3.塊注意 函式名必須符合識別符號的規範 可以包含字 數字 下劃線但是不能以數字開 頭 print是函式物件 print 是調 函式 定義乙個函式 函式中儲存的 不會立即執...

課堂筆記09 函式2

返回值就是函式執 以後返回的結果 通過return來指定函式的返回值 return後 可以跟任意物件,返回值甚 可以是 個函式 help 是python中內建函式,通過help 函式可以查詢python中函式的 法 在定義函式時,可以在函式內部編寫 檔字串,檔字串就是對函式的 說明 作 域 scop...