当前位置: 首页 > article >正文

【C#vsPython·第一阶段】 Python 的运算符,有些地方真的“骚“

在 C# 里判断一个数在 0 到 10 之间你得写x 0 x 10。在 Python 里直接写0 x 10。对就这么简单编译器...哦不解释器不会报错。当我第一次看到这个写法的时候我心想这也行然后我试了一下真的行。Python 的运算符有些地方真的骚。算术运算符C# 版本int a 10, b 3; int sum a b; // 13 int diff a - b; // 7 int product a * b; // 30 double division (double)a / b; // 3.333...需要类型转换 int intDivision a / b; // 3整数除法 int remainder a % b; // 1取余 // 幂运算没有内置运算符 double power Math.Pow(2, 10); // 1024.0Python 版本a, b 10, 3 sum_val a b # 13 diff a - b # 7 product a * b # 30 division a / b # 3.333...始终是浮点数 int_div a // b # 3整除 remainder a % b # 1取余 # 幂运算内置运算符 power 2 ** 10 # 1024对比项C#Python加法减法--乘法**除法/整数会截断/始终浮点数整除/ 类型转换//专用运算符取余%%幂运算Math.Pow()**C# 的/在整数之间会截断10 / 3 3Python 的/始终返回浮点数10 / 3 3.333...。要整除得用//。Python 的**幂运算让数学公式几乎可以原样翻译成代码——x ** 2就是 x 的平方比Math.Pow(x, 2)简洁太多了。为什么 Python 要这样设计因为 Python 的设计哲学是**代码即数学**。在数学中幂运算就是上标Python 用**来表示非常直观。而 C# 需要调用Math.Pow()方法不够优雅。真实场景在数据分析和科学计算中经常需要计算幂次方。Python 的**运算符让代码更简洁# 计算圆的面积 radius 5 area 3.14159 * radius ** 2 # 计算复利 principal 1000 rate 0.05 years 10 future_value principal * (1 rate) ** yearsC# 得这样写double radius 5; double area 3.14159 * Math.Pow(radius, 2); double principal 1000; double rate 0.05; int years 10; double futureValue principal * Math.Pow(1 rate, years);链式比较C# 不能链式比较int x 5; // 这样写会报错 // if (0 x 10) { } // 编译错误 // 必须这样写 if (x 0 x 10) { Console.WriteLine(x 在 0 到 10 之间); } // 多条件比较 if (x 0 x 100 x ! 50) { Console.WriteLine(满足条件); }Python 支持链式比较x 5 if 0 x 10: print(x 在 0 到 10 之间) # 多条件比较 if 0 x 100 ! 50: print(满足条件) # 等价于 if (0 x) and (x 100) and (x ! 50): print(满足条件)特性C#Python链式比较不支持支持多条件用连接直接链式写可读性一般更好Python 的链式比较0 x 10是真正的语法糖C# 想这么写得编译器报错。为什么 Python 要支持链式比较因为链式比较更符合数学直觉。在数学中我们习惯写0 x 10而不是x 0 ∧ x 10。Python 让代码更接近数学表达。真实场景在验证表单输入时经常需要检查范围# 检查年龄是否有效 age 25 if 0 age 150: print(年龄有效) else: print(年龄无效)C# 得这样写int age 25; if (age 0 age 150) { Console.WriteLine(年龄有效); } else { Console.WriteLine(年龄无效); }逻辑运算符C# 版本bool a true, b false; bool and a b; // false bool or a || b; // true bool not !a; // false // 短路求值 if (a SomeExpensiveOperation()) { // 如果 a 是 falseSomeExpensiveOperation() 不会执行 }Python 版本a, b True, False and_val a and b # False or_val a or b # True not_val not a # False # 短路求值和 C# 一样 if a and some_expensive_operation(): # 如果 a 是 Falsesome_expensive_operation() 不会执行 pass # 但要注意Python 返回的是实际的值不一定是布尔值 x None or default # default y 0 or 42 # 42 z hello or world # helloPython 的and/or返回的是实际的值不一定是布尔值。None or default返回default0 or 42返回42。这个特性在 C# 里是没有的。为什么 Python 的 and/or 返回实际值因为 Python 的and/or是短路求值运算符它们返回最后一个被求值的表达式。这个特性可以用来实现默认值# 设置默认值 name user_input or Anonymous等价于if user_input: name user_input else: name Anonymous真实场景在处理可选参数时这个特性非常有用def greet(nameNone): # 如果 name 是 None 或空使用默认值 name name or World return fHello, {name}! print(greet()) # Hello, World! print(greet(Alice)) # Hello, Alice!C# 得这样写string Greet(string name null) { name name ?? World; return $Hello, {name}!; }赋值运算符C# 版本int x 5; x 3; // x x 3 x - 2; // x x - 2 x * 4; // x x * 4 x / 2; // x x / 2 x % 3; // x x % 3 x 0xFF; // 按位与赋值 x | 0x01; // 按位或赋值 x 1; // 左移赋值Python 版本x 5 x 3 # x x 3 x - 2 # x x - 2 x * 4 # x x * 4 x / 2 # x x / 2 x % 3 # x x % 3 x // 2 # 整除赋值Python 独有 x ** 2 # 幂赋值Python 独有 x 0xFF # 按位与赋值 x 1 # 左移赋值Python 多了//整除赋值和**幂赋值这两个是 C# 没有的。三元表达式C# 版本int x 5; string result x 0 ? 正数 : 非正数; // C# 9 模式匹配 string result2 x switch { 0 正数, 0 负数, _ 零 };Python 版本x 5 result 正数 if x 0 else 非正数 # Python 3.10 match-case类似 C# 的 switch match x: case x if x 0: result2 正数 case x if x 0: result2 负数 case _: result2 零C# 的三元表达式是条件 ? 值1 : 值2Python 的是值1 if 条件 else 值2——顺序反过来了。身份运算符C# 版本object a new object(); object b a; object c new object(); bool same ReferenceEquals(a, b); // true同一引用 bool different ReferenceEquals(a, c); // false不同引用Python 版本a [1, 2, 3] b a c [1, 2, 3] same a is b # True同一对象 different a is c # False不同对象 value_equal a c # True值相等 # None 比较 x None if x is None: # 推荐用 is 比较 None print(x 是 None)C# 用ReferenceEquals()比较引用Python 用is比较身份。Python 的is比 C# 的方法调用简洁多了。为什么 Python 用is而不是因为is比较的是对象身份内存地址比较的是值。对于None这种单例对象用is更高效也更符合 Python 的惯例。设计哲学C# 的哲学是显式运算符——每个运算符都有明确的含义类型安全遵循 C 风格的运算符设计。Python 的哲学是语法糖——链式比较让代码更简洁**幂运算让公式更自然and/or/not比/||/!更易读。C# 像是给你一套标准的工具箱每个工具都有明确的用途 Python 像是给你一套多功能工具有些工具还能组合使用。迁移指南C# 开发者最容易犯的错以为/整数除法会截断Python 的/始终返回浮点数忘记**幂运算C# 没有内置幂运算符以为and/or返回布尔值Python 的and/or返回实际值用比较 NonePython 推荐用is比较 None忘记链式比较Python 支持0 x 10这种写法坑点提醒除法陷阱——Python 的除法始终返回浮点数print(10 / 2) # 5.0不是 5 print(10 // 3) # 3整除取余符号——Python 的取余结果符号和除数一致print(-7 % 3) # 2不是 -1 print(7 % -3) # -2不是 1链式比较的陷阱——链式比较是全链路求值x 5 # 0 x 10 等价于 (0 x) and (x 10) # 但要注意短路求值 print(0 x 10 / 0) # 会报错海象运算符——Python 3.8 的新特性# 在表达式中赋值 if (n : len([1, 2, 3])) 2: print(f长度是 {n}) # 3 # 但不要滥用会影响可读性一句话总结Python 的链式比较0 x 10是真正的语法糖C# 想这么写得编译器报错。下一篇咱们来聊聊字符串操作——Python 的切片语法s[1:4]比 C# 的Substring简洁太多了还有那个一行代码就能反转字符串的s[::-1]。配套资源关注公众号「半亩码田」回复「资料」获取C# vs Python 完整对照速查表全系列思维导图48章配套练习题 答案C# 转 Python 15个血泪教训文章平台知乎https://www.zhihu.com/people/leng-han-bing-99-24/columnsCSDNhttps://blog.csdn.net/hanzhixintianxia?typeblogColumn掘金https://juejin.cn/user/2556777887194697/columns博客园https://www.cnblogs.com/hzx1025/collections/39731代码仓库GitHubhttps://github.com/LadyKiller1025/csharp-python-demosGiteehttps://gitee.com/qakjhzx/csharp-python-demos 欢迎点赞、收藏、转发你的支持是我持续创作的动力

