要全面的来描述python与java,python与C语言他们的区别,这恐怕不是几篇博文可以解决的,这里从编程习惯的角度说说python在编程习惯方面与C语系语言(java,c,c++,c#)的差别。
总的来说,C语系貌似一个讲规则的社会,而python则基本将C语系的规则抛弃殆尽,怎样随心怎样来,可以无中生有,想乱来就乱来,基本不讲武德,秩序全靠自觉!
一、主程序
在python中无须一个主程序来维持运行就可以进行语句的执行,这个类似matlab的模式或者有的解释性性语言,老早的lisp语言和脚本语言。
这样的语言不会因为某一句代码或者某一个参数而导致想执行的那一行目标代码执行失败,
# 可以什么其他代码都不要直接用print输出
print("hello python!")
正因为这点,anaconda工具中JupiterLab就可以帮助我们随时随地的输入某一行或某几行代码并且输出运行结果:
所以,作为python初次接触的人,可以考虑anaconda来帮助你理解python的语法规则。
不过这个东东安装稍微费时一些。
启动起来也显得比较慢,要转圈圈转好久才可以进入,不过这个属于正常,他启动时要在你的机器上开启一个虚拟环境。
二、输出
在python中print不再那么死板了,我们以前在C中,一个print要输出几个变量,则需要用连接符将他们连接再一起,如果遇到数据类型不同的要进行格式转换,但在python中则可以将不同的变量直接用逗号分离即可完成输出:
print("a word",'a',"232432",4545,True)
输出:a word a 232432 4545 True
三、变量
变量在python中一改C语系的先声明后使用(显式声明)的做法,直接使用,有点像老早以前的vb或vbscript。
如:
#前面没有任何声明,直接可以使用
yourAge=input("please input your age:")
print(yourAge)
四、数组
在python中对数组有的很大的改进,这点是我欣赏python的地方,它对数据的组织提供了很大的便利。
最令人喜爱的就是元组,以前我们需要将不同数据类型组成一个数组或者列表是不可能的事,但元组可以办到了,这样给我们传递一个不同数据类型组成的参数成为了可能,比如有个添加记录的方法addRecord(id,name,age),用到了三个参数。
如果我们使用元组,那么就一个参数即可
def addRecord(inf)
csr.execute("insert into customer values (?,?,?) ",(inf))
info=(13,'Doson',33)
addRecord(info)
五、属性
和变量一样,python中也无须在类中先声明属性,可以无中生有,是可以在类外动态增加和删除的,这个在C语系中是闻所未闻不敢想象的。
虽然在python中有好几种属性的定义和使用方法,但最放肆区别最大的就是这种无中生有的方式
class Human():
pass
hum = Human()
hum.age = 20
print("hum age is :",hum.age)
输出:hum age is :20
六、类的构造函数
类的定义的构造函数,在python中用__init__(self)代替了,也就是说,这个类需要在实例化的时候完成的时候情都是放在这里完成。
比如我们建立了一个sqlite的辅助类,需要它来完成一个数据库的建立功能
class DbHepler():
def def __init__(self):
conn=sqlite3.connect("fistdb.db")
csr=connect.cursor()
csr.execute("""create table if not exists customer(name text)""")
conn.commit()
conn.close()
七、方法
从上面的类的构造函数的定义我们可以看到,方法的定义是不必定义返回类型,没有返回类型也不需要用void来说明,函数有返回的时候写个return就可以了。
def doFirst():
print("Here is the first method")
def doSecond():
print("Here is the second method")
return "done!"
八、代码域与缩进
代码域,也就是我们说的代码的有效范围,在c语系中我们都采用的一对花括号来定义,{},但在python中我们就仅仅使用一个冒号(从格式上来说代码域是依靠缩进和冒号来唯一确认的)
如:
class dosome():
def dofirst(self):
print("Here is the first method")
ds=dosome()
ds.dofirst()
很显然,class结束的边界在实例化开始的地方,实例化时没有采用缩进了。
实际上这个在很多python的编辑器中同属的缩进是可以折叠的,如pycharm,这样一目了然
暂时感觉比较明显的大的差别就这些,大家有兴趣的可以留言补充。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)