在什么情况下、使用python类的使用-使用Python编程时的10个注意事项

2023-11-16

原标题:使用Python编程时的10个注意事项

1、初始变化量

在Python里,一个表达式中的名字在它被赋值之前是没法使用的。这是有意而为的:这样能避免一些输入失误,同时也能避免默认究竟应该是什么类型的问题(0,None,””,[],?)。记住把计数器初始化为0,列表初始化为[],以此类推。

2、从第一列开始

确保把顶层的,未嵌套的代码放在最左边第一列开始。这包括在模块文件中未嵌套的代码,以及在交互提示符中未嵌套的代码。Python使用缩进的办法来区分嵌套的代码段,因此在你代码左边的空格意味着嵌套的代码块。除了缩进以外,空格通常是被忽略掉的。

1b3e2f9c5813452190e42cb05f70a9ae.jpeg

3、缩进一致

在同一个代码块中避免讲tab和空格混用来缩进,除非你知道运行你的代码的系统是怎么处理tab的。否则的话,在你的编辑器里看起来是tab的缩进也许Python看起来就会被视作是一些空格。保险起见,在每个代码块中全都是用tab或者全都是用空格来缩进;用多少由你决定。

4、在函数调用时使用括号

无论一个函数是否需要参数,你必须要加一对括号来调用它。即,使用function(),而不是function。Python的函数简单来说是具有特殊功能(调用)的对象,而调用是用括号来触发的。像所有的对象一样,他们也可以被赋值给变量,并且间接的使用他们:x=function:x()。

在Python的培训中,这样的错误常常在文件的操作中出现。通常会看到新手用file.close来关闭一个问题,而不是用file.close()。因为在Python中引用一个函数而不调用它是合法的,因此不使用括号的操作(file.close)无声的成功了,但是并没有关闭这个文件!

5、在Import时不要

使用表达式或路径

在系统的命令行里使用文件夹路径或者文件的扩展名,但不要在import语句中使用。即,使用import mod,而不是import mod.py,或者import dir/mod.py。

在实际情况中,这大概是初学者常犯的第二大错误了。因为模块会有除了.py以为的其他的后缀(例如,.pyc),强制写上某个后缀不仅是不合语法的,也没有什么意义。

和系统有关的目录路径的格式是从你的模块搜索路径的设置里来的,而不是import语句。你可以在文件名里使用点来指向包的子目录(例如,import dir1.dir2.mod),但是最左边的目录必须得通过模块搜索路径能够找到,并且没有在import中没有其他路径格式。

不正确的语句import mod.py被Python认为是要记在一个包,它先加载一个模块mod,然后试图通过在一个叫做mod的目录里去找到叫做py的模块,最后可能什么也找不到而报出一系列费解的错误信息。

6、不要在Python中写C代码

以下是给不熟悉Python的C程序员的一些备忘贴士:

在if和while中条件测试时,不用输入括号(例如,if (X==1):)。如果你喜欢的话,加上括号也无妨,只是在这里是完全多余的。

不要用分号来结束你的语句。从技术上讲这在Python里是合法的,但是这毫无用处,除非你要把很多语句放在同一行里(例如,x=1; y=2; z=3)。