相关文章:

【C#vsPython·第一阶段】 Python 的运算符,有些地方真的“骚“

在 C# 里判断一个数在 0 到 10 之间&#xff0c;你得写 x > 0 && x < 10。 在 Python 里&#xff1f;直接写 0 < x < 10。对&#xff0c;就这么简单&#xff0c;编译器...哦不&#xff0c;解释器不会报错。 当我第一次看到这个写法的时候&#xff0c;我心…...

Markdown Viewer:打造终极浏览器Markdown阅读体验的完整解决方案

Markdown Viewer&#xff1a;打造终极浏览器Markdown阅读体验的完整解决方案 【免费下载链接】markdown-viewer Markdown Viewer / Browser Extension 项目地址: https://gitcode.com/gh_mirrors/ma/markdown-viewer Markdown Viewer是一款功能强大的浏览器扩展&#xf…...

告别商业收费与审核枷锁:深度拆解 Open-Generative-AI,构建 MIT 开源、零过滤的私有化视频生成工作站

发布日期&#xff1a; 2026-05-18标签&#xff1a; #Open-Generative-AI #Sora #Flux #Veo #AI视频生成 #私有化部署一、 引言在 2026 年&#xff0c;大模型生成图像与视频&#xff08;Text-to-Video&#xff09;的技术已经炉火纯青&#xff0c;但创作者们依然面临着三大难以言…...

