Python3.5.2
代码1
import urllib
s = urllib.parse.quote('"')
print(s)
它给出了这个错误:
AttributeError: module 'urllib' has no attribute 'parse'
代码2
from urllib.parse import quote
# import urllib
# s = urllib.parse.quote('"')
s = quote('"')
print(s)
它工作。。。
代码3
from flask import Flask
# from urllib.parse import quote
# s = quote('"')
import urllib
s = urllib.parse.quote('"')
print(s)
也行。因为烧瓶?
为什么我不再犯错了?是虫子吗?
urllib
包仅用作命名空间。在urllib
下面还有其他模块,比如request
和parse
。对于优化,导入
urllib
不会导入它下面的其他模块。因为这样做会消耗处理器周期和内存,但人们可能不需要这些其他模块。必须根据需要分别导入
urllib
下的各个模块。试试这些,第一个失败,第二个成功,因为当导入
flask
时,flask
本身导入urllib.parse
。要使代码1工作,您需要导入
urllib.parse
模块,而不是函数quote
。这样您就可以使用完整的模块限定符来引用quote
函数。使用这种方法,您可以使用parse
模块中定义的任何函数:代码2可以工作,因为您只导入
parse
函数并在没有模块限定符的情况下引用它,因为它不是在模块的上下文中导入的。使用这种方法,您只能使用从parse
模块显式导入的函数。代码3工作,因为
flask
隐式导入urllib.parse
模块。parse
模块在urllib
模块上下文中可用。一旦导入urllib
,urllib.parse
就变得很容易使用,您可以像在代码1中那样使用它相关问题 更多 >
编程相关推荐