2017-07-15 103 views
1

我使用相同的字符串使用python help命令,但它给出了不同的结果。Python - help()命令 - 相同的字符串不同的结果

代码:

from BeautifulSoup import BeautifulSoup 

link = BeautifulSoup("bilateralFilter") 
title = link.getText() 

string = "cv2." + title + "" 
string2 = "cv2.bilateralFilter" 

if string == string2: 
    print "----- Output 1 -------------" 
    print(type(string)) 
    help(string) 
    print "----- Output 2 -------------" 
    print(type(string2)) 
    help(string2) 

控制台输出:

----- Output 1 ------------- 
<type 'unicode'> 
Help on unicode object: 

class unicode(basestring) 
| unicode(object='') -> unicode object 
| unicode(string[, encoding[, errors]]) -> unicode object 
... 
----- Output 2 ------------- 
<type 'str'> 
Help on built-in function bilateralFilter in cv2: 

cv2.bilateralFilter = bilateralFilter(...) 
    bilateralFilter(src, d, sigmaColor, sigmaSpace[, dst[, borderType]]) -> dst 

因此,如果是相同的字符串的帮助不应该返回相同?

+1

你确定已经分配了'string2 =“cv2.bilateralFilter”'而不是'string2 = cv2.bilateralFilter'吗? – user2357112

+0

无法重现,我得到相同的结果。 – npit

回答

3
  1. titleunicode对象。
  2. 因此"cv2." + title + ""也是一个unicode对象。
  3. help显然只接受非unicode str s查找名称,如string2
  4. 所以stringstring2实际上是不同的类型,但strunicode仍然可以比较相等。
  5. 您可以使用title = u'bilateralFilter'string = u"cv2.bilateralFilter"重现该行为。
+0

这是真的!此外,如果我做'string = str(“cv2。”+ title +“”)'它给出了相同的结果 –

+0

@JoãoCartucho这是一个经典案例,如果您在发布前尝试创建[mcve],您可以自己解决问题一个问题。 –

+0

你是完全正确的,对不起noobness –

相关问题