2026年靠谱物联网供应商榜

作为深耕物联网领域五年的工程师&#xff0c;我见过太多“看起来很美好”的技术方案——设备接入率低、数据延迟高、多协议适配困难&#xff0c;尤其当项目涉及复杂环境时&#xff0c;这些问题会被无限放大。我们团队在实践中发现&#xff0c;许多物联网平台在核心算法层面缺乏…...

基于MCP协议构建AI Agent与Atlassian生态的智能集成实践

1. 项目概述与核心价值最近在折腾AI Agent的生态&#xff0c;特别是如何让它们更好地融入我们日常的开发与项目管理流程。一个绕不开的话题就是MCP&#xff08;Model Context Protocol&#xff09;&#xff0c;它本质上为AI模型提供了一个标准化的方式来发现、调用和使用外部工…...

彻底告别桌面混乱:NoFences桌面分区工具终极解决方案

彻底告别桌面混乱&#xff1a;NoFences桌面分区工具终极解决方案 【免费下载链接】NoFences &#x1f6a7; Open Source Stardock Fences alternative 项目地址: https://gitcode.com/gh_mirrors/no/NoFences 还在为Windows桌面上杂乱无章的图标而烦恼吗&#xff1f;每天…...

雷达接收机频谱稳定与纯度:核心指标、测试方法与设计实战

1. 项目概述&#xff1a;为什么频谱稳定性和纯度是雷达的“生命线”&#xff1f; 在雷达系统里&#xff0c;我们常把发射功率、天线增益、接收机灵敏度这些指标挂在嘴边&#xff0c;因为它们直接决定了雷达能“看”多远。但今天要聊的“接收机频谱稳定性和纯度”&#xff0c;就…...

Taotoken助力初创团队以可控成本构建AI应用原型

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 Taotoken助力初创团队以可控成本构建AI应用原型 对于资源有限的初创团队而言&#xff0c;快速验证AI功能是产品创新的关键一步&…...

全域数学公理体系下Navier-Stokes方程本源证明(正式论文版)

全域数学公理体系下Navier-Stokes方程本源证明&#xff08;正式论文版&#xff09; 作者&#xff1a;乖乖数学 成文日期&#xff1a;2026年5月25日 体系归属&#xff1a;全域数学大典卷七数学物理应用层 核心立论&#xff1a;光速恒定公理、时空曲率公理、四维通量守恒公理格式…...

Go语言命令行交互库promptui实战:打造专业CLI工具

1. 项目概述&#xff1a;一个让命令行交互“活”起来的工具如果你经常和命令行打交道&#xff0c;无论是管理服务器、运行自动化脚本&#xff0c;还是开发调试&#xff0c;肯定遇到过需要用户输入参数的情况。传统的做法是使用read命令&#xff0c;或者在脚本里写死参数&#x…...

