程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> MySQL綜合教程 >> mysql導入sql文件報錯 ERROR 2013 2006 2002

mysql導入sql文件報錯 ERROR 2013 2006 2002

編輯:MySQL綜合教程

mysql導入sql文件報錯 ERROR 2013 2006 2002。本站提示廣大學習愛好者:(mysql導入sql文件報錯 ERROR 2013 2006 2002)文章只能為提供參考,不一定能成為您想要的結果。以下是mysql導入sql文件報錯 ERROR 2013 2006 2002正文


綁定

仔細的讀者能夠記得我在 第 1 部門的函數技巧中指出的限制。特殊在 Python 中不克不及防止表現函數表達式的稱號的從新綁定。在 FP 中,稱號平日被懂得為較長表達式的縮寫,但這一說法暗示著“統一表達式老是求出雷同的值”。假如標志的稱號從新被綁定,這一暗示便不成立。例如,讓我們界說一些在函數編程中要用到的快捷表達式,好比:
清單 1. 以下 Python FP 部門的從新綁定要形成毛病

>>> car = 
    
    lambda
    
     lst: lst[0]
>>> cdr = 
    
    lambda
    
     lst: lst[1:]
>>> sum2 = 
    
    lambda
    
     lst: car(lst)+car(cdr(lst))
>>> sum2(range(10))
1
>>> car = 
    
    lambda
    
     lst: lst[2]
>>> sum2(range(10))
5

不幸的是,完整雷同的表達式 sum2(range(10)) 在法式中的兩處求得兩個分歧的值,即便該表達式本身並沒有在其參數中應用任何可變變量。

榮幸的是, functional 模塊供給了稱為 Bindings 的類(向 Keller 提議)來避免如許的從新綁定(至多在有時情形下,Python 不會阻攔同心專心想要消除綁定的法式員)。但是應用 Bindings 須要一些額定的語法,如許不測就不太輕易產生。在 functional 模塊的示例中,Keller 將 Bindings 實例定名為 let (我假定在 ML 家族說話的 let 症結詞的前面)。 例如,我們會如許做:
清單 2. 具有平安從新綁定的 Python FP 部門

>>> 
    
    from
    
     functional 
    
    import
    
     *
>>> let = Bindings()
>>> let.car = 
    
    lambda
    
     lst: lst[0]
>>> let.car = 
    
    lambda
    
     lst: lst[2]
Traceback (innermost last):
 File "<stdin>", line 1, 
    
    in
    
     ?
 File "d:\tools\functional.py", line 976, 
    
    in
    
     __setattr__
  
    
    raise
    
     BindingError, "Binding '%s' cannot be modified." % name
functional.BindingError: Binding 'car' cannot be modified.
>>> car(range(10))
0

很顯著,真實的法式必需做一些設置來捕捉“綁定毛病”,並且他們被拋出也防止了一類成績的湧現。

與 Bindings 一路, functional 供給 namespace 函數從 Bindings 實例中獲得定名空間(現實上是個字典)。假如願望在 Bindings 中界說的(弗成變)定名空間中運算一個表達式,這異常輕易完成。Python 的 eval() 函數許可在定名空間中停止運算。 讓我們經由過程一個示例來弄清晰:
清單 3. 應用弗成變定名空間的 Python FP 部門

>>> let = Bindings()   
    
    # "Real world" function names
>>> let.r10 = range(10)
>>> let.car = 
    
    lambda
    
     lst: lst[0]
>>> let.cdr = 
    
    lambda
    
     lst: lst[1:]
>>> eval('car(r10)+car(cdr(r10))', namespace(let))
>>> inv = Bindings()   
    
    # "Inverted list" function names
>>> inv.r10 = let.r10
>>> inv.car = 
    
    lambda
    
     lst: lst[-1]
>>> inv.cdr = 
    
    lambda
    
     lst: lst[:-1]
>>> eval('car(r10)+car(cdr(r10))', namespace(inv))
17

閉包

FP 中有個風趣的概念 -- 閉包。現實上,閉包對很多開辟人員都異常風趣,即便在如 Perl 和 Ruby 如許的無函數說話中也都包含閉包這一功效。並且,Python 2.1 今朝正想參加辭匯規模限制功效,這一功效將供給閉包的年夜部門功效。

