这里我开始抽时间写一下关于python的基础学习笔记。因为python作为一门个人爱好而学习的语言,没有经历过大项目实战的巩固,很容易一段时间不用就会将一些语法忘记得一干二净,所以在此将一些和之前用得比较多的js的特性做出一些简单的对比或者介绍。方便jser入手python。
说明:因为现在python3的普及还算不错了,所以文中的代码运行环境如无特殊说明,都以python3.x版本为主。
这个系列所写的比较适合有相关js经验的同学来看,如果完全是新手,推荐可以学习廖雪峰的python教程
以下为python的主要基本数据类型
- 空(None)
- 字符串(String)
- 布尔类型(Bolean)
- 数值(Number)
- 列表(List)
- 元组(Tuples)
- 字典(Dictionaries)
空类型(None)
空类型对于我们来说还是不陌生的,只是我们在js常用的是null,在python中我们用None来表示空。它是python中一个特殊的值,None不能理解为0,因为0是有意义的,而None是一个特殊的空值。
字符串(String)
和js里面的字符串类似,也是采用双引号或者单引号来表示。不过在python中还可以使用三引号,既’’’三个单引号来表示一段字符串。python三引号的形式用来输入多行文本,也就是说在三引号之间输入的内容将被原样保留,之中的单号和双引号不用转义,其中的不可见字符比如/n和/t都会被保留,这样的好处是你可以替换一些多行的文本。
声明方式:
1 |
|
三者的运行结果都是一样的。如果你在三个Hello World中间的空白处键入空格,最后打印这三个变量会发现,前两个并没有发生格式上的变化,仅仅只有第三个变量mystring3的”World”掉入了下一行。
布尔类型(Bolean)
python中的布尔类型和js中的也是同样的,用True和False两个值来表示真假。同样的,布尔值也可以用作运算。但是要注意的是,这里的True和False的首字母都是大写。
1 | b = True |
在这里我们直接拿b(值为True)和数字1作对比,当b==1时,输出b+b的值。而python中,也是默认将布尔真和数值的1作为等价。而且在运算过程中,也是默认将其作为数值1来运算,布尔假的值则为0。
数值(Number)
Python支持四种不同的数值类型:
int (有符号整数): 通常被称为只是整数或整数,是正或负整数,不带小数点。
long (长整数 ): 或长,是无限大的整数,这样写整数,后面跟着一个大写或小写的L。
float (浮点实数值) : 或浮点数,表示实数,并写入一个小数点分隔的整数部分和小数部分。浮点数也可以是科学记数法,用e或E表示的功率10 (2.5e2 = 2.5 x 102 = 250)。
complex (复数) : 形式如 a + bJ,其中a和b是浮点和J(或j)表示-1的平方根(这是一个虚数)。 a是数的实部,b是虚部。Python编程不使用复杂的数字。
而在js中,我们所用的数字都是Number类型,当然,系统会根据我们的输入来做自动的转换,python也是。
例如:
1 | a = 10 |
很明显,a是一个整型的数值,b也是一个整型的数值,但是两者做完运算,得到的结果a/b却很明显的是一个float类型,说明系统在运算时,自动将a,b两个数转换为了float类型。这和js也是很相似的。只是js里面没有复数这个类型。这里稍微注意下就可以了。
1 | var a = 10; |
列表(List)
我们先来看下python中list的声明:
1 | list1 = ["a","b","c","d"] |
怎么样,看着还是很眼熟吧。不过在下面的遍历中我们使用的forin语句和js中的for in还是有很大的不同的。python的forin要更加的强力一些,后面我们会陆续了解到。而且在python中没有像js或者其他的常用编程语言那样常用的for循环,例如:for( var i = 0; i < list1.length; i++){ pass },我们会用for i in range() 这样的方法来遍历,当然对一个list取长度也是采用的len()这样的一个方法,区别于js的array.length。
而且,对于list中的数据结构,python和js一样是很宽松的,你既可以放一个string类型,再放一个int类型,也可以数组里面随意嵌套数组,这个和js的使用是几乎一模一样的。
作为引用类型,它和js中的表现也是一致的。
1 | list1 = ["a","b","c","d"] |
元组(Tuples)
这个数据类型我们在js中没法遇到,因为js对于数组来说就只有一个内置数据类型:Array。
python中的元组我们可以认为是一种更加安全的数组。因为它里面的内容,一旦确定,是无法更改的。所以说,想list中我们常用的append,insert等改变列表内容的方法,在元组面前都是统统失效的。例如:
1 | list1 = ("a","b","c","d") |
但是也存在这样的情况:
1 | list1 = ("a",[1,2,3,4],"c","d") |
当元组中只有一个元素时,例如 list = (1) 我们需要在1的后面加上逗号,来让解释器与1数字作区分。写成 list = (1,),而且系统在输出一个元素的元组时,也会同样采用这样的显示方式。
元组可以定义一些用户需要保证其安全的数据,这样就不会被其他人轻易修改。
字典(Dictionaries)
终于要说最令人激动的数据结构了,js里面称作对象字面量,在python里面叫作字典。其用法两者也是很相似的。来,看下我们似曾相识的声明:
1 | d = {"a":1,"b":2,"c":3} |
是不是觉得和js的一模一样。在python字典中,键必须是唯一的,但值则不必。值可以取任何数据类型,但键必须是不可变的,如字符串,数字或元组。
遍历一个字典,方法一:
1 | d = {"a":1,"b":2,"c":3,"d":1} |
方法二:1
2
3
4
5
d = {"a":1,"b":2,"c":3,"d":1}
for d,x in d.items():
print ("key:"+d+",value:"+str(x)) #key:c,value:3 key:b,value:2 key:a,value:1 key:d,value:1
小结
其实除了元组,python中的基本数据结构我们在js都遇见过了,其使用方法也是差不多的,所以两者比较着学,其实应该是很容易上手的。