Cursorify:构建AI驱动的深度集成开发环境框架

1. 项目概述&#xff1a;从“智能代码补全”到“深度集成开发环境”的跨越最近在开发者社区里&#xff0c;一个名为“Cursorify”的项目引起了不小的讨论。乍一看这个标题&#xff0c;很多人的第一反应可能是“哦&#xff0c;又一个基于Cursor的插件或者工具”。但当你真正深入…...

TPS40192与TPS40193多相降压控制器:DCR与CS电流检测方案深度对比与设计实践

1. 项目概述&#xff1a;从两颗芯片说起最近在做一个大电流的分布式电源项目&#xff0c;板子上需要给核心处理器和一堆外围芯片供电&#xff0c;电流需求从几安培到几十安培不等&#xff0c;电压轨也有好几路。这种场景下&#xff0c;传统的线性稳压器&#xff08;LDO&#xf…...

基于Agent Deck构建多智能体系统:从原理到工程实践

1. 项目概述&#xff1a;从“Agent Deck”看智能体协作平台的构建最近在GitHub上看到一个挺有意思的项目&#xff0c;叫asheshgoplani/agent-deck。光看这个名字&#xff0c;你可能会联想到一副“牌”&#xff0c;或者一个“控制台”。没错&#xff0c;这个项目的核心思想&…...

Fan Control:Windows平台终极风扇控制解决方案

Fan Control&#xff1a;Windows平台终极风扇控制解决方案 【免费下载链接】FanControl.Releases This is the release repository for Fan Control, a highly customizable fan controlling software for Windows. 项目地址: https://gitcode.com/GitHub_Trending/fa/FanCon…...

Android本地代理服务器droidproxy:原理、部署与流量分析实战

1. 项目概述与核心价值最近在折腾Android应用网络调试和流量分析时&#xff0c;发现了一个挺有意思的开源项目——anand-92/droidproxy。简单来说&#xff0c;这是一个运行在Android设备上的HTTP/HTTPS代理服务器。你可能觉得&#xff0c;代理工具不是满大街都是吗&#xff1f;…...

从STK仿真到链路决策:低轨卫星网络静态拓扑构建实战解析

1. 低轨卫星网络静态拓扑基础认知 第一次接触卫星网络拓扑时&#xff0c;我被各种专业术语绕得头晕。直到把STK软件里的卫星模型调出来&#xff0c;看着那些在三维空间规律运转的小圆点&#xff0c;才真正理解什么是静态拓扑。简单来说&#xff0c;就是在不考虑卫星实时运动的情…...

libiec61850实战:手把手教你用C语言动态获取IED设备模型(附完整代码)

libiec61850实战&#xff1a;C语言动态解析未知IED设备模型的完整指南 在工业自动化与电力系统通信领域&#xff0c;IEC 61850标准已成为智能电子设备(IED)间交互的通用语言。面对一个未提供完整SCL配置文件的陌生IED设备&#xff0c;如何快速探查其内部数据模型结构&#xff1…...

小学期学习报告-1

通过B站视频学习之后&#xff0c;我掌握冰设计出了555方波发生电路和低通滤波器&#xff0c;通过示波器可以看到&#xff0c;已经除了稳定的方波和正弦波 在这个过程中&#xff0c;根据公式T0.7*&#xff08; R12R2&#xff09;*C1&#xff0c;多次调整并得出稳定波形&#xff…...

ESP32-S3 UF2 Bootloader修复指南:从原理到实战救砖

1. 项目概述&#xff1a;为什么ESP32-S3需要UF2 Bootloader&#xff1f;如果你玩过树莓派Pico或者一些Adafruit的开发板&#xff0c;可能会对那个插上USB后出现的U盘盘符有印象——直接把一个.uf2文件拖进去&#xff0c;固件就更新好了&#xff0c;简单得不像在搞嵌入式开发。这…...

从编译失败到成功发布:用VS BuildTools彻底解决MSBuild“能编译不能发布”的坑

从编译到发布&#xff1a;彻底解决MSBuild部署.NET Framework网站的技术困境 许多.NET开发者都曾遇到过这样的场景&#xff1a;在命令行中能够顺利编译项目&#xff0c;却在尝试发布&#xff08;Publish&#xff09;ASP.NET网站时遭遇各种莫名错误。这种"能编译不能发布&q…...

