引入
任何一门语言比如c++,java,perl,python语法上的招式主要包含变量类型,数据结构,循环控制,函数,文件,异常处理,进程/线程等。大体就这几个方面,万丈高楼平地起,我们先从最简单的变量和数据入手。
首先要说明的是python的是动态语言,不像java是强制类型语言,是静态语言也就是说你在定义变量的时候就要指定类型,而python是动态的语言,是边执行变编译,在定义变量的时候不需要指定数据类型,在赋值的时候系统会自动为其指定类型,分配内存,这样就很灵活。
先罗列一下python提供的基本数据类型:数值(整型、浮点型、复数、布尔型等)、字符串、列表、元组、字典、集合等,将它们简单分类如下:
数值numbers
python number 数据类型用于存储数值,分为整数int和浮点数float。
整数:比如1,200,-1000,0,也有用十六进制表示的比如0xff00等
浮点数:比如1.11,12,13,-10.02,也有比较大的浮点数比如2.12x10^9
还有其他格式及常见操作符如下:
字符串string
python的字符串以''(单引号)或者(双引号)或者''''''(三引号)括起来的随意文本都是字符串
'abc',hello world,'''this is my first code'''
有一点要注意若字符串里面包含特殊的字符,可以用转义\进行转义
word='xiao ming said \i\'am full\.'
print(word)
>>xiao ming said i'am full.
另外三引号一般用在类或者函数的开头用来做大段的注释用
说到字符串一点要提一下python的字符串format格式:一般有两种
1)%操作符
name=xiao ming
age=20
print(your name is %s,age is %d%(name,age))
2).format
print(your name is {0},age is {1}.format(name,age))
.format的用法比较灵活,参数的顺序和格式化的顺序不必完全相同,一般推荐用format,而且也是python3里面的官方力推,之所以保留%主要是为了兼容以前的代码
print(age is {1},your name is {0},.format(name,age))
再来看看字符串的一些常见操作
布尔值bool
python中的布置值,只有true和false两种(一定要注意大小写),布尔值的运算可以用and,or 和not
a and b ,表示a和b都为true,最后的运算结果才是true.
a or b , 表示a或者b其中一个true,最后的结果就是true.
not,是非运算,它是一个单目的运算,就是把true变false,把false变true.
if语句通过判断布尔类型来控制程序的执行路径,同时在 python 中数据有隐式的真假值,可以使代码变得简短有效,如下
空值
python的空值是用none表示,none不是0,也不是空字符串,也不是false,它是一个特殊的空值,我们可以用python的内置函数type来看一下,然后分别0,空字符,false比较一下,看看它到底是何物
>>>type(none)
>>> none == 0
false
>>> none == ''
>>> none == none
true
>>> none == false
列表(list)
python 可使用语法糖[]表示列表,其中的元素可以是任何类型,以顺序存储的方式动态储存数据:# 定义 l = [] # 推荐方式 l = list() l = ['windrivder', 21, {'name': 'xiaoming'}] # 多重赋值技巧 name, age, other = l # 列表切片参考str # 常用方法 l.append('a') # ['windrivder', 21, {'name': 'xiaoming'}, 'a'] l.pop() # ['windrivder', 21, {'name': 'xiaoming'}],还可以指定下标删除元素 l.extend(l1) # 合并列表 l1 l.insert(1, 'a') # 在下标为1的位置插入'a' l.index('a') # 同字符串的index() l.remove('a') # 删除操作 l.count('a') # 求某个值的个数 l.reverse() # 反转l = [2, 4, -1, 9, -5, 6] l.sort() # sort()排序,使用非常灵活 l.sort(reverse=true) # 反序 l.sort(key=abs) # 传入函数关键字作为排序规则 for l1, l2 in zip(['windrivder', 21], ['jack', 22]): # zip 同时遍历两个列表
元组(tuple)
元组与列表不同的是,元组是不可变类型(immutable),不能对元素进行修改,但内存可以明确知道需要分配多少空间给元组。
字典(dictionaries)
字典是通过键值对的方式进行存储,占用大量的内存而获得极快的查找和插入速度,而列表刚好相反,查找和插入速度随着元素的增加而变慢,但占用的内存较小。字典虽然是可变类型,但因为它的 value 的位置是根据 key 计算出来的,因此 key 必须是不可变对象,这样才能确保字典的正确使用。
集合(set)
集合与list类似,但集合中不允许有重复的元素,普通集合是可变的,frozenset是不可变的,我们可以利用集合的特性消除重复元素或做并、交、差等数学操作
自定义数据类型
python 允许通过继承去自定义数据类型,很多第三方库或框架都有类似的应用,这里简单实现了一个供参考:
题外话
今天在我们的直播课中也会讲到python的内容,想要学习的小伙伴抓紧入群了,在群里可以和大家一起交流一起进步,还有各种学习资源和免费公开课直播通知。