Python对于C语言使用者来说的反直觉特性

在编程领域,从一种语言转向另一种语言总是伴随着一系列的学习和调整。对于习惯了C语言严谨性的程序员来说,转向Python可能会遇到一些令人惊讶的特性。以下是我在短暂学习了一段时间python后察觉到的一些python的特性

缺少分号


在C语言中,每条语句都必须以分号(;)结尾。而在Python中,分号是可选的,通常仅用于在同一行内写多条语句。这意味着你不再需要在每一行末尾加上分号。

使用缩进代替花括号


Python使用缩进来定义代码块,而不是像C语言那样使用花括号({})。虽然这使得代码看起来更加清晰,但不正确的缩进会导致语法错误。

动态类型


与C语言的静态类型不同,Python是一种动态类型的语言。这意味着变量的类型可以在运行时确定,并且可以在任何时候更改变量的类型。

x=5  x是整数
x="hello" 现在x是字符串

函数返回值


在C语言中,函数可以返回一个值或者多个值(通过引用或指针)。而在Python中,函数默认返回`None`,但可以使用元组来返回多个值:
 

defmultiple_returns():return1,"string",[1,2,3]result=multiple_returns()
print(result)         输出(1,'string',[1,2,3])

列表推导式


Python提供了列表推导式,这是一种简洁的方式用于创建列表,通常替代了传统的循环语句。

numbers=[x*xforxinrange(10)]
print(numbers) 输出[0,1,4,9,16,25,36,49,64,81]


 

异常处理


Python使用异常处理来管理错误和特殊情况,而C语言通常使用错误码或特定的返回值。Python中可以使用`try`和`except`块来捕获并处理异常:


 

try:result=1/0
exceptZeroDivisionError:print("不能除以零")

内置支持的高级数据结构


Python内置了许多高级的数据结构,如字典(dict)和集合(set),提供了高效的管理和访问方式。而在C语言中,这些通常需要手动实现。


person={'name':'Alice','age':30}
print(person['name']) 输出Alice


 

迭代器与生成器


Python支持迭代器和生成器,可以用来遍历集合和按需生成数据。迭代器可以通过`iter()`和`next()`函数使用,而生成器则通过函数内的`yield`关键字来实现。

defsimple_generator():yield 1yield 2yield 3forvalueinsimple_generator():print(value)


 

模块化与包管理


Python有丰富的标准库以及第三方库支持,通过`import`语句即可使用。此外,Python社区维护了一个庞大的包管理系统(如pip和conda),可以轻松安装和管理依赖项。

importmath
print(math.sqrt(16)) 输出4.0


 

解释执行vs编译执行


Python是一种解释型语言,代码在运行时逐行解释执行。而C语言是编译型语言,需要先编译成机器码再执行。这意味着Python的开发周期可以更快,但执行效率通常不如C语言。

内存管理


在Python中,内存管理是由垃圾回收机制自动完成的,开发者不需要手动分配和释放内存。而在C语言中,内存管理是手动进行的,需要使用如`malloc`和`free`等函数。

总结来说,尽管Python和C语言在很多方面存在差异,但了解这些不同之处有助于更好地利用Python的强大功能。随着经验的增长,这些差异将不再是障碍,而是帮助你更高效地开发工具。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/1549433.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

围攻特斯拉:六大门派边围攻、边互殴

这万万没想到,金庸小说里六大门派围攻光明顶这种剧情,居然在现实中出现了。就在这一个月里,有五款新车发布上市,他们所有人的目标,都是特斯拉的Model Y。他们要一起围攻特斯拉,抢夺它的用户。 这其中包括蔚…

Qt(9.28)

widget.cpp #include "widget.h"Widget::Widget(QWidget *parent): QWidget(parent) {QPushButton *btn1 new QPushButton("登录",this);this->setFixedSize(640,480);btn1->resize(80,40);btn1->move(200,300);btn1->setIcon(QIcon("C:…

【virtuous】ron与rout的区别

ron:直流阻抗,大信号电阻 rout:交流阻抗,,小信号电阻

C++ 基础入门-命名空间、c++的输入输出、缺省参数、函数重载、引用、内联函数超详细讲解

这篇文章主要对c的学习做一个基础铺垫,方便后续学习。主要通过示例讲解命名空间、c的输入输出cout\cin,缺省参数、函数重载、引用、内联函数,auto关键字,for循环,nullptr以及涉及到的周边知识,面试题等。为…

知识付费APP开发指南:基于在线教育系统源码的技术详解

本篇文章,我们将探讨基于在线教育系统源码的知识付费APP开发的技术细节,帮助开发者和企业快速入门。 一、选择合适的在线教育系统源码 选择合适的在线教育系统源码是开发的关键一步。市场上有许多开源和商业化的在线教育系统源码,开发者需要…

参数高效的迁移学习在自然语言处理中的应用

人工智能咨询培训老师叶梓 转载标明出处 迁移学习技术,尤其是针对大型预训练模型的微调(fine-tuning),在诸多下游任务中展现出了卓越的性能。然而,当面临众多任务时,传统的微调方法存在参数效率低下的问题…

