python中lambda的另類使用
帶if/else:
( lambda x, y: x if x < y else y )( 1, 2 )
科裡化:
( lambda x: ( lambda y: ( lambda z: x + y + z )( 1 ) )( 2 ) )( 3 )
遞迴:
func = lambda n: 1 if n == 0 else n * func( n - 1 )
func( 5 )
f = lambda func, n: 1 if n == 0 else n * func( func, n - 1 )
print f( f, 4 )
構建邱奇編碼:
true = lambda x: lambda y: x false = lambda x: lambda y: y if_then_else = lambda a: lambda b: lambda c: ( a )( b )( c ) zero = lambda f: lambda x: x succ = ( lambda n: lambda f: lambda x: f( n( f )( x ) ) ) one = succ( zero ) plus_one = lambda x: x + 1 add = ( lambda m: lambda n: lambda f: lambda x: n( f )( m( f )( x ) ) ) mult = ( lambda m: lambda n: lambda f: lambda x: n( m( f ) )( x ) ) exp = lambda m: lambda n: n( m ) church_numeral = lambda n: n( plus_one )( 0 ) natural_number_to_church = lambda num: zero if num == 0 else \ succ( natural_number_to_church( num - 1 ) ) execute = lambda s: s + ' = ' + str( eval( s ) ) print execute( 'church_numeral( zero )' ) print execute( 'church_numeral( succ( zero ) )' ) print execute( 'church_numeral( add( one )( succ( one ) ) )' ) print execute( 'church_numeral( mult( succ( one ) )( succ( one ) ) )' ) print execute( 'church_numeral( exp( succ( succ( one) ) )( succ( one ) ) )' ) c200 = natural_number_to_church( 200 ) c222 = natural_number_to_church( 222 ) print execute( 'church_numeral( add( c200 )( c222 ) )' ) print execute( 'church_numeral( if_then_else( true )( zero )( one ) )' ) print execute( 'church_numeral( if_then_else( false )( zero )( one ) )' )
相關推薦
python中lambda的另類使用
帶if/else: ( lambda x, y: x if x < y else y )( 1, 2 ) 科裡化: ( lambda x: ( lambda y: ( lambda z
python中的元類(metaclass)
優先 裝飾器 target {} pass get tac 搜索 items 認識python中元類的準備工作。 1,首先需要明白一個概念就是python中一切皆為對象。 input: class Trick(object): pass print type(‘1234
Python中的基本類型簡介
rip 作用 集合 成了 叠代 如果 增加 下劃線 等號 1、變量 變量不僅可以是數字,還可以是任意數據類型 命名規範:變量是用一個變量名表示,變量名必須是大小寫英文、數字和下劃線_的組合,且不能用數字開頭 python中等號“=”是賦值語句,可以把任意數據類型賦值給變量
python中lambda使用
title python 定義 pre 易懂 gif port tools for 舉個例子如下: 1 func=lambda x:x+1 2 print(func(1)) 3 #2 4 print(func(2)) 5 #3 6 7 #以上lambda等同於以下函數
python中數據類型轉換
lac 特殊字符 集合運算 子類 倒數 IE 發生 開始 ron 1、list轉str 假設有一個名為test_list的list,轉換後的str名為test_str 則轉換方法: test_str = "".join(test_list) 例子: 需要註意的是該
Python中的元類編寫ORM框架
部落格轉載: https://blog.csdn.net/givemefive_y/article/details/79806348 https://blog.csdn.net/eye_water/article/details/78777870 https://www.liaoxue
Python中如何獲取類屬性的列表
前言 最近工作中遇到個需求是要得到一個類的靜態屬性,也就是說有個類 Type ,我要動態獲取 Type.FTE 這個屬性的值。 最簡單的方案有兩個: ? 1 2 getattr(Type, 'FTE') Type.__dic
Python 中的 經典類、新式類比較(1)(關鍵詞:Python/經典類/新式類)
經典類中,屬性搜尋處理對所有路徑深度優先,直到繼承樹的頂端,然後從左到右進行; 新式類中,屬性搜尋處理沿著樹層級、以更加廣度優先的方式進行。 新式類的優點:可以避免重複搜尋超類。 直接上程式碼說明: # Python 2 class Super: attr = 0 cla
python中lambda的用法
python中lambda的用法2016年03月25日 11:25:18 有腹肌的小蝌蚪_ 閱讀數:41985 一、lambda函式也叫匿名函式,即,函式沒有具體的名稱。先來看一個最簡單例子: def f(x):return x**2print f(4) Python中使用lambda的話,寫成這樣
python中的元類解讀
在多數的程式語言中,類就是一組用來描述如何生成一個物件的程式碼段,但類也是物件。只要使用關鍵詞class。python直譯器在執行時就會建立一個物件。對於一個物件·:可做的操作:賦值給一個變數,拷貝,增加屬性,作為函式引數進行傳遞等。 類也是物件,可以在執行時動態的建立。對於動態的建立類,可以使
python中lambda講解
lambda是Python程式語言中使用頻率較高的一個關鍵字。那麼,什麼是lambda?它有哪些用法? 這裡,我們通過閱讀各方資料,總結了關於Python中的lambda的“一個語法,三個特性,四個用法,一個爭論”。 一個語法 在Python中,lambda的語法是唯一的。其形式如下
函式在python中是第一類物件——day11
函式在python中是第一類物件?1、可以被引用x=1y=xdef bar(): print('from bar')f=barf()2、可以當中引數傳入x=1def func(a): print(a)func(x)def bar(): print('from bar')def wrapper
python中lambda表示式的使用以及兩個BIF即filter()和map()的使用
1.lambda表示式 作用:在用python寫一些執行指令碼時,使用lambda就可以省下定義函式過程,比如我們只是需要寫一個簡單的指令碼來管理伺服器時間,我們就不需要專門定義一個函式然後再寫呼叫,使用lambda就可以使的程式碼更加簡潔 對於一些比較抽象並且整個程式使用下來只需要呼叫
python 中的元類
1. 類也是物件 在大多數程式語言中,類就是一組用來描述如何生成一個物件的程式碼段。在Python中這一點仍然成立: >>> class ObjectCreator(object): … pass … >>> my_object = Objec
python中的定製類(形如__xxx__的變數)很有意思
python中除了可以使用內建的型別,如list,tuple,dict,還可以建立自己的物件來實現像這些內建型別的訪問,不過需要在定義類的時候對一些魔法方法逐一實現。 1、__str__ 我們先定義一個Study類,列印一個例項: 打印出一堆<__main__>,不好看
Python中lambda表示式、reduce函式、map函式、zip函式
對Python這幾個常用的小函式做一個彙總學習,參考了一些資料,有不妥的地方請原諒。 1、lambda函式 lambda是Python的一個內建函式,但是比def簡單很多。lambda不同於其他函式,主體是一個表示式,在程式碼內部嵌入一個函式的定義。工程用的比較多的是程式
python中抽象與類
前言: python中所有的資料都是以物件的形式存在,無論是簡單的數字型別還是複雜的程式碼模組。然而python特殊的語法形式巧妙的將實現物件機制的大量細節隱藏了,比如輸入num = 7就可以建立一個值為7的整數物件,並且將這個物件賦值給變數num。只是這個物件包含了加法,乘法之類
python 中 dict 在類中宣告的位置不一樣,結果有所差別
第一種宣告方式: class A(object): names = {} def output(self): print(self.names) class A1(A): pass class A2(A): pass
Python中lambda表示式學習
lambda只是一個表示式,函式體比def簡單很多。 lambda的主體是一個表示式,而不是一個程式碼塊。僅僅能在lambda表示式中封裝有限的邏輯進去。 lambda表示式是起到一個函式速寫的作用。允許在程式碼內嵌入一個函式的定義。 如下例子: 定義了一
理解python中的元類
一,理解類也是物件 在python中類同樣也是一種物件,只要使用關鍵字class,Python直譯器在執行的時候就會建立一個物件,這個物件(類)自身擁有建立物件(類例項)的能力,這就是為什麼他是一個類的原因,但是,他的本質任然是一個物件。 class objectCreator(object):