Python基礎教程(一) - 函數和函數式編程

2020-12-04 低調的老兵

什麼是函數

函數是對程序邏輯進行結構化或過程化的一種編程方法。能將整塊代碼巧妙地隔離成易於管理的小塊,把重複的代碼放在函數中而不是進行大量的copy。前面使用過很多print()來進行列印,這是python提供的內建函數,你也可以自己創建函數,這叫做用戶自定義函數。

創建函數

你可以定義一個由自己想要功能的函數,用def語句來創建,標題行由def關鍵字,函數的名字,以及參數的集合(如果有的話)組成。def子句的剩餘部分包括了一個雖然可選但是強烈推薦的文檔字字符串和必須的函數體。return結束函數可以選擇返回一個值,不帶return的函數相當於返回一個None。前面我們已經看到過很多函數的聲明,這又是一個。

下面簡單定義一個函數,並調用它

參數

Python函數的形參集合由在調用時要傳入函數的所有參數組成,這些參數包括了必要參數、關鍵字參數和所有含有默認值,函數調用時不必要指定的參數。

位置參數:必須要以正確的順序傳入函數。沒有任何默認參數的話,傳入函數的參數的數目必須和聲明時一致。

默認參數:如果在函數調用時沒有為參數提供值則使用預先定義的默認值。

關鍵字參數:關鍵字參數和函數調用關係緊密,函數調用使用關鍵字參數來確定傳入的參數值。使用關鍵字參數允許函數調用時參數的順序與聲明時不一致,因為 Python 解釋器能夠用參數名匹配參數值。

不定長參數:你可能會有需要用函數處理可變量參數的情況。和上述參數不同,聲明時不會命名。用*和**符號來指定元組和字典的元素作為非關鍵字以及關鍵字參數。函數定義的語法為:

下面看一個關鍵字和非關鍵字可變長參數都在一個函數中的例子:

匿名函數

python允許用lambda關鍵字來創造匿名函數。匿名是因為不需要以標準的方式來聲明。lambda函數的語法只包含一個語句,如下:lambda [arg1, [arg2,.....argn]]: expression

變量作用域

標識符的作用域是定義為其聲明在程序裡的可應用範圍,即變量可見性。訪問權限決定於這個變量是在哪裡賦值的。定義在函數內部的變量擁有一個局部作用域,定義在函數外的變量擁有全局作用域。局部變量只能在其被聲明的函數內部訪問,而全局變量可以在整個程序範圍內訪問。

