程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> 其他數據庫知識 >> MSSQL >> SQL_Server全文索引的用法解析

SQL_Server全文索引的用法解析

編輯:MSSQL

SQL_Server全文索引的用法解析。本站提示廣大學習愛好者:(SQL_Server全文索引的用法解析)文章只能為提供參考,不一定能成為您想要的結果。以下是SQL_Server全文索引的用法解析正文


思慮一下上面的代碼片斷:
 

def foo(numbers=[]):
  numbers.append(9)
  print numbers

在這裡,我們界說了一個 list (默許為空),給它參加9而且打印出來。
 

>>> foo()
[9]
>>> foo(numbers=[1,2])
[1, 2, 9]
>>> foo(numbers=[1,2,3])
[1, 2, 3, 9]

看起來還行吧?可是當我們不輸出number 參數來挪用 foo 函數時,奇異的工作產生了:
 

>>> foo() # first time, like before
[9]
>>> foo() # second time
[9, 9]
>>> foo() # third time...
[9, 9, 9]
>>> foo() # WHAT IS THIS BLACK MAGIC?!
[9, 9, 9, 9]

那末,這是神馬情形?直覺告知我們不管我們不輸出 number 參數挪用 foo 函數若干次,這裡的9應當被分派進了一個空的 list。這是錯的!在Python裡,函數的默許值其實函數界說的時刻實例化的,而不是在挪用的時刻。

那末我們依然會問,為何在挪用函數的時刻這個默許值卻被付與了分歧的值?由於在你每次給函數指定一個默許值的時刻,Python都邑存儲這個值。假如在挪用函數的時刻重寫了默許值,那末這個存儲的值就不會被應用。當你不重寫默許值的時刻,那末Python就會讓默許值援用存儲的值(這個例子裡的numbers)。它其實不是將存儲的值拷貝來為這個變量賦值。這個概念能夠對初學者來講,懂得起來會比擬費勁,所以可以如許來懂得:有兩個變量,一個是外部的,一個是以後運轉時的變量。實際就是我們有兩個變量來用雷同的值停止交互,所以一旦 numbers 的值產生變更,也會轉變Python外面保留的初始值的記載。

那末處理計劃以下:
 

def foo(numbers=None):
  if numbers is None:
    numbers = []
  numbers.append(9)
  print numbers

平日,當人們聽到這裡,年夜家會問另外一個關於默許值的成績。思慮上面的法式:
 

def foo(count=0):
  count += 1
  print count

當我們運轉它的時刻,其成果完整是我們希冀的:
 

>>> foo()
1
>>> foo()
1
>>> foo(2)
3
>>> foo(3)
4
>>> foo()
1

這又是為啥呢?其機密不在與默許值被賦值的時刻,而是這個默許值自己。整型是一種弗成變的變量。跟 list 類型分歧,在函數履行的進程中,整型變量是不克不及被轉變的。當我們履行 count+=1 這句話時,我們並沒有轉變 count 這個變量原本的值。而是讓 count 指向了分歧的值。可是,當我們履行 numbers.append(9) 的時刻,我們轉變了原本的 list 。因此招致了這類成果。

上面是在函數裡應用默許值時會碰著的另外一種雷同成績:
 

def print_now(now=time.time()):
  print now

跟後面一樣,time.time() 的值是可變的,那末它只會在函數界說的時刻盤算,所以不管挪用若干次,都邑前往雷同的時光 — 這裡輸入的時光是法式被Python說明運轉的時光。

>>> print_now()
1373121487.91
>>> print_now()
1373121487.91
>>> print_now()
1373121487.91

* 這個成績和它的處理計劃在 Python 2.x 和 3.x 裡都是相似的,在Python 3.x 外面獨一的分歧,是外面的print 表達式應當是函數挪用的方法(print(numbers))。

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