最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

pycharm的python_stubs問題

 更新時(shí)間:2020年04月08日 16:24:39   作者:pierre94  
這篇文章主要介紹了pycharm的python_stubs問題,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧

最近在寫udp socket程序時(shí),對幾個(gè)函數(shù)(如sendto)command+左擊時(shí),發(fā)現(xiàn)跳轉(zhuǎn)到了這個(gè)python文件里面去了。(默認(rèn)應(yīng)該是到函數(shù)源碼那里)

/PyCharm2018.1/python_stubs/160944109/_socket.py

定義了如下的偽函數(shù)

 def send(self, data, flags=None): # real signature unknown; restored from __doc__
 """
 send(data[, flags]) -> count

 Send a data string to the socket. For the optional flags
 argument, see the Unix manual. Return the number of bytes
 sent; this may be less than len(data) if the network is busy.
 """
 pass

 def sendall(self, data, flags=None): # real signature unknown; restored from __doc__
 """
 sendall(data[, flags])

 Send a data string to the socket. For the optional flags
 argument, see the Unix manual. This calls send() repeatedly
 until all data is sent. If an error occurs, it's impossible
 to tell how much data has been sent.
 """
 pass

google了下,發(fā)現(xiàn)已經(jīng)有人在stackoverflow提出相關(guān)問題,我這里簡單提煉一下。

https://stackoverflow.com/questions/24266114/pycharm-what-is-python-stubs

什么情況下會出現(xiàn)跳轉(zhuǎn)到python_stubs?

當(dāng)我們調(diào)用的函數(shù)是內(nèi)置函數(shù)或僅二進(jìn)制存在的函數(shù)(沒有py文件,只有pyc等)時(shí),pycharm會對某個(gè)版本進(jìn)行硬編碼而生成的偽函數(shù)(實(shí)際不是調(diào)用的這個(gè),只是方便我們做開發(fā))。

想一想pycharm為了方便我們,真是煞費(fèi)苦心。

補(bǔ)充知識:Python3自定義日志類 mylog

大家還是直接看代碼吧!

#encoding=utf-8

import os, sys
import datetime
import time


class Mylog(object):

 # 根文件夾
 root_dir = sys.path[0]
 # 根目錄
 root_path = sys.path[0] + os.path.sep
 # 系統(tǒng)目錄分割線
 sys_sep = os.path.sep
 # 配置
 option = {
 # 日志級別: 0:全部,1:調(diào)試,2:警告,3:錯(cuò)誤
 'level': 0,
 # 是否開啟,如果關(guān)閉則不輸出也不記錄日志
 'is_open': True,
 # 是否print輸出
 'is_print': True,
 # 是否記錄到日志文件
 'is_write': True,
 # 是否在每條日志內(nèi)容前面加前綴
 'is_prefix': True,
 # 如果開啟了每條日志前加前綴,設(shè)置日志級別為1的前綴
 'level_1_prefix': 'Test: ',
 # 如果開啟了每條日志前加前綴,設(shè)置日志級別為2的前綴
 'level_2_prefix': 'Warning: ',
 # 如果開啟了每條日志前加前綴,設(shè)置日志級別為3的前綴
 'level_3_prefix': 'Error: ',
 # 存放日志文件的根文件夾名稱
 'root_dir_name': 'mylog',
 # 自定義存放日志文件的文件名稱,此文件夾是在 root_dir_name 文件夾下
 'dir_name': ''
 }

 def __init__(self, config=None):
 if config is not None:
  self.option.update(dict(config))

 # 日志保存的文件夾(全路徑)
 save_dir = self.root_path + self.option['root_dir_name']

 # 創(chuàng)建文件夾
 if os.path.isdir(save_dir) is not True:
  os.mkdir(save_dir)
 if len(self.option['dir_name']) > 0:
  save_dir += self.sys_sep + self.option['dir_name']
  if os.path.isdir(save_dir) is not True:
  os.mkdir(save_dir)

 self.save_dir = save_dir
 self.save_path = save_dir + self.sys_sep

 '''
 輸入日志/記錄日志
 '''
 def log(self, content='', level=0):
 self._print_log(content, level)
 self._write_log(content, level)

 '''
 輸入日志
 '''
 def _print_log(self, content, level):
 if self.option['is_open'] is True and self.option['is_print'] is True:
  if self.option['level'] == 0 or self.option['level'] == level:
  if level > 0:
   content = self.option['level_' + str(level) + '_prefix'] + content
  print(content)

 '''
 記錄日志
 '''
 def _write_log(self, content, level):
 if self.option['is_open'] is True and self.option['is_print'] is True:
  if self.option['level'] == 0 or self.option['level'] == level:
  if self.option['is_prefix'] is True:
   today = datetime.date.today()
   file_name = str(today) + '.log'
   now = time.strftime("%H:%M:%S")
   log_file = self.save_path + file_name
   if level > 0:
   content = self.option['level_' + str(level) + '_prefix'] + content
   if os.path.isfile(log_file):
   save_file = open(log_file, 'a')
   else:
   save_file = open(log_file, 'w')
   save_file.write(str(now) + "\r\n" + content + "\r\n")
   save_file.close()


 

