V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  saximi  ›  全部回复第 7 页 / 共 11 页
回复总数  201
1  2  3  4  5  6  7  8  9  10 ... 11  
2017-09-01 20:20:40 +08:00
回复了 saximi 创建的主题 Python 请推荐关于 Scrapy 包用法的中文版学习资料
@dsg001 请问这个下载后不是可以直接阅读的,还要在 LINUX 下编译才行? 我直接输入 ./Makefile htmlhelp 结果报错了,WINDOWS 下可以让这些文件变成可读的么?
2017-09-01 20:13:44 +08:00
回复了 saximi 创建的主题 Python 请推荐关于 Scrapy 包用法的中文版学习资料
@toono 就算断网也有需要用爬虫的场合,只是对于我个人而言倒是工作上还没有用到,但是希望能多了解一门技术,所以排除困难也要学
2017-09-01 00:28:38 +08:00
回复了 saximi 创建的主题 Python 请教用 BeautifulSoup 和正则表达式爬取网站的两个问题
自己顶一下
2017-08-31 22:45:56 +08:00
回复了 saximi 创建的主题 Python 请推荐关于 Scrapy 包用法的中文版学习资料
@fiht 爬虫是自己学的,公司是断网的,唉
2017-08-31 20:21:59 +08:00
回复了 saximi 创建的主题 Python 请教用 BeautifulSoup 包抓取链接的问题
@Vernsu 是的,刚开始学,您也看过这本书吧,有遇到过这个问题么?书上的 BeautifulSoup(html)语句要修改成 BeautifulSoup(html,'lxml')才能正常运行,不知这是怎么回事。
2017-08-30 21:11:20 +08:00
回复了 saximi 创建的主题 Python 请问类名()何时会等于类名.__call__() ?
@janxin 谢谢,我还是有疑问,为何__call__加入 self 参数后就使得 Foo()会调用 Foo.__call__() ,否则这不会调用呢?
2017-08-30 20:27:06 +08:00
回复了 saximi 创建的主题 Python 请教用 BeautifulSoup 包抓取链接的问题
程序是在 VSCODE 下执行的,去掉 URL 中的空格后程序报错如下。

如果把“ BeautifulSoup(html)”这句改为“ BeautifulSoup(html,'lxml')”则不会报错,但是从出错信息来看好像是没有明确指定一个 parser 导致的。

请问 parser 是什么?以及在 VSCODE 下如何设置才能做到明确指定 parser,从而让“ BeautifulSoup(html)”这句代码运行不出错呢?感谢指点!


D:\Python\Python3\lib\site-packages\bs4\__init__.py:181: UserWarning: No parser was explicitly specified, so I'm using the best available HTML parser for this system ("lxml"). This usually isn't a problem, but if you run this code on another system, or in a different virtual environment, it may use a different parser and behave differently.

The code that caused this warning is on line 91 of the file C:\Users\A\.vscode\extensions\donjayamanne.python-0.7.0\pythonFiles\PythonTools\visualstudio_py_launcher.py. To get rid of this warning, change code that looks like this:
BeautifulSoup(YOUR_MARKUP})
to this:
BeautifulSoup(YOUR_MARKUP, "lxml")
markup_type=markup_type))
2017-08-30 20:17:54 +08:00
回复了 saximi 创建的主题 Python 请问《Programming Python 》这本书的中文版名字是什么?
@PythonAnswer 谢谢! 这是“龟爹亲自主笔的那份小册子”么?
2017-08-29 23:09:27 +08:00
回复了 saximi 创建的主题 Python 请问《Programming Python 》这本书的中文版名字是什么?
@PythonAnswer 上班的地方不能访问外网,所以都是把书籍下载下来后带到公司看。廖雪峰的在线文档确实很好,可惜无法离线阅读,不知有没有人将他的网站打包下来做成离线版本的,那就太好了!
2017-08-29 23:07:29 +08:00
回复了 saximi 创建的主题 Python 请问《Programming Python 》这本书的中文版名字是什么?
@PythonAnswer Mark Lutz 的《 Python 学习手册(第 4 版)》我看了,对于我这种入门小白来说,啰嗦点倒是好事,一个概念反复强调有助于记忆,呵呵。您说的“龟爹亲自主笔的那份小册子”这是什么材料?哪里可以下载呢?恳请指点,感谢!
2017-08-29 21:22:59 +08:00
回复了 saximi 创建的主题 Python VSCODE 下执行 urlopen 方法遇到的怪现象
自己顶一下,有人遇到过这种问题么?
2017-08-27 14:35:30 +08:00
回复了 saximi 创建的主题 Python 请教一个关于元类的问题
@keakon 谢谢,您看我以下的总结是否正确
1、type 类是 callable 的,这是一个基本定义,没有理由(并不是因为 type 类实现了__call__方法所以才 callable )。

2、因为所有其它类都是 type 类的实例,并且 type 类实现了__call__方法,所以其它类也默认实现了__call__方法,因此其它类都是 callable 的。所以类名()=类名.__call__()。

3、因为 Meta2 元类是 Meta1,声明 Meta2 的时候,执行到 class Meta2...这句的末尾时会调用 Meta1()生成一个 Meta1 实例。而执行 Meta1()等于分别执行 Meta1 的__new__和__init__,这就是声明 Meta2 时会执行 Meta1 的__new__和__init__的原因。

