首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

为什么pycharm在一个类或函数之外没有给出“预期类型”的警告?

PyCharm在一个类或函数之外没有给出“预期类型”的警告的原因是因为PyCharm默认只对函数和方法体进行类型检查,而不会对类定义或者类之外的代码进行类型检查。

在静态类型检查中,PyCharm使用了类型提示和类型注解来推断和检查变量和函数的类型。当在函数或方法体内部使用类型注解时,PyCharm可以根据注解提供类型警告和错误检查。

然而,对于类定义或类之外的代码,PyCharm并不会进行类型检查。这是因为在类定义或类之外的代码中,变量的类型通常是动态确定的,并且可能会受到各种因素的影响。因此,PyCharm无法准确地确定变量的预期类型,并给出警告。

如果你希望对类定义或类之外的代码进行类型检查,可以使用其他工具,如mypy,来进行静态类型检查。mypy是一个独立的静态类型检查器,可以在Python代码中执行类型检查,包括类定义和其他代码部分。

总结起来,PyCharm在一个类或函数之外没有给出“预期类型”的警告是因为它默认只对函数和方法体进行类型检查,对于类定义或类之外的代码,PyCharm不会进行类型检查。如果需要对类定义或类之外的代码进行类型检查,可以使用其他工具如mypy来进行静态类型检查。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

类型注解

前言类型注解为我们提供了一种清晰的方式来描述变量和函数的预期类型,使得代码的意图更加明确。本章详细讲解了类型注解在 Python 中的使用,包括变量和函数的类型注解。...然而,当我们定义一个接收参数的函数,比如func(data)时,PyCharm没有提供任何提示。这是因为此时PyCharm不确定data的具体类型,因此无法推断出它能够调用的方法或属性。...】元组类型设置类型详细注解,需要为每一个元素都单独标注类型字典类型设置类型详细注解,需要指定两个类型:一个是键的类型,另一个是值的类型在无法直接判断变量类型时,才需为其添加类型注解# 容器类详细注解my_list...例如:my_list:list[str]=[1,2,3]运行结果:二、函数的类型注解①形参注解如下图示,在编写函数(方法),使用形参data的时候,PyCharm工具没有提供任何提示;在调用函数(方法)...这是因为我们在定义函数(方法)时,没有给形参进行注解。

12021

最全Pycharm教程(2)——代码风格

这部分教程并不会介绍如何使用Python进行编程,更多有关Python编程的知识请参照:Python编程2、准备工作在开始之前,请确认一下情况:(1)安装了Pycharm2.7或更高版本的软件(2)已经新建了一个...正如你所见,在Production作用域为红色波浪线,在Test作用域为绿色波浪线。9、错误提示的高亮代码显示除此之外,Pycharm还会根据配置文件控制,对当前的一些错误进行高亮显示处理。...首先,创建一个类实例:?OK,Pycharm成功创建出了一个类:?接下来我们向类中添加一个成员方法,为了达到这个目的,首先需要在类实例后面输入一个点号,然后键入成员函数名称。...然后在函数体中手动输入源码,例如我们输入一段计算二次方程判别式的程序,其中有一个函数sqrt()来自math模块,但目前尚未被包含,我们继续输入,看Pycharm如何解决这个问题:?...接下来在函数调用的过程中,若出现参数类型不匹配的情况,Pycharm会依据注释文档来给出响应的错误提示信息:?更多有关Pycharm注释文档的信息参见: type hinting。

