python Day5 函式和lambda表示式

2021-09-29 00:07:53 字數 2626 閱讀 7671

1.函式的定義:

def 函式名(參數列)

函式體return[表示式](不帶表示式的return相當於返回none)

例項

帶變數:

輸出如下:

welcome runoob

width = 4 height = 5 area = 20

引數傳遞:

變數沒有型別,只是相當於乙個指標。

可更改(mutable)與不可更改(immutable)物件

在 python 中,strings, tuples, 和 numbers 是不可更改的物件,而 list,dict 等則是可以修改的物件。

不可變型別:變數賦值 a=5 後再賦值 a=10,這裡實際是新生成乙個 int 值物件 10,再讓 a 指向它,而 5 被丟棄,不是改變a的值,相當於新生成了a。

可變型別:變數賦值 la=[1,2,3,4] 後再賦值 la[2]=5 則是將 list la 的第三個元素值更改,本身la沒有動,只是其內部的一部分值被修改了。

python 函式的引數傳遞:

不可變型別:類似 c++ 的值傳遞,如 整數、字串、元組。如fun(a),傳遞的只是a的值,沒有影響a物件本身。比如在 fun(a)內部修改 a 的值,只是修改另乙個複製的物件,不會影響 a 本身。

可變型別:類似 c++ 的引用傳遞,如 列表,字典。如 fun(la),則是將 la 真正的傳過去,修改後fun外部的la也會受影響

python 中一切都是物件,嚴格意義我們不能說值傳遞還是引用傳遞,我們應該說傳不可變物件和傳可變物件。

python 傳不可變物件例項

傳可變物件例項

以下是呼叫函式時可使用的正式引數型別:

必需引數

關鍵字引數

預設引數

函式在宣告時就為部分引數賦值,在後續使用時如果沒有對這些引數賦值,那麼這些引數的值就為宣告時的值。

不定長引數

def functionname([formal_args,] *var_args_tuple ):

「函式_文件字串」

function_suite

return [expression]

加了星號 * 的引數會以元組(tuple)的形式匯入,存放所有未命名的變數引數。

**的應用:

如果單獨出現星號 * 後的引數必須用關鍵字傳入。

def f(a,b,*,c):

… return a+b+c

f(1,2,3) # 報錯

traceback (most recent call last):

file 「」, line 1, in

typeerror: f() takes 2 positional arguments but 3 were given

f(1,2,c=3) # 正常

6

lambda匿名函式:

lambda 函式的語法只包含乙個語句,如下:

lambda [arg1 [,arg2,…argn]]:expression

運用:

numbers = [1, 3, 6]

newnumbers = tuple(map(lambda x: x , numbers))

print(newnumbers)

上面的程式段輸出為:

(1,3,6)

這裡的tuple(map(function,iterable)

表示以function為格式將iterable迭代進行處理,形成乙個新的iterable,然後返回它。

return語句

return [表示式] 語句用於退出函式,選擇性地向呼叫方返回乙個表示式。不帶引數值的return語句返回none。

刻意練習Python DAY5

1.python中沒有字元的概念,單位為1的字串就是單個的字元。2.字串的方法及注釋 方法注釋 capitalize 把字串的第乙個字元改為大寫 casefold 把整個字串的所有字元改為小寫 count sub start end 返回 sub 在字串裡邊出現的次數,start 和 end 引數表...

Python day5 模組與包管理

python php模組和包管理 乙個.py檔案就是乙個模組 為了避免命名衝突可以引入上層目錄作為包進行模組管理 作為包的目錄中必須要有名為 init py的檔案 裡面可以是空的 該檔案的模組名就是包名 pycharm中右鍵資料夾標記目錄為根 就可以import不報未找到了 自定義模組 usr bi...

小白入門python day5 類與例項

物件導向最重要的概念就是類 class 和例項 instance 例項是根據類建立出來的乙個個具體的 物件 每個 物件 都擁有相同的方法,但各自的資料可能不同。在python中,類是通過class關鍵字定義 class mythreadmanager 自定義執行緒池 def init self,th...