甚麼 是閉包呢? Steve Majewski 比來在 Python 消息組供給了對這一概念的很好描寫:

    對象是附帶進程的數據……閉包是附帶數據的進程。

閉包就象是 FP 的 Jekyll 關於 OOP 的 Hyde (腳色或許也能夠對換)。閉包相似對象示例,是一種將一年夜批數據和功效封裝在一路的一種方法。

讓我們回到先前的處所懂得對象和閉包處理甚麼成績,同時懂得一下成績假如沒有這兩樣是若何處理的。函數前往的成果常常是由其盤算中應用的高低文決議的。最多見的 -- 也能夠是最顯著的 -- 指定高低文的辦法是向函數傳遞某些參數,告訴函數處置甚麼值。但有時刻“配景”和“遠景”參數有著實質的差別 -- 在這特准時刻函數正在處置的和函數為多段潛伏挪用而“設置裝備擺設”之間的差別。

當把重點放在遠景的時刻,有很多處置配景的辦法。個中一種是簡略“咬出槍彈”的辦法,在每次挪用的時刻傳遞函數須要的每個參數。這類辦法平日在挪用鏈中,只需在某些處所有能夠須要值,就會傳遞一些值(或帶有多成員的構造)。以下是一個小示例:
清單 4. 顯示 cargo 變量的 Python 部門

>>> 
    
    defa
    
    (n):
...   add7 = b(n)
...   
    
    return
    
     add7
...
>>> 
    
    defb
    
    (n):
...   i = 7
...   j = c(i,n)
...   
    
    return
    
     j
...
>>> 
    
    defc
    
    (i,n):
...   
    
    return
    
     i+n
...
>>> a(10)   
    
    # Pass cargo value for use downstream
17

在 cargo 示例的 b() 中, n 除起到傳遞到 c() 的感化外並沒有其他感化。另外一種辦法將應用全局變量:
清單 5. 顯示全局變量的 Python 部門

>>> N = 10
>>> 
    
    defaddN
    
    (i):
...   
    
    global
    
     N
...   
    
    return
    
     i+N
...
>>> addN(7)  
    
    # Add global N to argument
17
>>> N = 20
>>> addN(6)  
    
    # Add global N to argument
26

全局變量 N 在任何願望挪用 addN() 的時刻起感化,但沒有需要明白地傳遞全局配景“高低文”。另外一個更 Python 公用的技巧是將一個變量在界說時“解凍”入一個應用默許參數的函數:
清單 6. 顯示解凍變量的 Python 部門

>>> N = 10
>>> 
    
    defaddN
    
    (i, n=N):
...   
    
    return
    
     i+n
...
>>> addN(5)  
    
    # Add 10
15
>>> N = 20
>>> addN(6)  
    
    # Add 10 (current N doesn't matter)
16

解凍變量實質上就是閉包。某些數據被“附屬”於 addN() 函數。關於完全的閉包,當界說 addN() 的時刻,一切的數據在挪用的時刻都將可用。但是,在這個示例(或許很多更硬朗的示例)中,應用默許的參數就可以簡略的夠用了。 addN() 從未應用的變量其實不會對其盤算形成影響。

接著讓我們來看一個更接近真實成績的 OOP 辦法。年份的時光是我想起了那些“會面”作風的搜集各類數據的稅收法式 -- 不用有特定的次序 -- 終究應用全體數據來盤算。讓我們創立一個簡略的版本:
清單 7. Python 作風的稅收盤算類/示例

class
    
     TaxCalc:
  
    
    deftaxdue
    
    (self):
    
    
    return
    
     (self.income-self.deduct)*self.rate
taxclass = TaxCalc()
taxclass.income = 50000
taxclass.rate = 0.30
taxclass.deduct = 10000
    
    print
    
     "Pythonic OOP taxes due =", taxclass.taxdue()

