python和c#哪个简单-最近学习 Python 的一些感触 (对比 C#)

反驳下Pythoner说的简单

之前很多人都说Python用起来简单,我的第一感觉就是胡扯,现在我稍微学了一点,更加坚信了那是胡扯。

当然Python在很小很小的项目里面可能是简单,例如Python写一个HelloWorld,其只要一句print "HelloWorld"就行了,而在C#里面,由于语法限制,其需要一个命名空间、一个类、一个Main函数和一句Console.WriteLine("HelloWorld");才能完成一个控制台输出HelloWorld的程序,但是倘若我们去完成一个稍微大一点的项目,那就不一定了。

例如我们要完成读取Excel中一张名为XXX表中的数据,在双方都不使用第三方框架的情况下,同时C#不使用ADO.NET技术,那么双方实现读取Excel的困难程度应该是差不多的,但是如果允许使用第三方类库(备注:1、使用免费的第三方类库,因为C#有个收费类库读取Excel只需要一两行代码就能完成;2、C#不使用ADO.NET技术),那双方的代码量应该是差不多的。

因此说Python用起来简单,那是无稽之谈,真正使开发变得简单的是第三方类库,而对于Python、C#(除了.Net Core外)来说,其第三方类库都是充足的,因此其开发应该都是差不多的。

Python与C#之间的不同点

1、程序的运行生命周期可以分为编译时、链接时、加载时、运行时,这4个阶段。在Python中,这4个阶段是一体的,而在C#中却是严格分离的,在C#要想跨阶段执行则就需要用到反射。这就造成了两者之间具有很大的不同。备注:不讨论C#中dynamic这样的动态类型。

例如依赖注入,在静态语言中依赖注入的价值体现在其通过IoC把对象对接口及实现的依赖反转为对DI容器的依赖,通过在DI容器中注入,从而获得对象的实现,即其将对象的索取从编译时、加载时转移到了运行时。而对于像Python这样的动态语言,由于其各个阶段是一体的,从而使得其本身的运行环境就好比是一个DI容器。

2、由于1的原因,Python可以实现类型之间的快速切换,而C#却需要通过相应的类型转换才能实现。备注:无视C#隐式类型转换

例如int和long之间的切换

num=2147483647

num=num+1

Python:2147483647是int的上限值,当其+1后,这个num变量会自动转变为long类型

int num=2147483647;

num=num+1;

而如果C#写成这样,其程序在运行到num=num+1;时,便会出错

int num=2147483647;

long numLong=(long)num+1;

我们只有先将num转化为long类型,然后+1,并赋值给新的对象,这样我们才能获得正确的值2147483648。

3、同样由于1的原因,Python无法做静态类型检查,而C#却会进行静态类型检查。

这使得C#在编译时就能发现相应的类型错误,而Python却只能在程序运行时才能发现。

对于Python的这一点,其就好像是一把双刃剑,虽然这免去了类型约束,便于写代码,但是这也使得代码变得更难维护。这也是“动态类型一时爽,代码重构火葬场”的由来。

4、Python没有访问修饰符,而C#有public、private、internal、protected、protected internal等的访问修饰符。

访问修饰符可以起到对相关内容访问的控制作用。但是Python却没有,有人说__是私有什么的,那其实是伪私有,换个写法就又能进行访问了,因此Python中相关内容的访问全靠编程者的自觉,同时编程者也必需知道哪些内容可以访问,哪些内容不可访问。

5、Python没有interface,其只能类继承,同时其还支持多继承,而C#只能单继承,一个类只能继承一个类,当然C#为了弥补单继承的不足,还带来了interface,一个类可以继承多个interface。

有关Python的抽象类多继承和C#的interface多继承,这2者之间的区别就不多说了,区别还是比较大的。

Python的多继承会增加代码的复杂度,再加上Python没有访问修饰符,这也就变相要求了编程者的能力,尤其是当项目越来越大,需求越来越多,业务越来越复杂的时候。

6、Python没有泛型,或者说不需要泛型,而C#却有泛型。

对于这一点没什么好说的,Python不需要泛型的理由就是之前提到的1、2这两点,即由于其所有变量签名都是动态的,因此对于Python来说,其不需要泛型。

总结:

