python 有“use strict;”吗?和“使用警告;”就像在 Perl 中一样?

2024-03-07

我正在学习 perl 和 python...同时,这不是我的设计,但它必须完成。

问题:

在 perl 脚本中,我在 txt 的开头使用(见下文)。

#!/usr/bin/env perl

use strict;
use warnings;

我的 python 脚本有什么日常需要做的事情吗?


为了提供一个可能避免此处评论噪音的答案,我将尝试另一个答案。

您原来问题中的两个 pragmata 实际上扩展到:

use strict "vars";
use strict "refs";
use strict "subs";
use warnings;

依次回答每个问题:

  • 的效果use strict "vars"是在未首先声明变量存在的情况下引用变量而导致编译时错误(例如 C、C++ 和 Java 等更多静态语言中的默认设置)。因为 Python 没有特定的语法来声明变量存在,所以它没有等效的语法。在 Python 中分配一个名称总是会创建它(如果该名称首先不存在)。这个功能的strict没有 Python 等效项,并且它提供的安全性无法重新创建。

Eg:

$ perl -c -e 'use strict "vars"; $foo = 1'
Global symbol "$foo" requires explicit package name at -e line 1.
-e had compilation errors.

$ perl -c -e 'no strict "vars"; $foo = 1'
-e syntax OK
  • 的效果use strict "refs"是禁止使用包含(现有或新)变量名称的纯字符串作为对变量本身的引用。 Python 不会执行此操作,因此无需禁用它。

Eg:

$ perl -e 'use strict "refs"; ${"message"} = "hello"; print $message'
Can't use string ("message") as a SCALAR ref while "strict refs" in use at -e line 1.

$ perl -e 'no strict "refs"; ${"message"} = "hello"; print $message'
hello
  • 的效果use strict "subs"是导致编译时调用已知不存在的函数的任何尝试。 Python 不执行任何此类检查,也无法启用此类功能。

Eg:

$ perl -c -e 'use strict "subs"; foo'
Bareword "foo" not allowed while "strict subs" in use at -e line 1.
-e had compilation errors.

$ perl -c -e 'no strict "subs"; foo'
-e syntax OK
  • 的效果use warnings是为了在编译和运行时对各种类别的行为启用更多警告,这些行为在早期版本中是默认的,有时可能是需要的,或者从来都不是一个好主意,但严格来说并不是一个错误。例如,使用未初始化的值作为数字通常应该发出警告,但最初并没有这样做。

Eg:

$ perl -e 'use warnings; my $u; print 2 + $u'
Use of uninitialized value $u in addition (+) at -e line 1.
2

$ perl -e 'no warnings; my $u; print 2 + $u'
2

最后;有人评论说 Python 在以下方面具有类似的功能__future__。然而,这不应该被认为与 Perl 的 pragmata 类似,因为后者大多数都是词法范围的,并且可以根据需要在小范围内启用或禁用; Python 在哪里__future__仅对整个源文件启用。

Eg.

use strict;
use warnings;

my $total;

$total += count_things($_) for @list;

{
   no warnings 'uninitialized';
   printf "The total is %d\n", $total;
}

这是一个有点人为的示例,但这一个演示了如何使用no warnings 'uninitialized'禁用有关在以下范围内使用未初始化值的警告printf声明,同时仍然在其他地方启用其他警告。


综上所述:Python 没有use strict或任何近乎等效的任何安全功能,它提供的安全功能要么是强制性的,要么在 Python 语言中不可用,并且没有use warnings。它提供的那些功能仅在文件级别启用,不能根据范围有选择地启用或禁用。


Edit:实际上我现在已经得知Python确实有一些可控的警告标志,可以根据需要启用和禁用它们。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

