V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
NBurton
V2EX  ›  Python

我用 Pycharm pro 开发,为什么有些代码没有自动提示,但可以执行

  •  
  •   NBurton · 2017-03-06 14:55:21 +08:00 · 3017 次点击
    这是一个创建于 2810 天前的主题,其中的信息可能已经有所发展或是发生改变。

    Python3.6 + Pycharm pro 2016.3.2 已经把各种自动补全、代码提示都打开了

    例如: threading.Lock 提示是变量, threading.RLock()是方法, lock=threading.Lock(); lock.acquire() 是提示不出来的,但执行没问题,

    再比如:安装了 PyMySQL pymysql.connect()完全不提示。

    请问这是为什么?

    4 条回复    2017-03-08 05:51:54 +08:00
    billgreen1
        1
    billgreen1  
       2017-03-06 21:36:00 +08:00
    Pycharm 需要索引你的安装包才会提示的
    NBurton
        2
    NBurton  
    OP
       2017-03-06 22:03:07 +08:00
    那为什么 threading 模块下有的可以提示,有的不行呢
    crazypig14
        3
    crazypig14  
       2017-03-07 10:52:06 +08:00
    pycharm 的类型推断逻辑 参考这个
    https://www.jetbrains.com/help/pycharm/2016.3/type-hinting-in-pycharm.html

    Lock 是 threading 下的一个类,应该是这个类描述没遵循任何一条规则,所以推断不出来。。
    NoAnyLove
        4
    NoAnyLove  
       2017-03-08 05:51:54 +08:00
    这是因为:

    * threading 是对_thread 模块的高级封装
    * 看这里: https://github.com/python/cpython/blob/master/Lib/threading.py#L33

    ```python
    _allocate_lock = _thread.allocate_lock
    ```

    * 还有这里: https://github.com/python/cpython/blob/master/Lib/threading.py#L72

    ```python
    Lock = _allocate_lock
    ```

    因为 Python 中所有东西都是对象,所以,其实 PyCharm 并没有错。 threading.Lock 其实只是_thread.Lock 的一个别名。而_thread.Lock 是 C 写的 Python 对象,具体根据系统不同调用系统的信号量

    至于 RLock ,看这里 https://github.com/python/cpython/blob/master/Lib/threading.py#L74
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5950 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 02:06 · PVG 10:06 · LAX 18:06 · JFK 21:06
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.