基于LLM的代码仓库智能分析:RepoMap-AI实现架构可视化与认知图谱

1. 项目概述&#xff1a;当AI成为你的代码库“活地图”最近在折腾一个老旧的Java项目&#xff0c;里面模块套模块&#xff0c;依赖关系复杂得像一团乱麻。想找个特定的工具类&#xff0c;得在十几个包里翻来覆去地搜&#xff1b;想理清某个核心服务的调用链路&#xff0c;光靠I…...

【玩转Jetson TX2 NX】(四)M.2 SSD系统迁移实战:从克隆到无缝启动

1. 为什么需要将系统迁移到M.2 SSD&#xff1f; Jetson TX2 NX作为一款嵌入式AI计算设备&#xff0c;默认搭载的eMMC存储空间往往捉襟见肘。我在实际项目中发现&#xff0c;16GB的eMMC在安装完JetPack系统后&#xff0c;剩余空间连一个中等规模的深度学习模型都放不下。更不用…...

避坑指南:STM32F407的ADC多通道采样,你的数据顺序真的对了吗?

STM32F407多通道ADC采样数据错位排查手册 在嵌入式开发中&#xff0c;ADC多通道采样是常见需求&#xff0c;但数据顺序错乱问题却让不少工程师深夜加班。上周有位同行发来求助&#xff1a;他的四通道温度监测系统运行两周后&#xff0c;突然出现通道数据交叉污染&#xff0c;导…...

AI行业的“新风口”:大模型时代下AI从业者的职业新机遇

在AI大模型技术飞速发展的当下&#xff0c;全球AI市场规模正以惊人速度扩张。据IDC预测&#xff0c;2025年全球AI大模型市场规模突破1200亿美元&#xff0c;中国占比超35%。这股浪潮不仅重塑了软件开发行业格局&#xff0c;也为软件测试从业者带来了前所未有的职业新机遇。对于…...

长期使用Taotoken服务在延迟与可用性方面的主观回顾

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 长期使用Taotoken服务在延迟与可用性方面的主观回顾 1. 引言 在近一年的项目开发与维护周期中&#xff0c;我们团队持续将Taotoke…...

中国500万医生的新AI:顶刊独家联手,卷的就是证据源

金磊 发自 杭州量子位 | 公众号 QbitAI很反差。明明是一场AI的发布会&#xff0c;台下却坐满了医学界的大佬们&#xff1a;有北大、清华的&#xff0c;有浙江、上海的&#xff0c;甚至医学顶刊BMJ集团的主编都来围观了……△图片由AI生成为啥会这样&#xff1f;因为阿里健康正式…...

机器人抓取技能自动化:从仿真学习到现实迁移的实践指南

1. 项目概述与核心价值最近在机器人抓取领域&#xff0c;一个名为simpliolabs/manus-open-claw-skill-hunter-and-developer的项目引起了我的注意。乍一看这个标题&#xff0c;它像是一个开源工具或框架&#xff0c;核心围绕着“机械手开放爪具”的“技能猎人”与“开发者”。这…...

原创丨全球主流开源模型及其衍生生态解析

作者&#xff1a;李媛媛 本文约4800字&#xff0c;建议阅读15分钟本文介绍了全球主流开源基座模型及衍生模型的特点、应用与趋势。在人工智能技术产业化落地加速的当下&#xff0c;开源模型已成为推动行业创新的核心力量&#xff0c;其开放、可定制的特性打破了技术壁垒&#x…...

深入解析Roll:轻量级滚动动画库的设计原理与工程实践

1. 项目概述&#xff1a;一个轻量级、可扩展的滚动动画库在Web前端开发中&#xff0c;滚动动画&#xff08;Scroll Animation&#xff09;早已不是新鲜概念。从早期简单的视差效果&#xff0c;到如今复杂的元素交互动画&#xff0c;滚动动画已经成为提升用户体验、增强页面叙事…...

批量处理二维码图片,真的需要联网吗?这款离线高效工具给你答案!

批量处理二维码图片&#xff0c;真的需要联网吗&#xff1f;这款离线高效工具给你答案&#xff01; 【免费下载链接】QrScan 离线批量检测图片是否包含二维码以及识别二维码 项目地址: https://gitcode.com/gh_mirrors/qrs/QrScan 想象一下这个场景&#xff1a;公司市场…...