學習python第一天

2021-10-03 02:51:21 字數 1272 閱讀 4245

漢諾塔遞迴問題

python預設引數問題

(引數一開始可以給乙個預設值)

如果想讓乙個函式能接受任意個引數,我們就可以定義乙個可變引數:

def fn(*args):

print args

可變引數的名字前面有個 * 號,我們可以傳入0個、1個或多個引數給可變引數:

map()是 python 內建的高階函式,它接收乙個函式 f 和乙個 list,並通過把函式 f 依次作用在 list 的每個元素上,得到乙個新的 list 並返回。

例如,對於list [1, 2, 3, 4, 5, 6, 7, 8, 9]

reduce()函式也是python內建的乙個高階函式。reduce()函式接收的引數和 map()類似,乙個函式 f,乙個list,但行為和 map()不同,reduce()傳入的函式 f 必須接收兩個引數,reduce()對list的每個元素反覆呼叫函式f,並返回最終結果值。

例如,編寫乙個f函式,接收x和y,返回x和y的和:

def f(x, y):

return x + y

呼叫 reduce(f, [1, 3, 5, 7, 9])時,reduce函式將做如下計算:

先計算頭兩個元素:f(1, 3),結果為4;

再把結果和第3個元素計算:f(4, 5),結果為9;

再把結果和第4個元素計算:f(9, 7),結果為16;

再把結果和第5個元素計算:f(16, 9),結果為25;

由於沒有更多的元素了,計算結束,返回結果25。

python內建的 sorted()函式可對list進行排序:

sorted([36, 5, 12, 9, 21])

[5, 9, 12, 21, 36]

但 sorted()也是乙個高階函式,它可以接收乙個比較函式來實現自定義排序,比較函式的定義是,傳入兩個待比較的元素 x, y,如果 x 應該排在 y 的前面,返回 -1,如果 x 應該排在 y 的後面,返回 1。如果 x 和 y 相等,返回 0。

要讓 @log 自適應任何引數定義的函式,可以利用python的 *args 和 **kw,保證任意個數的引數總是能正常呼叫:

def log(f):

def fn(*args, **kw):

print 'call 』 + f.name+ 『()…』

return f(*args, **kw)

return fn

現在,對於任意函式,@log 都能正常工作。

Python 學習第一天

今天在酷殼網上看了一篇很受啟發的文章 程式設計師技術練級攻略 介紹了乙個程式設計師從啟蒙入門,高階加深,到高階深入,所需要掌握的技術和應該看的書,從今天開始希望乙個星期能把python學會,當然肯定是皮毛了。python3.x之前學習的 學習python的 照著上面的例子敲了一下,發現第乙個就錯了,...

Python學習第一天

大綱 一,python版本的選擇 2.7.x和3.4.x 二,直譯器 編譯器 編輯器的介紹 三,環境變數配置 windows和linux 四,pycharm安裝及屬性配置 windows和linux 五,第乙個程式 hello,moocie!為什麼選擇python?python是一種物件導向 解釋型...

python學習第一天

一 語言分類 機器語言 站在計算機的角度,對硬體進行控制即二進位制 組合語言 同機器語言一直,站在計算機的角度控制硬體。區別不直接使用二進位制,而是使用英文本元代替二進位制。有點執行速度快,但是編寫複雜,效率較低 高階語言 及使用通用的字元來替代計算機語言,不是直接執行需要通過計算機中的直譯器來翻譯...