**重點(diǎn)內(nèi)容
#!/usr/bin/env python
#-*- coding: GBK -*-
__author__ = 'DiaoHuabin'

import logging
import getpass
import sys

#定義MyLog類
class MyLog(object):
 '''這個(gè)類用于創(chuàng)建一個(gè)自用的log'''
 def __init__(self): #類MyLog的構(gòu)造函數(shù)
 user = getpass.getuser() #返回用戶的登錄名
 self.logger = logging.getLogger(user) #返回一個(gè)特定名字的日志
 self.logger.setLevel(logging.DEBUG) #對顯示的日志信息設(shè)置一個(gè)閾值低于DEBUG級別的不顯示
 logFile = './'+sys.argv[1][0:-3] + '.log' # 日志文件名
 formatter = logging.Formatter('%(asctime)-12s $(levelname)-8s %(name)-10s %(message)-12s')

 '''日志顯示到屏幕上并輸出到日志文件內(nèi)'''
 logHand = logging.FileHandler(logFile) #輸出日志文件,文件名是logFile
 logHand.setFormatter(formatter) #為logHand以formatter設(shè)置格式
 logHand.setLevel(logging.ERROR) #只有錯(cuò)誤才被記錄到logfile中

 logHandSt = logging.StreamHandler() #class logging.StreamHandler(stream=None)
 # 返回StreamHandler類的實(shí)例,如果stream被確定,使用該stream作為日志輸出,反之,使用
 #sys.stderr
 logHandSt.setFormatter(formatter) #為logHandSt以formatter設(shè)置格式

 self.logger.addHandler(logHand) #添加特定的handler logHand到日志文件logger中
 self.logger.addHandler(logHandSt) #添加特定的handler logHandSt到日志文件logger中

 '''日志的5個(gè)級別對應(yīng)以下的五個(gè)函數(shù)'''
 def debug(self,msg):
 self.logger.debug(msg) #Logs a message with level DEBUG on this logger.
 # The msg is the message format string

 def info(self,msg):
 self.logger.info(msg)

 def warn(self,msg):
 self.logger.warn(msg)

 def error(self,msg):
 self.logger.error(msg)

 def critical(self,msg):
 self.logger.critical(msg)

if __name__ == '__main__':
 mylogw = MyLog()
 mylogw.debug("I'm debug")
 mylogw.info("I'm info")
 mylogw.warn("I'm warn")
 mylogw.error("I'm error")
 mylogw.critical("I'm critical")

