建议3---理解Python与C语言的不同之处
我们都知道,Python的底层是用C语言实现的,但切忌用C语言的思维和风格来编写Python代码。Python与其他语言有很多不同,以下来进行简单的分析:
(1)"缩进"与“{}”
与C,C++,Java等语言使用花括号{}来分割代码段不同,Python中使用的代码缩进方式分割代码块。
(2)‘与“
C语言中单引号(')与双引号(")有严格的区别,单引号代表一个字符,它实际对应于编译器所采用的的字符集中的一个整数值。例如在ASCII中,'a'与数字97相对应。而双引号则表示字符串,默认以'\0'结尾。
但在python中,单引号和双引号没有明显区别,仅仅在输入字符串内容不同时,在使用上存在微小差异。
- >>> string1 = "He said ,\"Hello\" " #字符串中本身的双引号需要转义
- >>> string1
- 'He said ,"Hello" '
- >>> string2 = 'He said ,"Hello" ' #字符串本身的双引号不需要转义
- >>> string2
- 'He said ,"Hello" '
(3) 三元操作运算符“?:”
三元操作符是if...else的简写方法,语法形式为C?X:Y,它表示当条件C位True的时候取值为C,C为False的时候取值为Y。C?X:Y在Python中的等价形式为X if C else Y,即:
- >>> X = 0
- >>> Y = -2
- >>> print(X if X<Y else Y)
- -2
(4)switch...case
Python中没有像C语言那样的switch...case分支语句,不过Python有很多替代的方法。假设C语言实现的seitch...case语句如下:
- switch(n){
- case :
- printf("zero.\n");
- break;
- case1:
- printf("one.\n");
- break;
- case2:
- printf("two\n");
- break;
- default:
- printf("others");
- break;
- }
与以上C语言中switch...case对应的Python实现如下:
- if n ==0 :
- print("zero.\n")
- elif n==1:
- print("one.\n")
- elif n==2:
- print("two.\n")
- else:
- print("others")
或者使用字典来实现:
- def f(x):
- return {
- o : "zero.\n",
- 1 : "one.\n",
- 2 : "two.\n"
- }.get(n,"others")
以上只是简单的列举了几个Python和其他语言的不同点,事实上,其差异性远不止这些。
建议3---理解Python与C语言的不同之处的更多相关文章
- 【转】你真的理解Python中MRO算法吗?
你真的理解Python中MRO算法吗? MRO(Method Resolution Order):方法解析顺序. Python语言包含了很多优秀的特性,其中多重继承就是其中之一,但是多重继承会引发很多 ...
- python基础-初识Python和不同语言之间的区别
一.Python的创始人谁? Python之父:吉多·范罗苏姆GuidovanRossum 吉多·范罗苏姆是一名荷兰计算机程序员,他作为Python程序设计语言的作者而为人们熟知.在Python社区, ...
- python之 python 起源、语言特点
一. 1.1 什么是 PythonPython 是一门优雅而健壮的编程语言,它继承了传统编译语言的强大性和通用性,同时也借鉴了简单脚本和解释语言的易用性.它可以帮你完成工作,而且一段时间以后,你还能 ...
- python调用C语言接口
python调用C语言接口 注:本文所有示例介绍基于linux平台 在底层开发中,一般是使用C或者C++,但是有时候为了开发效率或者在写测试脚本的时候,会经常使用到python,所以这就涉及到一个问题 ...
- 深入理解Python中的GIL(全局解释器锁)
深入理解Python中的GIL(全局解释器锁) Python是门古老的语言,要想了解这门语言的多线程和多进程以及协程,以及明白什么时候应该用多线程,什么时候应该使用多进程或协程,我们不得不谈到的一个东 ...
- 如何理解 Python 的赋值逻辑
摘要: 如果你学过 C 语言,那么当你初见 Python 时可能会觉得 Python 的赋值方式略有诡异:好像差不多,但又好像哪里有点不太对劲. 本文比较并解释了这种赋值逻辑上的差异.回答了为什么需要 ...
- 深入理解 Python 异步编程(上)
http://python.jobbole.com/88291/ 前言 很多朋友对异步编程都处于"听说很强大"的认知状态.鲜有在生产项目中使用它.而使用它的同学,则大多数都停留在知 ...
- 正确理解python的装饰器
一直在用别人写的装饰器,从来没有对其原理进行深入的探究.今天趁有点闲着的时间,把装饰器的原理好好看了一遍,做一下整理. 一.装饰器的基本原理 装饰器就是一个可以接受调用也可以返回调用的调用.装饰器本身 ...
- 基于Spark环境对比Python和Scala语言利弊
在数据挖掘中,Python和Scala语言都是极受欢迎的,本文总结两种语言在Spark环境各自特点. 本文翻译自 https://www.dezyre.com/article/Scala-vs-Py ...
随机推荐
- 安装站点时出现“连接数据库出现数据库server或登录password无效,无法连接数据库,请又一次设定”解决方法
在安装站点时出现 "连接数据库出现数据库server或登录password无效,无法连接数据库,请又一次设定" 可是数据库username和password是正确的,在serv ...
- Insert Into 语句的语法错误
错误示意: 一开始程序是: 改正: 一条很简单的插入语句竟然会报错,然而直接在数据库的查询中执行中却没有问题,这个问题困扰了不少时间. 数据库使用的是ACCESS,INSERT INTO语句为inse ...
- 鼠标右键打开命令行cmd(管理员身份)
参考:https://blog.csdn.net/bdss58/article/details/54745380 添加到注册表 将下面命令保存为reg文件: Windows Registry Edit ...
- 有时间了解一下Spark SQL parser的解析器架构
1:了解大体架构 2:了解流程以及各个类的职责 3:尝试编写一个
- 2、原生jdbc的dao模式
一.dao模式 (data access object)1.作用:持久层,专门操作数据的层次结构,不掺杂任何的业务和其他内容2.dao组成部分: a.数据库工厂类 b.数据实体类 javabean p ...
- copyOf数组复制方法的使用(数组扩容练习)
package com.Summer_0420.cn; import java.util.Arrays; /** * @author Summer * 我们使用数组存储了50名学生的考试信息 , 今天 ...
- bsxfun, arrayfun, cellfun, spfun, structfun
在使用matlab进行矩阵计算的时候,经常会遇到要使用for循环的情况.但其实很多操作可以用内部的一些函数代替.今天总结一些几个函数的用法: bsxfun, arrayfun, cellfun, sp ...
- PAT A1055 The World's Richest (25 分)——排序
Forbes magazine publishes every year its list of billionaires based on the annual ranking of the wor ...
- dubbo源码阅读
http://seekheap.com/posts/dubbo/dubbo-src-01-overview-and-debug-environment.html 先占坑
- JVM深度解析
JVM是Java Virtual Machine(Java虚拟机)的缩写,JVM是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的.Java语言的 ...