相關焦點

  • 寫Python 代碼不可不知的函數式編程技術
    選自 Medium作者:Raivat Shah參與:魔王、Jamin本文對 Python 中的函數式編程技術進行了簡單的入門介紹。近來,越來越多人使用函數式編程(functional programming)。因此,很多傳統的命令式語言(如 Java 和 Python)開始支持函數式編程技術。
  • Python每天一分鐘:lambda表達式 (匿名函數)及用法詳解
    lambda表達式,又稱匿名函數,是現代各種程式語言爭相引入的一種語法,其功能堪比函數,設計卻比函數簡潔。,它可以在程序中被傳遞和調用。一個lambda表達式範例本例中使用了多種python的小技巧,包括python推導式,map函數,lambda表達式等。
  • python高階函數:map、filter、reduce的替代品
    根據單詞長度,使用sorted函數對一個列表進行排序。其中將len函數傳給key參數,具體示例如下:這裡需要特別提示一下,任何單參數函數都能作為key參數的值。在函數式編程中,大家最熟悉的高階函數主要有map函數、filter函數、reduce函數和apply函數。
  • 反對函數式編程的政治正確
    為了優雅,你應該寫成函數式的。你這段代碼有副作用,這是骯髒的。為了純淨性,你應該把 IO 包在 Monad 裡。你這段代碼用了 class,這是面向對象的。為了無狀態,你應該寫成高階函數。這種粗暴的邏輯和【父母都是為你好】與【女性不適合編程】有什麼區別嗎?
  • python基礎課程 第5章 奇妙的內建函數
    今天我們來講講 python 的常用內建函數,以便於大家在日常編程過程中遇到類似的場景可以直接拿來使用,不用再重複自己了。python 內建函數(python自帶的函數) 數量加起來大概有70多個,今天我們主要講常用的一些,至於更多的內容可以在以後的基礎教程裡慢慢學到。
  • Python學習,這些高階函數和高階特性值得一學
    Python語言這麼火,不論是對於剛開始學習的編程小白或者有接觸過其他語言(c/c++/java等等)的同學來說,寫代碼的時候難免會受本身慣性思維或者其他語言的影響!解決問題的思路有的時候會比較單一,其實Python有很多靈活的解法,比如python的幾個高階函數或者特性!
  • go 學習筆記之學習函數式編程前不要忘了函數基礎
    生物學家會下意識對動植物進行分類歸納,面向對象編程也是如此,用一系列的抽象模型去模擬現實世界的行為規律.簡單來說,函數式編程具有以下特點:不可變性: 不用狀態變量和可變對象函數只能有一個參數純函數沒有副作用摘自維基百科中關於函數式編程中有這麼一段話:
  • 函數式編程很難,所以你要學習它
    很 奇怪不是,很少有人每天都使用函數式程式語言。如果你用Scala,Haskell,Erlang,F#或某個Lisp方言來編程,很可能沒有公司會花錢 聘你。這個行業裡的絕大部分人都是使用像Python,Ruby,Java或C#等面向對象的程式語言——它們用起來很順手。不錯,你也許會偶然用到一兩 個「函數式語言特徵」,例如「block」,但人們不會去做函數式編程。
  • Python學習第40課-Lambda表達式創建匿名函數
    【每天幾分鐘,從零入門python編程的世界!】之前我們學習了使用def關鍵字來創建自定義函數,這種方式創建的函數都是有函數名的,我們也可以創建沒有函數名的函數,這種函數叫做匿名函數。Python中可以使用Lambda表達式來創建匿名函數。
  • 利用python計算函數與x軸之間的面積
    用數學表達式表示出來就是:也就是求解任意一個函數的絕對值與x軸之間構成的面積,我們以函數sin(x)為例(因為函數sin(x)便於對計算結果進行檢驗),如圖所示:我們用積分的定義來計算,積分就是將函數分成無數的小段,然後對每一小段進行求和處理。
  • python動態添加類對象成員:變量、函數
    一般類對象新增變量或方法的過程在面向對象(OOP)的編程方法中,如果需要給實例化的類對象新增方法或者屬性,一般都是在class類的定義中新增內容,然後才能用類對象來調用新增的方法或變量。pythonyu'yan那麼下面就以下圖中的代碼為例,為大家演示如何給python中的類對象動態的添加變量
  • 基本初等函數 指數函數 代碼篇
    本文首發於微信公眾號:"算法與編程之美",歡迎關注,及時了解更多此系列博客。由於機器學習和數學密切相關,尤其是數學中的函數,因此我們非常有必要複習和了解基本的函數知識。上一篇文章中,我們為大家介紹了基本初等函數中的指數函數 基本初等函數 指數函數,本文將為大家介紹如何利用python語言完成函數的繪製。
  • Python基礎教程——高階函數
    Python的高階函數,就是map、filter、reduce,說它們是高階函數,只是因為我們平時用的少,所以理解起來也有點費勁,事實上,它們功能很強大,也很好用易用。一起來看看吧。Python高階函數需求一:對列表的每個成員做一些通用性的操作
  • Python基礎教程(一) - 快速入門
    從今天開始學習python,會將學習到的相關知識整理到這裡。今後的所有內容都基於Ubuntu系統中進行的,和其他語言一樣,讓我們先來"Hello World!"吧。Hello world!#!/usr/bin/python為Linux系統下Python解釋器的路徑,通常python解釋器的路徑安裝在/usr/local/bin或/usr/bin目錄下。
  • Excel Mid函數與Midb函數的使用方法,含反向取值
    在 Excel 中,提取指定長度的字符有兩個函數,分別為Mid函數和Midb函數,前者用於提取指定長度的字符個數,後者用於提取指定長度的字節個數。用Mid函數提取時,無論是漢字、字母還是數字都算一個字符;用Midb函數提取時,漢字算兩個字節,數字和字母算一個字節。一般情況下,它們從左向右提取;但也可以反向提取,即從右向左提取。
  • python基礎教程之python是什麼?
    本文引用地址:http://www.eepw.com.cn/article/265927.htm現在,全世界差不多有600多種程式語言,但流行的程式語言也就那麼20來種。如果你聽說過TIOBE排行榜,你就能知道程式語言的大致流行程度。
  • python的內置函數:int()轉換成整型
    在python中是利用內置函數int()來將一個對象轉換成整型。python的內置函數int的使用1.內置函數int()語法classint(x,base=10),其中x為一個字符串或數字,base來表示x是以什麼進位的數據來表示的。x數字參數可以是整數、浮點數(小數點表示和指數e表示皆可), 字符串參數僅能包含在指定進位下所涵蓋的字符,該參數可省略。
  • Python視頻教程網課編程零基礎入門數據分析網絡爬蟲全套Python...
    高級編程(6套課程) 注:零基礎全能篇中,針對windows和liunx系統均有兩套課程可供選擇學習,單純學python,哪個系統都一樣,初學者只需選擇自己熟悉的系統學習相應課程即可。變量的計算和輸入輸出 08 變量的命名 09 if判斷語句 10 石頭剪刀布 11 while循環基本使用 12循環嵌套 13 函數的基本使用 14 函數的參數和返回值 15函數的嵌套調用 16模塊的簡介 17列表 18元祖 19字典
  • python:pop函數詳解 - 二進位01
    pop函數詳解今天我為大家講解python中pop函數的使用。#python#簡介——pop()函數是python解釋器的內置方法,可作用於列表,字典。用法說明——在builtins.py中找到pop函數。列表:L.pop([index]) -> item -- remove and return item at index (default last).
  • python測試函數模塊unittest
    1.測試函數在編寫完代碼後進行對代碼測試是否有錯誤2.pytho標準庫中的模塊unittest為代碼測試工具例如:name_function.py 模塊名def get_formatted_name(first, last): full_name = first + ' ' + last