4、因为 Spam 元类是 Meta2,声明 Spam 的时候,执行到 class Spam...这句的末尾时会调用 Meta2()生成一个 Meta2 实例。
因为 Meta2 的元类是 Meta1,所以 Meta2 是 Meta1 的实例,即 Meta2=Meta1() => Meta2()=Meta1()()。而执行 Meta1()()等于依序执行 Meta1 的__new__、__init__和__call__。
因为之前声明 Meta2 的时候已经执行了 Meta1 的__new__和__init__,所以现在不会因为调用 Meta2()而重复执行 Meta1 的__new__和__init__,而是会直接执行 Meta1 的__call__。在执行 Meta1 的__call__时,因为 PYTHON 自身的机制,使得 type.__call__语句会转而去执行 Meta1 实例(即 Meta2)的__new__和__init__。

5、执行“ X=Spam()”生成 Spam 实例时,因为 Spam 的元类是 Meta2,所以 Spam=Meta2() => Spam()=Meta2()()。而执行 Meta2()()等于依序执行 Meta2 的__new__、__init__和__call__。
因为之前声明 Spam 的时候已经执行了 Meta2 的__new__和__init__,所以现在不会因为 Spam()而重复执行 Meta2 的__new__和__init__,而是会直接执行 Meta2 的__call__。在执行 Meta2 的__call__时,调用了 type.__call__(meta),值得注意的是,因为之前 Meta2()已经执行完毕,所以 Spam 对象已经生成,所以 type.__call__的参数 meta 其实就是 Spam 对象,而不是 Meta2 对象。
2017-08-27 11:26:46 +08:00
回复了 saximi 创建的主题 Python 请教一个关于元类的问题
@keakon 关于您说的这句话“ Meta2 是 callable,不是因为它定义了 __call__ 方法,而是它的父类( Meta1 )定义了 __call__ 方法”,我查了一些资料,builtin.py 中对 callable()的定义如下:

```
def callable(p_object): # real signature unknown; restored from __doc__
"""
callable(object) -> bool

Return whether the object is callable (i.e., some kind of function).
Note that classes are callable, as are instances with a __call__() method.
"""
return False

```

这个定义是否可以理解为类都是 callable 的,而实例必须实现了__call__方法后才是 callable 的?
单从这个说明来看,并没有特意提到只有当元类定义了__call__方法后,元类的子类才是 callable 的吧?毕竟元类的子类本身就是类,所以本身就是 callable,而不需要通过元类来判断?
2017-08-27 01:38:37 +08:00
回复了 saximi 创建的主题 Python 请教一个关于元类的问题
@keakon 感谢指点,我先去学习一下在你个人网站上的文章。另外,调用元类的 type.__call__方法时等同于调用元类的子类的 new 和 init 方法。关于这一点我目前是硬记的,不知要如何去理解。
2017-08-26 23:30:15 +08:00
回复了 saximi 创建的主题 Python 请教一个关于元类的问题
@keakon 非常感谢您详细耐心的解答,关于您的说明,我还有两个疑问:
1、Meta2 因为声明了 call 方法,所以是个 callable 对象,定义 Spam 时会调用 Meta2.__call__。同样的,Meta1 也是个 callable 对象,那为何声明 Meta2 时不是去调用 Meta1.__call__而却是去调用 Meta1 的 new 和 init 方法呢?
2、声明 Spam 时调用了 Meta2.__call__,为何这个调用会被转变成 Meta1.__call__,这是基于什么原理呢?
万分感谢!
2017-08-25 00:47:25 +08:00
回复了 saximi 创建的主题 Python 一打开 Visula Studio Code 就报这个错,请教如何解决?
@Tyanboot 感谢指点!
2017-08-25 00:35:48 +08:00
回复了 saximi 创建的主题 Python 请问这段代码错在哪里呢?
@ivechan 谢谢,我搞清楚 metaclass 的参数了,是这几个(self, what, bases, dict),代码也改对了。
但是我进一步把程序改成如下所示就出错了。
```
class F(type):
def __init__(self,what,bases=None,dict=None):
print("F init")
def __call__(self):
print("F call")

class C2(F):
pass

print("begin")
c2=C2()
print("end")

```
报错如下:
c2=C2()
TypeError: type.__new__() takes exactly 3 arguments (0 given)

这个问题在哪里呢?
2017-08-25 00:33:15 +08:00
回复了 saximi 创建的主题 Python 一打开 Visula Studio Code 就报这个错,请教如何解决?
@hactrox 谢谢,我准备装一个 Git,但是我在 pypi.python.org/pypi 上用 git 做关键字可以找到很多包,应该装哪个呢?
2017-08-24 22:43:48 +08:00
回复了 saximi 创建的主题 Python 一打开 Visula Studio Code 就报这个错,请教如何解决?
@Marfal 那提示的错误信息要如何才能解决呢?如果我不想装 Git 的话
2017-08-24 22:02:56 +08:00
回复了 saximi 创建的主题 Python 一打开 Visula Studio Code 就报这个错,请教如何解决?
@TabGre 不明白,从字面上看好像是 Git 没安装,难道 Git 是必须要安装的么?
1  2  3  4  5  6  7  8  9  10 ... 11  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   793 人在线   最高记录 6543   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 20ms · UTC 20:39 · PVG 04:39 · LAX 13:39 · JFK 16:39
Developed with CodeLauncher
♥ Do have faith in what you're doing.