AttributeError:模块“urllib”没有属性“parse”

2024-05-23 05:44:03 发布

您现在位置:Python中文网/ 问答频道 /正文

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) 

也行。因为烧瓶?

为什么我不再犯错了?是虫子吗?


Tags: no代码fromimportflaskparse错误attribute
2条回答

urllib包仅用作命名空间。在urllib下面还有其他模块,比如requestparse
对于优化,导入urllib不会导入它下面的其他模块。因为这样做会消耗处理器周期和内存,但人们可能不需要这些其他模块。
必须根据需要分别导入urllib下的各个模块。

试试这些,第一个失败,第二个成功,因为当导入flask时,flask本身导入urllib.parse

python3 -c 'import urllib, sys;print(sys.modules["urllib.parse"])'
python3 -c 'import flask, sys;print(sys.modules["urllib.parse"])'

要使代码1工作,您需要导入urllib.parse模块,而不是函数quote。这样您就可以使用完整的模块限定符来引用quote函数。使用这种方法,您可以使用parse模块中定义的任何函数:

import urllib.parse
s = urllib.parse.quote('"')
print(s)

代码2可以工作,因为您只导入parse函数并在没有模块限定符的情况下引用它,因为它不是在模块的上下文中导入的。使用这种方法,您只能使用从parse模块显式导入的函数。

代码3工作,因为flask隐式导入urllib.parse模块。parse模块在urllib模块上下文中可用。一旦导入urlliburllib.parse就变得很容易使用,您可以像在代码1中那样使用它

相关问题 更多 >

    热门问题