1、Python是一门非常灵活的动态语言及动态类型语言。Python为了其灵活性,抛弃了很多东西,因此我认为这灵活性就相当于一把双刃剑,真正要想掌控好这门语言还是挺难的。

2、除了上面说的不同点外,其实Python和C#之间还有很多其他的不同点,具体的不说了,在这儿我想说的是他们两者的编程思维也因此发生很大的不同。所以如果你目前只会动态语言,那就去学一门静态语言看看吧;如果你目前只会静态语言,那就去学一门动态语言看看吧,只有动静结合方能大成/滑稽

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

霍普分叉matlab程序,基于MATLAB_GUI的Kalman滤波程序

第1章Kalman滤波理论1.1 Kalman滤波理论的应用背景信号是传递和运载信息的时间或空间函数。信号有两类,即确定性信号和随即信号。确定性信号的变化规律是既定的,可以表示为一确定的时间函数或空间函数,具有确定的频谱特性,如阶跃信…

java代码自动生成的插件_如何使用插件生成自定义Java 8代码

java代码自动生成的插件大多数程序员讨厌的一件事就是编写样板代码。 无休止的时间花费在设置实体类和配置数据库连接上。 为了避免这种情况,您可以让Speedment Open Source之类的程序为您生成所有这些代码。 这样可以很容易地以最少的人工就可以启动和运行数据库项…

【开源项目】QT播放PCM音频实例详细

#include<QtCore/QCoreApplication> #include<QAudioFormat> #include<QAudioOutput> #include<QThread> #include<iostream> using namespace std; //准备好PCM数据 //ffmpeg -i PP.mp4 -f s16le out.pcm int main(int argc, char *argv[]) {Q…

PHP在Tomcat中CSS出错,tomcat找不到css怎么办

tomcat找不到css怎么办Tomcat找不到WEB下的Css文件&#xff0c;一般可以通过以下方式解决&#xff1a;将路径相对位置修改为域相对位置&#xff0c;如下&#xff1a;备注&#xff1a;WEB-INF不是公共访问目录&#xff0c;只有在Servlets的RequestDispatcher或JSPS的可以访问&am…

java与java ee_Java EE 8 MVC:全局异常处理

java与java ee在之前的先前文章中&#xff0c;我们了解了在Java EE MVC中访问请求信息&#xff08;例如查询或路径参数 &#xff09;的各种方法。 这篇文章显示了如何将全局异常处理应用于MVC应用程序。 假设我们有一个控制器方法可能抛出IllegalArgumentException&#xff1a…

eve模拟器_《Re:从零开始的新伊甸征程》一步到位教你下载EVE手游

自从小生发布了《「EVE Echoes」萌新向完全入门指南》后有小伙伴回应不懂怎样下载游戏的问题&#xff0c;小生作为殷郡中的一名闲云野鹤也尽一点绵薄之力帮助各位&#xff0c;尽量为各位扫清前往新伊甸的“石头”吧。[酷]在开篇前小生可以大致明确告诉你&#xff0c;不要问小生…

【开源项目】QT OPENGL 与 shader 绘制展示视频代码实例 OPenGL直接显示YUV数据

本文使用QT中的QOpenGLFunctions&#xff08;此类封装了OPenGL的方法&#xff0c;相当于QT版OPenGL&#xff09; 其次重载 void paintGL(); void initializeGL(); void resizeGL(int width, int height);是基本操作 * 三种GLSL变量说明 * varying 顶点与片元共享 * attri…

java开发课程表_展示Java开发人员课程包

java开发课程表60个小时以上的课程&#xff0c;5门所有级别的课程&#xff1a;成为Java编程专家 嘿&#xff0c;怪胎&#xff0c; 本周&#xff0c;在我们的JCG Deals商店中 &#xff0c;我们提供了一个极端的报价 。 我们提供的Java Developer Course Bundle 仅售39美元&am…

二阶自回归过程matlab,时间序列分析:二阶自回归过程

时间序列分析&#xff1a;二阶自回归过程Author: nex3z2019-07-131. 定义对于二阶自回归过程 $AR(2)$\begin{equation}X_t \phi_1 X_{t-1} \phi_2 X_{t-2} e_t \tag{1}\end{equation}假设 $e_t$ 独立于 $Y_{t-1}, Y_{t-2}, \cdots$。式 $(1)$ 也可以表示为\begin{equation}X…

