python從入門到入墳(5)

2021-10-06 15:52:32 字數 3047 閱讀 6426

函式是可重用的程式**塊,函式的作用,不僅可以實現**的復用,更能實現**的一致性

python函式的分類:

內建函式:str()、len()等

標準庫函式:通過import語句導入庫,然後使用其中定義的函式。

第三方函式

使用者自定義函式

函式的定義和呼叫:

我們使用 def 來定義函式,然後就是乙個空格和函式名稱;

(1) python 執行 def 時,會建立乙個函式物件,並繫結到函式名變數上。

引數列表

(1) 圓括號內是形式引數列表,有多個引數則使用逗號隔開

(2) 形式引數不需要宣告型別,也不需要指定函式返回值型別

(3) 無引數,也必須保留空的圓括號

(4) 實參列表必須與形參列表一一對應

return 返回值

(1) 如果函式體中包含 return 語句,則結束函式執行並返回值;

(2) 如果函式體中不包含 return 語句,則返回 none 值。

文件字串(函式的注釋):使用三個單引號或者三個雙引號進行注釋。使用help(函式名._doc_)可以列印函式的文件字串。

變數的作用域( 全域性變數和區域性變數)

變數起作用的範圍稱為變數的作用域,不同作用域內同名變數之間互不影響。變數分為:全域性變數、區域性變數。

全域性變數:

1. 在函式和類定義之外宣告的變數。作用域為定義的模組,從定義位置開始直到模組結束。

2. 全域性變數降低了函式的通用性和可讀性。應盡量避免全域性變數的使用。

3. 全域性變數一般做常量使用。

4. 函式內要改變全域性變數的值,使用 global 宣告一下

區域性變數:

1. 在函式體中(包含形式引數)宣告的變數。

2. 區域性變數的引用比全域性變數快,優先考慮使用。

3. 如果區域性變數和全域性變數同名,則在函式內隱藏全域性變數,只使用同名的區域性變數

引數的傳遞

函式的引數傳遞本質上就是:從實參到形參的賦值操作。具體操作時分兩類:

對「可變物件」進行「寫操作」,直接作用於原物件本身。

對「不可變物件」進行「寫操作」,會產生乙個新的「物件空間」,並用新的值填充這塊空間。

可變物件:字典、列表、集合、自定義的物件等。

不可變物件:數字、字串、元組、function等。

淺拷貝和深拷貝

淺拷貝(copy):不拷貝子物件的內容,只是拷貝子物件的引用。

深拷貝(deepcopy):會連子物件的記憶體也全部拷貝乙份,對子物件的修改不會影響源物件。

引數的幾種型別:

位置引數:函式呼叫時,實參預設按位置順序傳遞,需要個數和形參匹配。

預設值引數:可以為某些引數設定預設值,預設值引數放在普通位置引數後面。

命名引數:我們可以按照形參的名稱傳遞引數,也稱為「關鍵字引數」。

可變引數:指的是「可變數量的引數」,分兩種情況:

1.*param(乙個星號),將多個引數收集到乙個「元組」物件中。

2.**param(兩個星號),將多個引數收集到乙個「字典」物件中。

強制命名引數:在帶星號的「可變引數」後面增加新的引數,必須是「強制命名引數」。

lambda表示式和匿名函式

lambda表示式可以用來宣告匿名函式。lambda函式是一種簡單的、在同一行中定義函式的方法,實際生成了乙個函式物件。

lambda表示式只允許包含乙個表示式,不能含複雜語句,該表示式的計算結果就是函式的返回值。

lambda表達是的基本語法如下:lambda arg1,arg2,arg3...:《表示式》

f = lambda a,b,c,d:a*b*c*d

def test(a,b,c,d):

return a*b*c*d

print(f(1,2,3,4))

eval()函式

功能:將字串str當成有效的表示式來求值並返回計算結果。

語法:eval(source[,globals[,locals]]) ->value

引數:source:乙個python表示式或函式compile()返回的**物件。globals:可選,必須是dictionary。locals:可選,任                      意對映物件。

遞迴函式

遞迴函式指的是:自己呼叫自己的函式,在函式體內部直接或間接的自己呼叫自己。每個遞迴函式必須包含兩個部分:

終止條件:表示遞迴什麼時候結束。一般用於返回值,不在呼叫自己。

#使用遞迴函式,計算階乘

def factorial(n):

if n==1:

return 1

else:

return n*factorial(n-1)

result = factorial(5)

print(result)

nonlocal關鍵字:用來宣告外層的區域性變數。

#測試nonlocal,global關鍵字的用法

def outer():

b = 10

def inner():

nonlocal b

print("inner b:",b)

b = 20

global a

a = 1000

inner()

print("outer b:",b)

outer()

結果:inner b: 10

outer b: 20

a: 1000

testlib h從入門到入墳

學了這麼久oi連個spj都不會寫真是慚愧啊。趁著沒退役趕緊學一波吧 我是直接暴力複製貼上的。然後扔到mingw的目錄裡 直接引用就好啦 引用testlib.h後,我們可以從三個地方讀入資料 inf 輸入檔案 ouf 選手輸出 ans 標準輸出 當然,肯定不能直接用scanf讀入,testlib裡內建...

python從入門到入墳 三(呂萬友)

上一節學習了字串的處理,其中也涉及到一些方法 等以後真正實用後再進行回顧。今天繼續學習新的知識。python 的三種資料儲存方式 tuple,list,dictionary list 沒有什麼特殊的地方,可能如果有,則需要對二維list做下了解。tuple 元組中只包含乙個元素時,需要在元素後面新增...

Git 從入門到入坑

當你想要學習 git 的時候,我猜你應該已經了解了什麼時候 git。沒錯,它就是分布式版本管理系統。講人話系列,就拿你上學時候考試來說吧,老師發了一張英語試卷給同學們做。這時你就想偷懶了,和幾個朋友商量好,乙個人做聽力,乙個人做閱讀,乙個人做完形填空。最後,你們把各自做的和並起來,一張卷子就做完了。...