不要在while循环的条件测试中嵌入赋值语句(例如,while ((x=next() != NULL))。在Python中,需要表达式的地方不能出现语句,并且赋值语句不是一个表达式。

7、在打开文件的调用

不使用模块搜索路径

当你在Python中调用open()来访问一个外部的文件时,Python不会使用模块搜索路径来定位这个目标文件。它会使用你提供的绝对路径,或者假定这个文件是在当前工作目录中。模块搜索路径仅仅为模块加载服务的。

8、不同的类型

对应的方法也不同

列表的方法是不能用在字符串上的,反之亦然。通常情况下,方法的调用是和数据类型有关的,但是内部函数通常在很多类型上都可以使用。举个例子来说,列表的reverse方法仅仅对列表有用,但是len函数对任何具有长度的对象都适用。

9、不能直接改变

不可变数据类型

记住你没法直接的改变一个不可变的对象(例如,元组,字符串):

T=(1,2,3)

T[2]=4 #错误

用切片,联接等构建一个新的对象,并根据需求将原来变量的值赋给它。因为Python会自动回收没有用的内存,因此这没有看起来那么浪费:

T=T[:2]+(4,)

#没问题了,T变成了(1, 2, 4)

10、使用简单的for循环

而不是while或range

当你要从左到右遍历一个有序的对象的所有元素时,用简单的for循环(例如,for x in seq:)相比于基于while-或者range-的计数循环而言会更容易写,通常运行起来也更快。

除非你一定需要,尽量避免在一个for循环里使用range:让Python来替你解决标号的问题。在下面的例子中三个循环结构都没有问题,但是第一个通常来说更好;在Python里,简单至上。

S="lumberjack"

for c in S:print c #最简单

for i in range(len(S)):print S[i] #太多了

i=0 #太多了

while i

责任编辑:

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

在什么情况下、使用python类的使用-使用Python编程时的10个注意事项 的相关文章

  • 面试总结大全

    预定义变量 0 脚本名 所有的参数 所有的参数 参数的个数 当前进程的PID 上一个后台进程的PID 上一个命令的返回值 0表示成功 for 循环次数是固定的 for i in 取值 范围 1 20 zhangsan lisi wanger
  • 牛客网——华为题库(41~50)

    华为题库 41 称砝码 42 学英语 43 迷宫问题 44 Sudoku 45 名字的漂亮度 46 截取字符串 48 从单向链表中删除指定值的节点 50 四则运算 41 称砝码 include
  • C++通过回车结束循环输入

    试想一个案例 假设需要你输入n行数字 而每一行输入的数字数量都未知 不定 如何通过C 来实现这一操作 本贴笔者给出一个具体案例 首先规定输入的行数 而后在每一行输入不定量的数字 最后将每一个数字对应的值 以及与其匹配的行数输出 例如 输入
  • 实战07- 模型融合:利用AdaBoost元算法提高分类性能

    元算法 meta algorithm 是对其他算法进行组合的一种方式 即模型融合 模型融合主要分为三种 Bagging Boosting和Stacking 思想 将弱分类器融合成强分类器 融合后比最强的弱分类器更好 视频导学 https w
  • 什么是高防CDN,高防CDN是如何防御网络攻击的呢?

    高防CDN是一种新型的网络构建法式 N是构建在现有网络基础之上的智能虚拟网络 依靠部署在各地的边缘服务器 通过中心平台的负载均衡 内容分发 调度等功能模块 使用户就近获取所需内容 降低网络拥塞 提高用户访问响应速度和命中率 CDN的关键技术
  • tensorflow2.1.0安装

    原来一直用1 x的tf 最近安装2 初始源error无法安装 下载本地包后 换清华源之类的 channels defaults show channel urls true default channels https mirrors tu
  • 机器学习(一)

    文章目录 人工智能 人工智能的诞生 人工智能的发展历程 人工智能与机器学习的关系 机器学习 机器学习的发展历程 讨论 机器学习的必要性 机器学习的定义 机器学习的三要素 机器学习的基本概念 作业 人工智能 人工智能的诞生 人工智能诞生于一群
  • Spring Boot项目中使用 TrueLicense 生成和验证License(服务器许可)

    一 简介 License 即版权许可证 一般用于收费软件给付费用户提供的访问许可证明 根据应用部署位置的不同 一般可以分为以下两种情况讨论 应用部署在开发者自己的云服务器上 这种情况下用户通过账号登录的形式远程访问 因此只需要在账号登录的时
  • python机器学习相关的操作 numpy,GridSearchCV(网格搜索)等

    numpy切片操作 视频讲解 numpy 简单入门 GridSearchCV的简单使用视频讲解 SVM参数优化 metrics中的precision score recall score accuracy score import nump
  • C语言中的system有什么作用,C语言中system函数的使用

    System 是c语言中为了调用windows系统命令来设置的 它包含在头文件 include中 具体的使用可以在system help 后发现帮助命令 命令如下 有关某个命令的详细信息 请键入 HELP 命令名 ASSOC 显示或修改文件
  • python语言通过neo4j构建知识图谱

    用python语言通过neo4j构建知识图谱 安装neo4j社区版 启动neo4j neo4j语法 python编写代码 结果 注意 可能遇到的问题 安装neo4j社区版 下载neo4j 安装相应版本jdk 例 jdk15 neo4j4 2
  • CentOS自动挂载光驱

    今天在CentOs下安装测试数据库 光驱居然找不到了 以前都是自动就能找到的 服务器上也是CentOs 开发库也在CentOs 没出现过这个问题 虽然知道linux一直都有这个问题 改用手动挂载 报以下错误 mount can t find
  • 用宏定义字节对齐

    有时候我们需要对一个数字节对齐 实例代码 include
  • 左神算法进阶班4_3异或和为0划分最多数组

    题目 定义数组的异或和的概念 数组中所有的数异或起来 得到的结果叫做数组的异或和 比如数组 3 2 1 的异或和是 3 2 1 0 给定一个数组arr 你可以任意把arr分成很多不相容的子数组 你的目的是 分出来的子数组中 异或和为0的子数
  • Nikolaj Buhl : Segment Anything 模型 (SAM) 解释

    文章目录 Meta 的人工智能和计算机视觉简史 计算机视觉的进展 卷积神经网络 CNN 生成对抗网络 GAN 迁移学习和预训练模型 基础模型的成长 大规模语言模型 迁移学习 零样本和少样本学习 多模态学习 道德考量和安全 将 Segment
  • 德鲁伊数据库连接池

    文章目录 前言 什么是德鲁伊 为什么要使用德鲁伊 如何在 Java 项目中使用德鲁伊连接池 德鲁伊的优缺点 总结 前言 德鲁伊 Druid 是一个非常流行的数据库连接池和性能优化工具 它用于管理数据库连接 监控数据库性能 提供连接池统计等功
  • Json的学习例子

    using System using LitJson using System Collections namespace JSON
  • pyinstaller 打包应用报错闪退

    请看到最后 解决方案一 用录屏软件录个视频 然后用播放软件打开逐帧查看 找到报错原因 一般是某个包导入错误 重新安装下对应的包 忒麻烦 借鉴大佬的博客 https blog csdn net s740556472 article detai
  • 最后一次实验

    拓扑图 实验要求 拓扑分析 先分ip 然后分vlan然后配ip 配路由 设备配置和配置解析 sw1 sw2 r1 r2 r3 实验结果
  • 脑电EEG常用的特征

    最近学习有关脑电的一些基础知识 基于深度学习对脑电信号进行分类时 首先需要对脑电信号进行预处理 滤波等 这时一般不能将其作为数据进行学习 更常见的是提取脑电信号的特征 然后再用深度学习发掘特征与不同情绪的关联 脑电信号常见的特征有 时域中

随机推荐

  • CLR 完全介绍

    From http msdn microsoft com zh cn magazine cc164193 aspx http msdn microsoft com en us magazine cc164193 aspx Code down
  • 刷脸支付服务商提供极致的用户体验

    刷脸支付正在攻占人们生活中的各个场景 在北京 可能依靠刷脸就可乘坐地铁了 据报道 北京地铁部门已开始测试面部识别技术 目前正在机场线内部测试中 一旦验证成功 将会在全路网铺开 最近一个月 垃圾分类成了热点 全国开始进入生活垃圾强制分类新时代
  • Myabtis_Plus

    一 自动填充 准备工作 添加新的字段create time update time 在实体类中需要进行自动填充的字段添加注解 TableField fill FieldFill INSERT private Date createTime
  • Unity 获取Animtor Controller 动画控制器的参数,层级

    获取Animator中的Parameters参数 Trigger Int Float等类型 UnityAPI Animator parameters 获取所有参数 获取Layer层 UnityAPI Animator layerCount
  • sql 自定義百分比轉換小數函數

    CAST 和 CONVERT 函数 Percentage DECLARE dec decimal 5 3 var varchar 10 hun decimal 5 1 set dec 0 025 set hun dec 100 set va
  • 通过vue和element-ui框架写前台

    首先我们运维一般写web界面很多都会使用bootstrp jquery 现在vue其以简单 不用直接操作dom 深受广大非前端爱好者的喜欢 前端只用写界面 后台关注界面就可以了 实现前后台分离 flask如何引入vue js和element
  • shell脚本启动java类或者jar包实践

    1 直接在shell脚本中执行class文件 代码目录如下 在目录下执行bash test sh命令 shell脚本test sh的代码如下 java Xmx2048m Xms2048m XX MaxNewSize 2048m XX Max
  • 第二篇,ESP8266烧录固件 各种版本解决方案 mqtt 安信可固件 记录于2021年6月30日

    1 硬件连接准备 1 1对于esp8266 01和esp8266 01s 特别需要进行注意 RX接TX TX接RX 3 3V接3 3V GND接GND IO0接GND 一定要注意这一步 烧录的时候如果不行话 直接重新上电就可以 反复几次 就
  • Windows server 服务器com安全编辑限制选项灰色

    在一次Windows server 系统运维中 项目实施方搭建OPC时遇到了com 安全编辑限制选项灰色的问题 当时百度查找了很多但是也没查到 但是能确定应该是组策略和注册表中用户administrator权限不够的问题 查找资料中发现Dc
  • 2021->2022

    也就随便写写了 记得去年的年终和期望目标 我写了好多个方面的自我剖析 可能大概有三四千字吧 再回去看看 还是水了一些 这很正常 大多数人都是这样的 况且我比较佛系 复盘还是要的 期望还是要提的 虽然明知一年过后 可能达成的不多 但这也是一次
  • 医疗知识中台白皮书

    该白皮书显示 医疗行业平均医护人员供给不足 优质医疗资源过于聚集 医疗资源质量短期难以大幅提高等问题突出 与此同时 遵循医疗逻辑的智能化开放平台 医疗知识中台 正在成为解决这一难题的突破口 关注公众号 互联互通社区 回复 ZTZL053 获
  • 通用网关接口(摘录)

    维基百科 自由的百科全书 通用网关接口 Common Gateway Interface CGI 是一种重要的互联网技术 可以让一个客户端 从网页浏览器向执行在 Web 服务器 上的程序 请求数据 CGI 描述了客户端和这个程序之间传输数据
  • 【Python-利用动态二维码传输文件(四)】使用pyautogui库录屏(连续截图),然后利用OpenCV逐张读取截图,识别当中的二维码信息,并把信息重组成原文件

    程序示意图 目录 一 使用pyautogui库 对电脑屏幕进行录屏 二 使用OpenCV库对100帧截图进行识别 并与原29帧二维码图片内含信息进行比对 三 把获取的100帧二维码信息去重 并保持原来顺序 重组成原来的文件 四 小结和完整代
  • Java前后端分离动态国际化(动态配置扩展性高)

    介绍 主要是针对前后端分离场景国际化系统设计 亮点 1 动态国际化配置 2 可维护性 3 国际化数据池化 性能高 4 后端数据内容动态国际化 5 提供前台动态国际化数据 6 后台异常国际化处理 7 可动态添加国际化的语种 8 国际化配置集中
  • React中路由组件的lazyLoad

    1 通过React的lazy函数配合import 函数动态加载路由组件 gt 路由组件代码会被分开打包 const Login lazy gt import pages Login 2 通过
  • 生成一定相关性的二元正态分布

    生成一定相关性的二元正态分布 摘要 二元正态分布 二元正态分布概率密度函数 二元正态分布随机数的生成 程序实现 多元正态分布的情况 生成服从 N
  • 【http】10,000 milliseconds timeout on connection http-outgoing-0 [ACTIVE]

    1 概述 本日使用http远程连接获取远程接口信息报错 10 000 milliseconds timeout on connection http outgoing 0 ACTIVE 022 12 23 09 54 15 181 ERRO
  • C潜规则篇之防止重定义

    C程序编译时常出现类似xxx redefinition错误 除了模块间的命名冲突 命名污染及static 问题多数与头文件管理有关 大型C工程的头文件管理很麻烦 C源文件往往包含很多头文件 头文件又包含其他头文件 形成复杂的嵌套包含 C没有
  • Android 逆向工程,反编译心得

    前言 apk的反编译是我们在Android开发中绕不开的一个坎 对于反编译这门技术 我们应该抱着学习的态度 学的越多 也越能防备别人反编译我们 这就是所谓的知己知彼吧 哈哈 需要准备的工具 Apktool 解包和重新打包都需要它 dex t
  • 在什么情况下、使用python类的使用-使用Python编程时的10个注意事项

    原标题 使用Python编程时的10个注意事项 1 初始变化量 在Python里 一个表达式中的名字在它被赋值之前是没法使用的 这是有意而为的 这样能避免一些输入失误 同时也能避免默认究竟应该是什么类型的问题 0 None 记住把计数器初始