2.8K20
  • Python入门之PyCharm的快捷键与常用设置和扩展(Mac系统)

    (补全任何类、方法、变量) ⌃⇧Space 智能代码补全(过滤器方法列表和变量的预期类型) ⌘⇧↩ 自动结束代码,行末自动添加分号 ⌘P 显示方法的参数信息 ⌃J, Mid. button click ...快速查看文档 ⇧F1 查看外部文档(在某些代码上会触发打开浏览器显示相关文档) ⌘+鼠标放在代码上 显示代码简要信息 ⌘F1 在错误或警告处显示具体描述信息 ⌘N, ⌃↩, ⌃N 生成代码(getter...,没有则加上断点) ⌘⇧F8 查看断点信息 Navigation(导航) ⌘O 查找类文件 ⌘⇧O 查找所有类型文件、打开文件、打开目录,打开目录需要在输入的内容前面或后面加一个反斜杠/ ⌘⌥O 前往指定的变量...,在某个调用的方法名上使用会跳到具体的实现处,可以跳过接口 ⌥ Space, ⌘Y 快速打开光标所在方法、类的定义 ⌃⇧B 跳转到类型声明处 ⌘U 前往当前光标所在方法的父类的方法 / 接口定义 ⌃↓...) ⌃H 显示当前类的层次结构 ⌘⇧H 显示方法层次结构 ⌃⌥H 显示调用层次结构 F2 / ⇧F2 跳转到下一个/上一个突出错误或警告的位置 F4 / ⌘↓ 编辑/查看代码源 ⌥ Home 显示到当前文件的导航条

    4.4K80

    听GPT 讲Rust源代码--compiler(43)

    当一个结构体实现了 Drop trait,但是没有任何释放资源的代码时,发出警告,因为这意味着 Drop 方法没有发挥作用,很可能是一个错误。...expect.rs文件还实现了一个名为Expectation的枚举类型,用于表示预期和错误情况。该枚举类型包含以下变体: NoExpectation:表示没有任何预期。...在处理标识符时,当遍历到一个字符时,根据字符的脚本集使用方式,可以判断它是否是非ASCII字符,从而给出相应的警告。...如果是fallible类型的操作,那么判断是否在for循环的代码块中对失败情况进行了处理。 如果没有对失败情况进行处理,则会发出警告,提醒开发者在处理fallible操作时必须考虑失败的情况。...但是,如果我们不小心在panic宏中使用了一个不可格式化的类型或没有提供格式化字符串,则编译器将会发出警告。 该lint规则的目的是帮助开发者检测这种类型的潜在错误。

    9910

    如何处理前任程序员留下的代码

    原作者的自我意识:我们即将接触的代码是由另一个开发人员所编写的,另一种风格、约束、期限和个人生活(消耗他或她工作之外的时间)。...有没有什么你想放到代码里,但当时没有做的?为什么? 始终要保持谦虚的态度,积极寻求原作者真正的答案。几乎每个开发人员都碰到过这样的场景,他或她看着别人的代码,自问自答:“为什么他/她要这样做?...在软件方面,这个理论意味着如果开发人员发现代码已经是一团糟,那么人的本性会让他弄坏代码。从本质上说,我们心里想的是(即使心理活动没有这么丰富),“既然最后一个人不在乎这代码,我为什么要在乎?”...如果我们稍后需要这部分代码,那么在存储库中,我们总是可以从先前的提交中检索它。如果存在无法直接解决的警告(例如原始类型警告),那么使用@SuppressWarnings注解注释该调用或方法。...这样可以确保我们对代码进行过仔细的考虑:它们不是因为疏忽而发出的警告,而是我们明确地注意到了警告(如原始类型)。 一旦我们删除或明确地禁止所有警告,那么我们就必须确保代码保持免除警告。

    59320

    python代码分析工具pylint

    Pylint 是一个 Python 工具,除了平常代码分析工具的作用之外,它提供了更多的功能:如检查一行代码的长度,变量名是否符合命名标准,一个声明过的接口是否被真正实现等等。...中设置 Arguments:FilePath Pycharm中指定配置文件方式 Pycharm中添加参数屏蔽自定类型的检查 --disable=W,E,R,C 使用案例 运行 pylint [...__init__() 忽略文件中某个函数执行类型(C,R,W,E,F)不进行检查 对external.py中’W,R,E’类型不检查,在文件中类下函数或普通函数下设置: # pylint: disable...__init__() 忽略文件中某个类执行类型(C,R,W,E,F)不进行检查 对external.py中’W,R,E’类型不检查,在文件中类下面设置: # pylint: disable=C,F,W,...输出的结果包括:与规范冲突的位置(行列)、违反的规范编号以及具体的内容提示,会针对检测结果给出一个评分,总分10分。

    84010

    教师妹学python之八:调试代码

    第六章介绍到完美的程序是不存在的,程序存在缺陷是常态,那么我们如何预先将潜在的缺陷给揪出来fix掉呢? 我们先思考一下这个问题,为什么程序运行出现错误呢?...很幸运,Pycharm自身的Debug模式就很强大且高效,所以本章就介绍一下如何使用Pycharm调试我们的程序。...8.1 熟悉控制台 Part One: 调试按钮 Part Two: 断点 如果你并不完全清楚缺陷来自哪里,异常可能毁掉您的一天,所以我们可以尝试在可能出现错误的地方打断点观察程序运行此处时,此时的数据是否符合我们的预期...Part Three:调试控制台 Pycharm官网给出的解释: 1. show execution point 显示当前所有断点 2. step over(F8) 单步调试,跳过子函数。...打断点,我们在第7、12行打断点,一般断点的选取是在程序可能出错的地方,因为这样可以更快观察程序运行到此处时传给函数的数是否正确。 调试,点击右上角的小虫图标进入调试模式。

    35610

    史上最全 PyCharm(Mac+Windows版) 快捷键整理,建议收藏备用

    (补全任何类、方法、变量) ⌃⇧Space 智能代码补全(过滤器方法列表和变量的预期类型) ⌘⇧↩ 自动结束代码,行末自动添加分号 ⌘P 显示方法的参数信息 ⌃J Mid. button click 快速查看文档...⇧F1 查看外部文档(在某些代码上会触发打开浏览器显示相关文档) ⌘+ 鼠标放在代码上 显示代码简要信息 ⌘F1 在错误或警告处显示具体描述信息 ⌘N, ⌃↩, ⌃N 生成代码(getter、setter...(可以更改变量值使其生效) ⌘⌥R 恢复程序运行,如果该断点下面代码还有断点则停在下一个断点上 ⌘F8 切换断点(若光标当前行有断点则取消断点,没有则加上断点) ⌘⇧F8 查看断点信息 导航 ⌘O 查找类文件...⌘⇧O 查找所有类型文件、打开文件、打开目录,打开目录需要在输入的内容前面或后面加一个反斜杠/ ⌘⌥O 前往指定的变量 / 方法 ⌃← / ⌃→ 左右切换打开的编辑tab页 F12 返回到前一个工具窗口...、类的定义 ⌃⇧B 跳转到类型声明处 ⌘U 前往当前光标所在方法的父类的方法 / 接口定义 ⌃↓ / ⌃↑ 当前光标跳转到当前文件的前一个/后一个方法名位置 ⌘] / ⌘[ 移动光标到当前所在代码的花括号开始

    3.7K20

    NumPy 1.26 中文文档(四十三)

    range序列,可选 长度为 D 的序列,每个序列都是一个可选的(lower,upper)元组,给出如果边界没有在bins中显式地给出时要使用的外部箱边缘。...如果调用时省略了除警告类之外的所有参数,则可用作上下文管理器: 使用 assert_warns(SomeWarning): do_something() 能够用作上下文管理器是 NumPy v1.11.0...版本 1.4.0 中的新功能。 参数: warning_class类 定义了 func 预期抛出的警告的类。 func可调用对象,可选 可调用对象进行测试 *args参数 func 的参数。...未经过滤和未记录的警告将被传递出去,并由外层级别匹配。在最外层级别上,它们将被打印(或被另一个警告上下文捕获)。转发规则参数可以修改这种行为。...随机数据的测试 随机数据的测试很好,但由于测试失败旨在暴露新的错误或回归,因此一个大部分时间都通过但偶尔在没有代码更改的情况下失败的测试是没有帮助的。

    15910

    含有泛型的 JSON 反序列化问题

    为什么 IDEA 会给出下面的警告,该如何解决? 有些同学说直接使用抑制注解,抑制掉这个警告就好了。 抑制掉警告就可以了????...二、分析 2.1 事出诡异必有妖 IDEA 不会无缘无故给出警告提示,警告的原因上图已经给出。...难道上述做法仅仅是为了消除一个警告,满足强迫症们的心愿而已吗??...压根就没有提供泛型信息给 fastjson。 作为这个工具函数本身,怎么猜得到要 List 里面究竟该存放啥类型呢? 因此如果能够通过某种途径,告诉它泛型的类型,就可以帮助你反序列化成真正的类型。...此外,如果我们自己除了 JSON反序列化场景之外也有类似获取泛型参数的需求,是不是也可以采用类似的方法呢? 四、总结 希望大家能够重视 IDEA 的警告。

    3.2K41

    如何处理前任程序员留下的代码

    原作者的自我意识:我们即将接触的代码是由另一个开发人员所编写的,另一种风格、约束、期限和个人生活(消耗他或她工作之外的时间)。...有没有什么你想放到代码里,但当时没有做的?为什么? 始终要保持谦虚的态度,积极寻求原作者真正的答案。几乎每个开发人员都碰到过这样的场景,他或她看着别人的代码,自问自答:“为什么他 / 她要这样做?...在软件方面,这个理论意味着如果开发人员发现代码已经是一团糟,那么人的本性会让他弄坏代码。从本质上说,我们心里想的是(即使心理活动没有这么丰富),“既然最后一个人不在乎这代码,我为什么要在乎?”...如果我们稍后需要这部分代码,那么在存储库中,我们总是可以从先前的提交中检索它。如果存在无法直接解决的警告(例如原始类型警告),那么使用 @SuppressWarnings 注解注释该调用或方法。...这样可以确保我们对代码进行过仔细的考虑:它们不是因为疏忽而发出的警告,而是我们明确地注意到了警告(如原始类型)。 一旦我们删除或明确地禁止所有警告,那么我们就必须确保代码保持免除警告。

    40020

    我的 7 大 Rust 关键字

    我会提供我个人对它们的作用的总结:为什么你需要考虑如何使用它们,以及任何其他有用的东西,特别是对于刚接触 Rust 的新手或来自另一种语言的人(如 Java;请阅读我的文章 为什么作为一个 Java 程序员的我喜欢学习...我曾经在不同模块的不同文件中发生过 const 变量名(和值)的冲突,仅仅是因为我太懒了,除了在不同文件中剪切和粘贴之外,我本可以通过创建一个共享模块来节省大量的工作。...常见的错误是在某个变量 没有 变化的情况下声明它是可变的,这时编译器会警告你。...如果你收到了 Cargo 的警告,说一个可变的变量没有被改变,而你认为它被 改变 了,那么你可能要检查该变量的范围,并确保你使用的是正确的那个。...return – 实际上我很少使用 return,它用于从函数中返回一个值,但是如果你只是在函数的最后一行提供值(或提供返回值的函数),通常会变得更简单,能更清晰地阅读。

    57720

    这个库厉害了,自动补全Python代码,节省50%敲码时间

    评价模型的方法是判断节省了多少的按键信息——即模型给出长度为 L 的代码建议,如果和真实的代码匹配,则节省 L - 1 个键入操作。实验结果说明,大约可以节省 30%-50% 的时间键入成本。...以 PyCharm 中的基本补全(Basic Completion)方法为例。基本补全可帮助补全可见区域的类、方法、关键词代码。使用时,PyCharm 会分析补全使用情况,并提供当前位置可能的选择。...如果是对空间、参数或变量声明进行补全,则 PyCharm 会基于类别提供一系列可能的命名。 ? 当出现已定义的类、函数、模块和变量时,基本补全就会启动。...此外,PyCharm 也提供智能补全等其他补全功能,但基本上都需要对已有文本进行搜索,根据位置和类型判断补全的方法。这些方法都没有配置机器学习模型。...「我们已经有很多很好用的自动补全工具了,比如 kite(一个可以在 IDE 上使用的插件),为什么还要费心搞个机器学习模型?」

    52120

    这个库厉害了,自动补全Python代码,节省50%敲码时间

    评价模型的方法是判断节省了多少的按键信息——即模型给出长度为 L 的代码建议,如果和真实的代码匹配,则节省 L - 1 个键入操作。实验结果说明,大约可以节省 30%-50% 的时间键入成本。...以 PyCharm 中的基本补全(Basic Completion)方法为例。基本补全可帮助补全可见区域的类、方法、关键词代码。使用时,PyCharm 会分析补全使用情况,并提供当前位置可能的选择。...如果是对空间、参数或变量声明进行补全,则 PyCharm 会基于类别提供一系列可能的命名。 ? 当出现已定义的类、函数、模块和变量时,基本补全就会启动。...此外,PyCharm 也提供智能补全等其他补全功能,但基本上都需要对已有文本进行搜索,根据位置和类型判断补全的方法。这些方法都没有配置机器学习模型。...「我们已经有很多很好用的自动补全工具了,比如 kite(一个可以在 IDE 上使用的插件),为什么还要费心搞个机器学习模型?」

    1.7K30

    前端老手 10 年心得,JavaScriptTypeScript 项目保养实用指南

    1 清理工作台 在开发下一个特性时,每个警告、类型错误或非正常的测试都会让开发人员浪费时间、精力和专注度。 代码警告尤其令人讨厌,因为开发人员会习惯性地忽略它们,“只要一切按预期运行就好”。...当生产环境的数据库因“内存不足”错误而崩溃时,该警告可能会帮助开发人员找到崩溃的原因 警告和类型错误 是查找缺陷和事故的线索。我们累积(或忽略)的警告和错误越多,开发人员就会花费越多的时间去调查。...不要让警告和类型错误累积。尽快修复它们。 提高信噪比。如果团队一致认为某条引发警告和类型错误的规则没有用处的话,就干脆禁用它。...在开发过程中,应使用静态代码分析和单元测试来捕获编程错误。 不要让带有警告和类型错误的代码进入生产环境。使用持续集成流水线来强制要求这一规则。 类型检查器认为缺少一个预期的属性。...用户为什么能够访问页面 B?——因为主页上有一个链接。 用户在访问页面 B 的时候为什么没有看到登录页面?——因为在页面渲染时,后端还不知道登录状态。 为什么页面渲染时还不知道登录状态?

    17510

    python基础六

    __init__文件: 我们使用pycharm软件创建一个包时都会有一个__init__文件,当我们只导入包的时候,会执行__init__文件,和上面的一个道理也就是说我们导入包和导入模块的时候,都会有一个相当于加载事件...:数值运算超出最大限制 ZeroDivisionError:除(或取模)零 (所有数据类型) AssertionError:断言语句失败 AttributeError:对象没有这个属性 EOFError...(runtime behavior)的警告 SyntaxWarning:可疑的语法的警告 UserWarning:用户代码生成的警告 面向对象 定义一个类 class Person: gamename...反过来 import 一个模块的过程就是一个实例化的过程 另:类是可以当作一个属性传入到另一个类中的。 面向对象之封装,继承,多态 继承:#为什么继承?...我们把Father,Mother叫父类或基类或超类 Son,Daughter类叫做子类或派生类 查看该类的父类:__base__ 例如查看Son的父类: print(Son.

    62430

    史上最全 PyCharm(Mac+Windows版) 快捷键整理

    (补全任何类、方法、变量) ⌃⇧Space 智能代码补全(过滤器方法列表和变量的预期类型) ⌘⇧↩ 自动结束代码,行末自动添加分号 ⌘P 显示方法的参数信息 ⌃J Mid. button...click 快速查看文档 ⇧F1 查看外部文档(在某些代码上会触发打开浏览器显示相关文档) ⌘+ 鼠标放在代码上 显示代码简要信息 ⌘F1 在错误或警告处显示具体描述信息 ⌘N...⌘F8 切换断点(若光标当前行有断点则取消断点,没有则加上断点) ⌘⇧F8 查看断点信息 导航 ⌘O 查找类文件 ⌘⇧O 查找所有类型文件、打开文件、打开目录,打开目录需要在输入的内容前面或后面加一个反斜杠...、类的定义 ⌃⇧B 跳转到类型声明处 ⌘U 前往当前光标所在方法的父类的方法 / 接口定义 ⌃↓ / ⌃↑ 当前光标跳转到当前文件的前一个/后一个方法名位置 ⌘] / ⌘[ 移动光标到当前所在代码的花括号开始...F2 / ⇧F2 跳转到下一个/上一个突出错误或警告的位置 F4 / ⌘↓ 编辑/查看代码源 ⌥ Home 显示到当前文件的导航条 F3 选中文件/文件夹/代码行,添加/取消书签

    1.8K20

    从一次编译器告警说起~~

    ,如果没有显示声明默认构造函数或者在声明的默认构造函数中对基础类型的值没有进行初始化,则在运行的时候,使用当前内存(栈或者堆)上的垃圾数据。...其行为取决于变量或对象的类型和存储位置: • 内置类型 •对于非静态局部变量(在函数内部声明),若不显式初始化,它们不会被初始化,其值是未定义的(undefined)。...例如,整型变量为0,浮点型为0.0,指针为NULL或nullptr。 • 类类型 •如果类具有默认构造函数(无论用户定义还是编译器生成),默认初始化会调用该构造函数进行初始化。...• 类类型 •若类具有默认构造函数(用户定义或编译器生成),值初始化会调用该构造函数。•若类没有默认构造函数,值初始化会导致编译错误。 • 数组 •数组的所有元素都将进行值初始化。...目前来看,值初始化是我们所需要的,也避免了一些意想不到的问题(比如前面的score的值为一个随机值或者非预期值)。 那么,对于类来说,是不是提供了构造函数就能达到值初始化的目的呢?

    14510

    这个库厉害了,自动补全Python代码,节省50%敲码时间

    评价模型的方法是判断节省了多少的按键信息——即模型给出长度为 L 的代码建议,如果和真实的代码匹配,则节省 L - 1 个键入操作。...以 PyCharm 中的基本补全(Basic Completion)方法为例。基本补全可帮助补全可见区域的类、方法、关键词代码。使用时,PyCharm 会分析补全使用情况,并提供当前位置可能的选择。...如果是对空间、参数或变量声明进行补全,则 PyCharm 会基于类别提供一系列可能的命名。 ? 当出现已定义的类、函数、模块和变量时,基本补全就会启动。...此外,PyCharm 也提供智能补全等其他补全功能,但基本上都需要对已有文本进行搜索,根据位置和类型判断补全的方法。这些方法都没有配置机器学习模型。...「我们已经有很多很好用的自动补全工具了,比如 kite(一个可以在 IDE 上使用的插件),为什么还要费心搞个机器学习模型?」

    80720
    领券