m4s格式转换mp3_mp4怎么转换成mp3格式?mp4转mp3的傻瓜式方法

原标题&#xff1a;mp4怎么转换成mp3格式&#xff1f;mp4转mp3的傻瓜式方法或许对于很多小伙伴来说&#xff0c;要将视频改变一下格式就已经很难了&#xff0c;又何况是要将原本的视频改变成音频格式呢&#xff1f;一个是视频&#xff0c;一个是音频&#xff0c;压根就是风马牛…

Git安装及基本操作

1.安装Git 配置用户 git config --global user.name "用户名" git config --global user.email "邮箱"配置完成后查看配置 git config -l生成SSH秘钥 ssh-keygen -t rsa -C “邮箱” 输入完成后需要按3次Enter键 $ ssh-keygen -t rsa -C "邮箱&quo…

Ubuntu下如何正确安装FFmpeg

启动管理员权限 su Linux 安装GL库 &#xff0c;root身份权限运行 sudo apt-get install libgl1-mesa-dev 安装失败删除 rm /var/lib/dpkg/lock 再安装 apt-get inastall g make 安装git sudo apt-get install git 下载源码 git clone https://git.ffmpeg.org/ffmpeg.git…

【FFMPEG应用篇】保存YUV420数据到本地

void SaveYUV420(AVFrame* Frameyuv) {//********************** 保存YUV数据FILE *yuv_file fopen("yuv_file", "ab");if (yuv_file){qDebug() << "OK-----------";}char* buf new char[Frameyuv->height * Frameyuv->width * 3 …

java ee架构_与Java EE和Spring的集成架构

java ee架构本周在纽约举行的OReilly软件体系结构大会将举行 。 我很高兴与Josh Long一起提供有关如何集成Java EE和Spring的教程。 一段时间以来&#xff0c;我们一直在开玩笑。 某些人想到的对两种技术的超级愚蠢见解从一开始就困扰着我们俩。 这次演讲的另一个重要原因是&am…

ZigBee网络数据传递流程_蓝牙、Wifi与ZigBee三种,这三种无线传输技术,谁能一统天下...

智能产品种类越来越多&#xff0c;运用在智能家居上的技术也越来越成熟。然而在无线通信协议上却一直无法做到统一&#xff0c;从目前的情况来看&#xff0c;短期内是无法实现这一愿望的了。既然如此&#xff0c;我们何不另辟蹊径&#xff0c;在这些标准中&#xff0c;选择优势…

用matlab解一维单势垒波函数,一维多势垒结构准束缚态的MATLAB分析计算

第33卷 第2期 红 外 技 术 Vol.33 No.2 2011 年 2 月 Infrared Technology Feb. 2011 85 一维多势垒结构准束缚态的 MATLAB 分析计算 王忆锋&#xff0c;唐利斌&#xff0c;岳 清 (昆明物理研究所&#xff0c;云南 昆明 650223) 摘要&#xff1a;一维多势垒结构的准束缚态可以通…

java正则表达式匹配空字符串,【java】空字符串作为正则表达式,匹配什么?

空字符串作为正则表达式&#xff0c;匹配什么&#xff1f;ls makeList(" AB CDEFG HIJKLMNOPQRSTUVWXYZ".split(""));System.out.println(ls);输出&#xff1a;[ , A, B, , C, D, E, F, G, , H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y, Z]为…

根据变量推断变量类型_Java A的新本地变量类型推断

根据变量推断变量类型对于编程语言迷来说&#xff0c;新闻几乎比这更令人兴奋&#xff01; 现在&#xff0c;存在状态为“候选”的JEP 286用于本地变量类型推断 。 以及Brian Goetz的反馈请求&#xff0c;我很想邀请您参加&#xff1a; http : //mail.openjdk.java.net/piperm…

千元平板电脑排行榜_最值得买的平板电脑推荐-最佳平板电脑品牌排行榜【2020年10月】...

平板电脑相较笔记本电脑而言&#xff0c;以其便携与功能强大的特点成为大家日常生活和工作的必备搭档&#xff0c;无论在性能配置上还是在内置软件应用方面&#xff0c;不同的使用场景有不同的需求。今天给大家推荐最佳平板电脑品牌排行&#xff0c;希望对大家选购平板电脑有帮…