python 有“use strict;”吗?和“使用警告;”就像在 Perl 中一样? 的相关文章

  • 如何将自定义 CSS 添加到脆皮表单?

    我正在尝试在脆皮表单的帮助下为我的网站创建一个响应式表单 我没有使用引导程序 我想将自定义 CSS 添加到脆皮表单以匹配我的整个网站 HTML
  • 为什么 localhost:5000 在 Flask 中不起作用?

    我正在使用 Flask 应用程序工厂模式 并且有这个 run py 文件 from app import create app app create app if name main app run host localhost debug
  • Python:数百万个小文件的读写速度缓慢

    结论 看来 HDF5 是适合我的目的的方法 基本上 HDF5 是一种用于存储和管理数据的数据模型 库和文件格式 并且旨在处理令人难以置信的大量数据 它有一个名为 python tables 的 Python 模块 链接在下面的答案中 HDF
  • PyDev 无法再调试

    我正在使用 eclipse 4 2 1 和 pydev 2 7 1 以前是 2 6 0 一切都工作正常 直到调试器突然停止工作 它打印 pydev debugger 开始 然后根本不运行程序 而是挂起 根据我在其他问题报告中找到的一些信息
  • 我知道 scipy curve_fit 可以做得更好

    我使用 python numpy scipy 来实现此算法 用于根据地形坡向和坡度对齐两个数字高程模型 DEM 用于量化冰川厚度变化的卫星高程数据集的联合配准和偏差校正 C Nuth 和 A K b doi 10 5194 tc 5 271
  • 所有模型的 SQLAlchemy 事件 after_create

    我正在开发一个项目 需要对创建的每个模型进行通用定制 迄今为止我完成大部分工作的方式是通过模型继承 这是我的代码块 可以为您提供更好的想法 app core dba mixins class AuditExtension MapperExt
  • / __init__() 处的 TypeError 恰好采用 1 个参数(给定 2 个)

    我有点困惑为什么会出现这个错误 我不知道这个额外的参数是从哪里来的 Environment Request Method GET Request URL http 0 0 0 0 5000 Django Version 1 6 4 Pyth
  • 如何使用 cron 作业运行 python 文件

    您好 我创建了一个 python 文件 例如file example py 该文件将输出 sensex 值 假设该文件在linux系统上的路径为 Desktop downloads file example py 我通常会运行该文件pyth
  • python 和回文

    我最近写了一个循环的方法 usr share dict words并使用我的返回回文列表ispalindrome x 方法 这是一些代码 有什么问题吗 它只会停止 10 分钟 然后返回文件中所有单词的列表 def reverse a ret
  • Python:如何将包含对象的列表保存在文件中?

    我尝试创建不同的对象 使用类和对象 并将它们保存在文件中以便稍后编辑或检索它们 然而这就是它的样子 GlobalCategories GlobalContent def LoadData x y import pickle with ope
  • 在散景中隐藏轴

    如何在散景图中隐藏 x 轴和 y 轴 我已经根据此进行了检查和尝试 p1 figure visible None p1 select type Axis visible 0 xaxis Axis plot p1 visible 0 和喜欢h
  • 将 PyQt5 QPixmap 转换为 numpy ndarray

    我有像素图 pixmap self screen grabWindow 0 self x self y self width self height 我想将其转换为 OpenCV 格式 我尝试将其转换为numpy ndarray如上所述he
  • Google Cloud SDK 安装失败 UnicodeDecodeError:“ascii”编解码器

    我在安装时遇到以下错误谷歌云SDK https cloud google com sdk docs 在我的 Windows 10 计算机上 ERROR gcloud failed to load ascii codec can t deco
  • matplotlib 的上限/下限

    我想用误差线绘制一些数据点 其中一些数据点只有上限或下限 而不是误差线 所以我尝试使用索引来区分带有误差条的点和带有上限 下限的点 但是 当我尝试这样的事情时 errorbar x i y i yerr ymin i ymax i 我收到错
  • Python 请求:使用 Multipart/form-data 在 Facebook 上发布图像

    我正在使用 facebook API 在页面上发布图像 我可以使用以下命令从网络发布图像 import requests data url url caption caption access token token status requ
  • 填充 MultiIndex Pandas Dataframe 中的日期空白

    我想修改 pandas MultiIndex DataFrame 以便每个索引组都包含指定范围内的日期 我希望每个组都用值 0 或NaN Group A Group B Date Value loc a group a 2013 06 11
  • 从Python中的URL中提取域[重复]

    这个问题在这里已经有答案了 我有一个像这样的网址 http abc hostname com somethings anything 我想得到 hostname com 我可以使用什么模块来完成此任务 我想在python2中使用相同的模块和
  • Python从更高级别的包导入模块

    这是我的包层次结构 app init py Empty file server py global vars py handlers init py Empty file url1 init py Empty file app1 py ap
  • 从纪元到相对日期的秒数

    我正在处理自纪元以来的日期 并且已经得到了 例如 date 6928727 56235 我想将其转换为另一种相对格式 以便我能够将其转换为与纪元相关的格式 使用 time gmtime date 它返回 year 1970 mon 3 da
  • 使用 PyDrive 将图像上传到 Google Drive

    我有一个关于 PyDrive 的愚蠢问题 我尝试使用 FastAPI 制作一个 REST API 它将使用 PyDrive 将图像上传到 Google Drive 这是我的代码 from fastapi import FastAPI Fil

随机推荐