Python自学笔记1——简介&数据类型&IO

引言:

"life is short, I choose python."

自学python并做机器学习和统计分析已经快两年了。现在把学习的一些感受和知识重新整理出来,供参考、批评指正。这系列笔记针对已有编程基础(如C/C++,JAVA)的朋友阅读。

Python简介:

关于环境:python的开发工具很多,个人习惯下个Anaconda创建环境&用Jupyter,大型项目代码用VS Code也很方便。

关于语言:python是一个面向对象的、解释型、动态数据类型的语言。

所谓面向对象,是指python支持类;使用类和函数进行封装在python中非常常见。事实上python“万物皆对象”,即使是最简单的数据类型也是以类的形式呈现的。如:

 这里将变量a的值定义为整型2,实际上系统创建了一个int类的对象,该对象的值为2。同理,float, bool, tensor等数据类型和函数等也都是基于类和对象实现的!

PS:python只有class,没有C的结构体。

python“万物皆对象”的特点赋予了它和其他语言的很多不同,这在后面会慢慢提到。

所谓解释型语言,是指源代码经过解释器之后直接执行,这类的语言如python,JavaScript;与之相对应的编译型语言,需要先经过编译器生成目标代码,机器再运行目标代码;比如C会编译生成汇编代码,并链接执行。

解释型语言省去了目标代码生成,一切错误都在运行时被发现(而C的错误会在编译时都被找出)。但解释型语言每次运行之前都要重新解释,不像C第一次之后只需要执行目标代码,所以速度较慢。

所谓动态类型,是指变量的类型在最终程序运行时才进行类型检查,所以python可能在运行时报出类型不匹配等错误;而C,JAVA等语言属于静态类型语言,在编译时就会进行类型检查。

不同于C或者Java以分号区分语句,python通过缩进来区分不同语句,这让python的书写有严格的格式要求,例如C语言的以下两种写法都正确:

//写法1
int a,b;
a=2;
a=3;
//写法2
int a,b;a=2;
   a=3;

而python一般来讲,一个语句占据一行,这就不用加;了:

a=2
a=3
#或者对于赋值语句也可以写成
a,b = 2,3

虽然python也可以多个语句写在同一行或者一个语句写在多行,例如

a=2;b=3;print(a,b)
a=2\    
+3     #通过反斜杠\把分布在多行的语句连在同一行
s="aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\
bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb\
cccccccccccccccc"

但这样会破坏程序的可读性,用的好像也很少。。。除了\在处理一些语句过长时可能用到。

另外C语言通过{}区分不同的if等语句块,而python通过缩进4个空格或1个Tab来区分:

//这样的C是正确的
if(a<5)
{
printf("aaaaaa");
printf("bbbbbbbbbb");
   print("ccc");
}

但python只能这些写:

if a<5:
    print("aaaaaaaaa")
    print("bbbbbb")
    print("cccc")
print("dddd")  #这句代码就在if语句块外了

这样的缩进也增强了代码可读性。

python支持两种格式的注释:

#这种注释了某一行内容
#这种注释了某一行内容

'''
两个三引号中间的是被注释掉的一段代码块
'''

"""
单引号也可以被打成双引号
"""

数字类型

python支持的数字类型有整型int、浮点型float、布尔型bool和字符串string,布尔型即1(True)和0(False)。

isinstance()函数可以判断一个数是否是已知的数据类型:

a=5
print(type(5))  #输出<class int>
b=isinstance(a, int)
c=isinstance(a, float)
print(b)        #输出"True"
print(c)        #输出"False"

与C语言不同,python不需要提前对变量进行声明;直接使用即可。系统会根据对变量的赋值自动分配符合的数据类型。对于同一个变量可以先后绑定不同的数据类型对象,如:

a=5
a="HelloWorld"
print(a)    #"HelloWorld"

实现这一功能的本质是a=5时,系统会自动创建一个int类对象5,并让a和这个对象绑定;a="HelloWorld"时,系统会另外创建一个string类对象,并让a重新和该字符串对象绑定。原来的int对象因为没有被引用,会在一段时间后被系统的“垃圾收集机制”自动回收,也就不存在了(这部分详见CSAPP)。

事实上即使第二条语句是a=2,系统仍然会重新创建一个整型对象2,并让a和这个2绑定,并回收之前的整型对象5。换言之重新赋值之后,变量a所指向的内存空间发生了变化!这和C语言有明显不同。

python支持强制类型转化(但有些情况无法转化),如:

a=5.2
a=int(a)
print(a)    #输出是5
b="402"
print(int(b))    #输出是402
c="Hello"
print(int(c))    #Error!!!不能转化

只有当变量值是0或空字符串时,其布尔值为0.

python支持的算数运算和其他语言大同小异,这里只说逻辑运算。python支持的逻辑运算有and(与)、or(或)、not(非),其中and和or也可以被表示为&、|,例如

a=c&d
a=c and d
a=c|d
a=not c

IO

python用input和print完成输入和输出:

a=input("请输入一个数字")  #input返回一个字符串
b=int(a)
print("我刚才输入的字符是",b,"你好!")

print除了这种输出格式外,也支持格式化输出。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值