以上這篇pycharm的python_stubs問題就是小編分享給大家的全部內(nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • python通過第三方庫操作PDF文件的幾種常見方法

    python通過第三方庫操作PDF文件的幾種常見方法

    Python是一種高級編程語言,主要用于數(shù)據(jù)分析、機(jī)器學(xué)習(xí)、圖像處理等領(lǐng)域,在PDF文件處理方面,Python有許多強(qiáng)大的庫和工具,這篇文章主要給大家介紹了關(guān)于python通過第三方庫操作PDF文件的幾種常見方法,需要的朋友可以參考下
    2024-02-02
  • Python將字典轉(zhuǎn)換為XML的方法

    Python將字典轉(zhuǎn)換為XML的方法

    這篇文章主要介紹了Python將字典轉(zhuǎn)換為XML的方法,文中講解非常細(xì)致,代碼幫助大家更好的理解和學(xué)習(xí),感興趣的朋友可以了解下
    2020-08-08
  • python棧實(shí)現(xiàn)進(jìn)制轉(zhuǎn)換的示例詳解

    python棧實(shí)現(xiàn)進(jìn)制轉(zhuǎn)換的示例詳解

    棧(Stack)是計(jì)算機(jī)科學(xué)中常用的數(shù)據(jù)結(jié)構(gòu),具有眾多實(shí)際應(yīng)用,其中之一是使用棧來實(shí)現(xiàn)進(jìn)制轉(zhuǎn)換,將一個(gè)數(shù)字從一種進(jìn)制表示轉(zhuǎn)換為另一種進(jìn)制表示,本文將深入研究棧的原理,以及如何使用Python實(shí)現(xiàn)十進(jìn)制到二進(jìn)制、八進(jìn)制和十六進(jìn)制的進(jìn)制轉(zhuǎn)換,需要的朋友可以參考下
    2023-11-11
  • python實(shí)現(xiàn)換位加密算法的示例

    python實(shí)現(xiàn)換位加密算法的示例

    今天小編就為大家分享一篇python實(shí)現(xiàn)換位加密算法的示例,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-10-10
  • Python實(shí)現(xiàn)自動訪問網(wǎng)頁的例子

    Python實(shí)現(xiàn)自動訪問網(wǎng)頁的例子

    今天小編就為大家分享一篇Python實(shí)現(xiàn)自動訪問網(wǎng)頁的例子,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-02-02
  • Python中的pickle模塊常用函數(shù)

    Python中的pickle模塊常用函數(shù)

    這篇文章主要介紹了Python中的pickle模塊常用函數(shù),pickle模塊使用的數(shù)據(jù)格式是python專用的,能夠把python對象直接保存到文件,而不需要轉(zhuǎn)化為字符串,也不用底層的文件訪問操作把它們寫入到一個(gè)二進(jìn)制文件中,需要的朋友可以參考下
    2023-09-09
  • python實(shí)現(xiàn)文件+參數(shù)發(fā)送request的實(shí)例代碼

    python實(shí)現(xiàn)文件+參數(shù)發(fā)送request的實(shí)例代碼

    這篇文章主要介紹了python實(shí)現(xiàn)文件+參數(shù)發(fā)送request的實(shí)例代碼,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-01-01
  • Python實(shí)現(xiàn)二分查找與bisect模塊詳解

    Python實(shí)現(xiàn)二分查找與bisect模塊詳解

    二分查找又叫折半查找,二分查找應(yīng)該屬于減治技術(shù)的成功應(yīng)用。python標(biāo)準(zhǔn)庫中還有一個(gè)灰常給力的模塊,那就是bisect。這個(gè)庫接受有序的序列,內(nèi)部實(shí)現(xiàn)就是二分。下面這篇文章就詳細(xì)介紹了Python如何實(shí)現(xiàn)二分查找與bisect模塊,需要的朋友可以參考借鑒,下面來一起看看吧。
    2017-01-01
  • Python之串口收發(fā)的異步程序

    Python之串口收發(fā)的異步程序

    這篇文章主要介紹了Python之串口收發(fā)的異步程序,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-09-09
  • Mac下Supervisor進(jìn)程監(jiān)控管理工具的安裝與配置

    Mac下Supervisor進(jìn)程監(jiān)控管理工具的安裝與配置

    這篇文章主要介紹了Mac下Supervisor進(jìn)程監(jiān)控管理工具的安裝與配置,Supervisor 是由 Python 寫成,是一個(gè)類 unix 操作系統(tǒng)下的進(jìn)程監(jiān)控管理工具,本文講解MAC系統(tǒng)下的配置與安裝,需要的朋友可以參考下
    2014-12-12

最新評論

六安市| 舞阳县| 霍林郭勒市| 海伦市| 伊金霍洛旗| 定远县| 星子县| 武宣县| 连州市| 株洲市| 龙泉市| 安溪县| 定南县| 大余县| 仙居县| 萨嘎县| 城固县| 石狮市| 金山区| 公主岭市| 渝北区| 同德县| 金川县| 靖安县| 泰兴市| 泸西县| 天门市| 横山县| 固阳县| 闽侯县| 壶关县| 文山县| 高尔夫| 唐河县| 叙永县| 黑山县| 桑植县| 苍梧县| 武鸣县| 会同县| 简阳市|