Centos8.5.2111(1)之本地yum源搭建和docker部署与网络配置

由于后边可能要启动多个服务,避免服务之间相互干扰,本课程建议每个服务独立部署到一台主机上,这样做会导致资源占用过多,可能会影响系统的运行。服务器部署一般不采用GUI图形界面部署,而是采用命令行方式部署&#xff…

JavaWeb图书借阅系统

目录 1 项目介绍2 项目截图3 核心代码3.1 Controller3.2 Service3.3 Dao3.4 spring-mybatis.xml3.5 spring-mvc.xml3.5 login.jsp 4 数据库表设计5 文档参考6 计算机毕设选题推荐7 源码获取 1 项目介绍 博主个人介绍:CSDN认证博客专家,CSDN平台Java领域优…

【机器学习】——决策树以及随机森林

文章目录 1. 决策树的基本概念与结构1.1 决策树的构建过程 2. 决策树的划分标准2.1 信息增益(Information Gain)2.2 信息增益比(Information Gain Ratio)2.3 基尼指数(Gini Index)2.4 均方误差(…

HJ50-四则运算:栈的运用、中缀表达式转后缀表达式并计算结果

文章目录 题目一、分析1.1表达式预处理1.2中缀表达式转后缀1.3 后缀表达式计算结果 二、答案 题目 一、分析 通过利用栈将中缀表达式转换为后缀表达式,在根据后缀表达式计算运算结果。由于包含负数操作数的情况,并且操作数位数不固定为1,因此…

USB 3.1 标准 B 型连接器的接口定义与引脚分配

连接器 USB 3.1 规范定义了以下连接器: 超速标准 A 插头和插座;超速标准 B 插头和插座;超速 Micro B 插头和插座;超速 Micro A 插头;超速 Micro-AB 插座。 所有超速连接器具有相同的配合接口并且彼此兼容。 下表列…

腾讯云SDK购买流程

音视频终端 SDK 需购买对应 License/套餐获得使用授权,本文将对购买 License/套餐的操作进行详细指引。 您可首先参考计费概述 确认您需要购买的内容,随后参考本文进行购买。本文仅提供 SDK 授权费用所需资源的购买,如果您需要使用其他相关云…

锦天云中秋之夜团圆家宴圆满成功

2024年9月7日,锦天云(深圳)计算机设备有限公司 在中国深圳成功举办了“融创智合•月满锦天 锦天云中秋之夜团圆家宴。本次盛会吸引了来自各行业的精英和合作伙伴,大家齐聚一堂,共同庆祝这一传统佳节,此次活…

SPI驱动学习七(SPI_Slave_Mode驱动程序框架)

目录 一、SPI_Slave_Mode驱动程序框架1. Master和Slave模式差别1.1 主设备 (Master)1.2 从设备 (Slave)1.3 示例 2. SPI传输概述2.1 数据组织方式2.2 SPI控制器数据结构 3. SPI Slave Mode数据传输过程4. 如何编写程序4.1 设备树4.2 内核相关4.3 简单的示例代码4.3.1 master和s…

K8S真正删除pod

假设k8s的某个命名空间如(default)有一个运行nginx 的pod,而这个pod是以kubectl run pod命令运行的 1.错误示范: kubectl delete pod nginx-2756690723-hllbp 结果显示这个pod 是删除了,但k8s很快自动创建新的pod,但是…

今日指数项目股票成交量对比功能

股票成交量对比功能 1. 股票成交量对比功能分析 1.1 模型示列 功能描述:统计A股大盘T日和T-1日成交量对比功能(成交量为沪深两市成交量之和) 1.2 接口示列 返回数据格式 服务路径:/api/quot/stock/tradeAmt 服务方法&#xf…

PCL uniform_sampling均匀采样抽稀

目录 一、概述二、代码三、结果 一、概述 均匀采样抽稀点云。 二、代码 uniform_sampling.cpp #include <iostream> #include <pcl/io/pcd_io.h> #include <pcl/point_types.h> #include <pcl/point_cloud.h> #include <pcl/keypoints/uniform_s…

[Admin] Things Need to Know

List View Bulk Actions Highlight: To take bulk actions on all of the available records in a list, you click the bulk action button without selecting any records.

利士策分享,攀登职场高峰:成功者的十大特质

利士策分享&#xff0c;攀登职场高峰&#xff1a;成功者的十大特质 在职场这个竞争激烈的舞台上&#xff0c;那些能够迅速崛起、实现职业辉煌的佼佼者&#xff0c;往往凭借一系列独特且鲜明的特质脱颖而出。以下是对这些特质的深入探讨&#xff1a; 第一章&#xff1a;高情商的…

怎么不用付费直接编辑pdf?5款pdf在线编辑器免费推荐给你!

在我们日常工作中&#xff0c;可能会经常需要直接编辑修改pdf内容&#xff0c;例如&#xff0c;在将文档发送给其它人之前&#xff0c;您可能需要进行一些修改&#xff1b;或者当扫描的文本出现错误时&#xff0c;您也需要进行修正。此时&#xff0c;如果有一款在线编辑器&…