编程语言是一门人(主要是程序猿们)与计算机沟通所使用的语言。
编程语言一般分为以下三类:
机器语言:用二进制代码0和1描述的指令称为机器指令,全部机器指令的集合构成计算机的机器语言
汇编语言:汇编语言的实质和机器语言是相同的,都是直接对硬件操作,只不过指令采用了英文缩写的标识符,更容易识别和记忆
高级语言:以人类的日常语言为基础的一种编程语言,高度封装,不能直接操作计算机硬件,必须经过编译或解释才能让计算机读懂
高级语言主要分为两大类:
编译型:代码文件需先经过编译器编译,生成机器目标文件才能让机器执行,针对不同平台需分别编译,一次编译后可重复执行目标文件。特征是调试不方便,开发效率低,执行效率高,跨平台能力差,学习曲线较陡峭
编译型语言代表有:c c++
解释型:代码文件边经解释器解释边执行,不同平台只需配置对应的解释器就可以运行该文件。特征是调试方便,开发效率高,执行效率稍低,跨平台能力强,学习曲线较平滑
解释型语言代表有:python php ruby
Python是著名的“龟叔”Guido van Rossum在1989年圣诞节期间,为了打发无聊的圣诞节而编写的一个编程语言。龟叔给Python的定位是“优雅”、“明确”、“简单”,所以Python程序看上去总是简单易懂。
Python 是一款易于学习且功能强大的编程语言。 它具有高效率的数据结构,能够简单又有效地实现面向对象编程。Python 简洁的语法与动态输入之特性,加之其解释性语言的本质,使得它成为一种在多种领域与绝大多数平台都能进行脚本编写与应用快速开发工作的理想语言。
通过 Python 来运行的你的程序有两种方法——使用交互式解释器提示符或直接运行一个源代码文件
python注释语法为 #注释语句
也可以用三引号(多行字符串)的形式来做多行注释
#可以在这里注释
print('hello world') #也可以在这里注释
"""
这是一个多行字符串,可以用来对代码进行多行注释
"""
正如其名字所述那般,变量的值是可以变化的,也就是说,你可以用变量来存储任何东西。变量只是你的计算机内存中用以存储信息的一部分。python语言的变量可以用来存储任意数据类型的值,所以可以看出python是一门动态语言。与之对应的是静态语言,静态语言在定义变量时必须指定变量类型,如果赋值的时候类型不匹配,就会报错。如Java就是典型的静态语言。需要通过变量名来调用变量的值。
变量名的命名需要满足以下规则:
1)变量名只能由字母,数字,下划线组成,且首字符不能为数字
2)变量名不推荐使用关键字,变量名区分大小写
定义一个变量(变量申明语句)的语法如下
name = 'rock' #变量名 赋值符号 值
age = 18
定义变量名一般有两种方式:驼峰体(UserName)和下划线式(user_name,python中推荐使用这种方式)
变量有3个重要属性:id标记占用内存中的位置,type数据类型,value值
name = 'rock'
print(id(name),type(name),name)
a == b #这里比较的是两个变量的value值
a is b #这里比较的是两个变量的id值
内存中分别分给变量名和变量一定内存空间,变量名在内存中指向变量,此时该变量的引用计数为1,若同时存在另一个变量名指向该变量,则该变量的引用计数为2,当不存在任意一个变量名指向该变量时,其引用计数变为0,此时,python内部的垃圾回收机制会把该变量当成垃圾回收,以释放内存空间。
1)数字:数字分为整数(int)和浮点数(float)
2)字符串:包含在引号里面的字符序列(单引号/双引号指定单行字符串,三引号用来指定多行字符串)
3)布尔型:只有两种值,即True 和 False
#所有数据类型都自带布尔值
1、None,0,空(空字符串,空列表,空字典等)三种情况下布尔值为False
2、其余均为真
4)列表:
#在[]内用逗号分隔,可以存放n个任意类型的值
names = ['wang','li','wu']
#取队列中的值采用索引的方法,索引值从0开始, names[0] 即取队列中的第一个值,也可用负数索引,names[-1] 即取队列最后一个值
5)字典:
#在{}内用逗号分隔,可以存放多个key:value的值,value可以是任意类型
data = {'name':'mark','age':18,'hobbies':['run','eat']}
#取字典里面的值 data['name'] 就可以得到值 mark ,取其它值类似
6)元组:
atuple = (1,'sf,',3,'jkk') #属于不可变类型
7)集合:
aset = {1,'sf',2,'www'} #一组key的集合,key是不能重复的,所有集合中不存在重复的元素,元素只能是不可变类型
算术运算符:+(加),-(减),*(乘),/(除),**(乘方),// (整除,结果向下取整),%(取余)
赋值运算符:= ,+=(a+=1是a=a+1的快捷写法,其它快捷写法类似),-=,*=,/=
位操作符:
<< 左移,将数字的位向左移动指定的位数 如 2<<2 解释:2的二进制为10,左移后为1000,即其结果为十进制10
>> 右移,将数字的位向右移动指定的位数
& 按位与
| 按位或
^ 按位异或
~ 按位取反
比较操作符:< 小于,> 大于,<= 小于等于,>= 大于等于,== 等于,!= 不等于
逻辑操作符:and (逻辑与),or (逻辑或),not (逻辑非)
1)使用占位符 %s(字符串占位符),%d(整数),%f(浮点数)
print('My name is %s,my age is %s' %('lufei',18))
#若字符串中本身有一个普通%,则需要转义
#%% 此时可表示一个普通的%
print('rate:%s %%' %7)
2)format()方法
name = 'rock'
age = 18
print('{0}was{1}years old'.format(name,age))
#另一种写法
print('{}was{}years old'.format(name,age))
1)if 语句,即条件判断语句
#if语句语法如下
if 条件表达式 : #注意不要丢了后面的冒号
if块
elif 条件表达式 : #可选部分
elif块
else : #可选部分
else块
2)while循环语句
while....else 与 for ... else 中的else语句在正常遍历完所有项目后执行,即循环体内没有break语句、没有return语句,或者没有异常出现。
#while循环语句语法
while 条件表达式或条件语句: #注意后面的冒号不能丢
循环块
else: #可选部分
else块
3)for循环语句
for循环主要用来进行迭代(Iteration)操作,需要作用于一个可迭代对象
#for循环会在一系列对象上进行迭代,意即它会遍历序列中的每一个项目
#for...in循环语句的语法
for...in 序列: #后面有冒号结尾
循环块
else: #可选部分
else块
#使用如下方法判断一个对象是否是可迭代对象
from collections import Iterable
print(isinstance('abc', Iterable)) #True 所以字符串是可迭代对象,可用for...in 进行迭代操作
print(isinstance([1,2,3], Iterable)) #True
print(isinstance((1,2,3), Iterable)) #True
print(isinstance({'name':'rock','age':18}, Iterable)) #True 默认迭代的是key
print(isinstance({1,2,3,'a'}, Iterable)) #True
print(isinstance(123, Iterable)) #False
用for...in 迭代字典时默认迭代的是key,若需要迭代value,可以使用for value in adict.values();若需要同时迭代key和value,可以使用for k,v in adict.items()。
补充1:for...in 迭代还可以用来操作文件,可以依次取得文件的每一行内容!!!
补充2:enumerate()函数可以把一个list变成索引-元素对
a = ['a','b','c','d']
print(enumerate(a))
for i,s in enumerate(a):
print(i,s)
#
# 0 a
# 1 b
# 2 c
# 3 d
b = 'rockyou'
for i1,s1 in enumerate(b):
print(i1,s1)
# 0 r
# 1 o
# 2 c
# 3 k
# 4 y
# 5 o
# 6 u
4)break语句与continue语句
break语句用来中断循环语句(while循环或for循环),即跳出本层循环,不影响上一层的循环
continue 语句用以告诉 Python 跳过当前循环块中的剩余语句,并继续该循环的下一次迭代。