最近准备学习了一下python语言,对比自己的主要语言C语言,我只讲不相同的地方,并且侧重讲python,因为c我用了十年,python还没怎么用过
本篇主要参考的python教程为菜鸟教程
变量
C语言,有严格的变量定义要求,可以先声明,再赋值,类型由创建时候选择;
Python,变量就是变量,没有类型,内容决定类型,赋值即创建。
注释
行数 | C语言 | Python |
---|---|---|
单行 | // | # |
多行 | /* */ | ‘’'或者""" |
运算
相同符号,不同功能
符号 | C语言 | Python |
---|---|---|
// | 注释 | 取整除 - 向下取接近商的整数 |
** | 幂 - 返回x的y次幂 | |
in | 如果在指定的序列中找到值返回 True,否则返回 False。 | |
not in | 如果在指定的序列中没有找到值返回 True,否则返回 False | |
is is | 是判断两个标识符是不是引用自一个对象 x is y, 类似 id(x) == id(y) , 如果引用的是同一个对象则返回 True,否则返回 False | |
is not | is not 是判断两个标识符是不是引用自不同对象 x is not y , 类似 id(a) != id(b) |
相同功能,不同写法
功能 | C语言 | Python |
---|---|---|
与 | & | and |
或 | 丨 | or |
非 | ! | not |
类似数组的东西
Python提供了四种类似数组的定义
- 列表 :逗号分隔的不同的数据项使用方括号括起来
- 元组 :与列表类似,不同之处在于元组的元素不能修改,用小括号括起来
- 字典 :字典的每个键值 key=>value 对用冒号 : 分割,每个对之间用逗号(,)分割,整个字典包括在花括号 {} 中 ,键必须是唯一的,但值则不必;值可以取任何数据类型,但键必须是不可变的,如字符串,数字。
- 集合:无序的不重复元素序列,可以使用大括号 { } 或者 set() 函数创建集合,注意:创建一个空集合必须用 set() 而不是 { },因为 { } 是用来创建一个空字典。
简单来说
列表 [a,b,c],比较接近数组
元组 (a,b,c),内容不可以变,类似const,常量
字典 {key1 : value1, key2 : value2, key3 : value3},key不能变,value可变
集合 {a,b,c}
条件判断
python最具特色的就是使用缩进来表示代码块,不需要使用大括号 {} 。
缩进的空格数是可变的,但是同一个代码块的语句必须包含相同的缩进空格数。
python格式
if condition_1:
statement_block_1
elif condition_2:
statement_block_2
else:
statement_block_3
condition如果是单一表达式,就直接写,不需要括号之类,例如
if i > 2:
如果多个条件,可用and or等并列,并且多重组合的条件,要用小括号按照优先级括起来。
例如C语言的
if(((a==1)&&(b==1))||((a==0)&&(b==0)))
转化为python
if ((a ==1) and (b == 1)) or ((a ==0) and (b == 0)):
循环
while注意事项跟if类似
while 判断条件(condition):
执行语句(statements)……
for循环,一般用来遍历列表用,和c语言中常用来控制循环次数不太一样
for <variable> in <sequence>:
<statements>
else:
<statements>
for和迭代器类似,都是遍历列表,区别可参考
来自php中文网的文章
函数
C语言函数就不介绍了,格式严格明确,入参出参,函数主体
python
def 函数名(参数列表):
函数体
由于没有变量格式的概念,所以返回值,入参都不需要明确类型,有啥是啥
#!/usr/bin/python3
def max(a, b):
if a > b:
return a
else:
return b
a = 4
b = 5
print(max(a, b))
输入输出
C语言常用scanf和printf,这是C语言中上学用的重要考点,也是工作之后处理调试的重要函数,尤其是scanf的格式化输入,秀的很
Python用input和printf函数,这两个属于内置函数
主要介绍下这两个函数,
简答来说,就是带输出的输入,这个输出是前面的提示信息,例如,请输入xxxx的值:,这种在C语言中是要单独输出的。
input的返回值是字符串,可以分割之后存成列表。
有点像echo的感觉。
逗号
这个标点在C语言中,用到的并不多,一般就是定义变量的时候,可以同时定义多个,例如
int x,y,z=0;
Python中用法目前还了解不深,但是发现了样例中的一个独特用法
这是计算斐波那契数列的代码
#!/usr/bin/python3
# Fibonacci series: 斐波纳契数列
# 两个元素的总和确定了下一个数
a, b = 0, 1
while b < 10:
print(b)
a, b = b, a+b
其中这两行
a, b = 0, 1
a, b = b, a+b
比较独特的用法,第一行还简单一些,看着就是定义了两个变量,分别赋初值,但是看惯了c总感觉有些别扭,如果要定义10个,这么写,很容看错位吧……
第二行作用就是,a=b,b=a+b,并且还需要暂时保持a和b的值为原来的值,相当于
n=b
m=a+b
a=n
b=m
我也尝试过写成,像一个
(a, b) = (b, a+b)
倒是也运行没错,但是总感觉和元组扯上了关系,虽然看着清楚了,但是心里感觉,不纯粹了。
自定义函数使用
C语言中,自定义函数的使用,可以通过定义在其他c文件,然后利用include方式包含该文件,就可以直接引用该文件中的函数,和在本文件定义无二差别;
Python中引用自定义的模块,关键字就是import,引用之后,调用的时候,要带模块名称
例如
# 导入模块
import support
# 现在可以调用模块里包含的函数了
support.print_func("Runoob")
未完持续……