在 TaxCalc 類(或其實例)中,能搜集一些數據 -- 可以以隨意率性次序 -- 一旦取得了所需的一切元素,就可以挪用這一對象的辦法來完成這一年夜批數據的盤算。一切一切都在實例中,並且,分歧示例攜帶分歧的數據。創立多示例和差別它們的數據的能夠性弗成能存在於"全局變量"或"解凍變量"辦法中。"cargo" 辦法能處置這個成績,但關於擴大的示例來講,我們看到它能夠是開端傳遞各類值的需要前提了。既然我們已講到這,留意傳遞新聞的 OPP 作風是若何處置的也異常風趣(Smalltalk 或 Self 與此相似,一些我應用的 OOP xBase 變量也是如斯):
清單 8. Smalltalk 作風 (Python) 的稅收盤算

class
    
     TaxCalc:
  
    
    deftaxdue
    
    (self):
    
    
    return
    
     (self.income-self.deduct)*self.rate
  
    
    defsetIncome
    
    (self,income):
    self.income = income
    
    
    return
    
     self
  
    
    defsetDeduct
    
    (self,deduct):
    self.deduct = deduct
    
    
    return
    
     self
  
    
    defsetRate
    
    (self,rate):
    self.rate = rate
    
    
    return
    
     self
    
    print
    
     "Smalltalk-style taxes due =", \
   TaxCalc().setIncome(50000).setRate(0.30).setDeduct(10000).taxdue()

用每一個 "setter" 來前往 self 使我們能把“現有的”器械看做是每一個辦法運用的成果。這與 FP 閉包辦法有很多風趣的類似點。

有了 Xoltar 對象包,我們就可以創立具有所希冀的歸並數據與函數特征的完全的閉包,同時還許可多段閉包(nee 對象)來包括分歧的包:
清單 9. Python 函數作風的稅收盤算

from
    
     functional 
    
    import
    
     *
taxdue    = 
    
    lambda
    
    : (income-deduct)*rate
incomeClosure = 
    
    lambda
    
     income,taxdue: closure(taxdue)
deductClosure = 
    
    lambda
    
     deduct,taxdue: closure(taxdue)
rateClosure  = 
    
    lambda
    
     rate,taxdue: closure(taxdue)
taxFP = taxdue
taxFP = incomeClosure(50000,taxFP)
taxFP = rateClosure(0.30,taxFP)
taxFP = deductClosure(10000,taxFP)
    
    print
    
     "Functional taxes due =",taxFP()
    
    print
    
     "Lisp-style taxes due =", \
   incomeClosure(50000,
     rateClosure(0.30,
       deductClosure(10000, taxdue)))()

我們界說的每個閉包函數都攜帶了函數規模內界說的任何值,然後將這些值綁定到函數對象的全局規模。但是,函數的全局規模看上去不用與現實模塊的全局規模雷同,同時與分歧閉包的“全局”規模也不雷同。閉包只是簡略地“攜帶數據”。

在示例中,我們應用了一些特別函數在閉包規模 (income、deduct、rate) 內放入了特定綁定。修正設計以在規模內放入任何綁定也異常簡略。我們還可以在示例中應用具有纖細差異的分歧函數作風,固然這只是為了好玩。第一個勝利的將附加值綁定入閉包規模內;使 taxFP 成為可變,這些“參加到閉包”的行可以隨意率性次序湧現。但是,假如要應用如 tax_with_Income 如許的弗成變稱號,就必需將綁定行依照必定次序分列,然後將後面的綁定傳遞到下一個。不管若何,一旦必須的一切被綁定入閉包的規模內,我們就挪用 "seeded" 函數。

第二種作風看上去更接近 Lisp,(對我來講更像圓括號)。假如不斟酌雅觀,第二種作風中產生了二件風趣的工作。第一件是稱號綁定完整被防止了。第二種作風是一個單一表達式而不應用語句(請參閱 第 1 部門,評論辯論為何如許會有成績)。

其它有關“Lisp 作風”閉包應用的風趣例子是其與上文提到的“Smalltalk 作風”新聞傳遞辦法有若干相似。二者積累了值和挪用 taxdue() 函數/辦法(假如沒有准確的數據,二者在這些原始版本中都將報錯)。“Smalltalk 作風”在每步之間傳遞對象,而“Lisp 作風”傳遞一個持續。但如果是更深一層懂得,函數和面向對象編程年夜部門都是如許。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved