一、python初识
1、编译型语言和解释型语言
编译型语言
(1)只须编译一次就可以把源代码编译成机器语言,后面的执行无须重新编译,直接使用之前的编译结果就可以;因此其执行的效率比较高;
(2)编译性语言代表:C、C++、Pascal/Object Pascal(Delphi);
(3)程序执行效率比较高,但比较依赖编译器,因此跨平台性差一些;
解释型语言:
(1)源代码不能直接翻译成机器语言,而是先翻译成中间代码,再由解释器对中间代码进行解释运行;
源代码—>中间代码—>机器语言
(2)程序不需要编译,程序在运行时才翻译成机器语言,每执行一次都要翻译一次;
(3)解释性语言代表:Python、JavaScript、Shell、Ruby、MATLAB等;
(4)运行效率一般相对比较低,依赖解释器,跨平台性好;
2、面向对象和面向过程
面向过程就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候一个一个依次调用就可以了;面向对象是把构成问题事务分解成各个对象,建立对象的目的不是为了完成一个步骤,而是为了描叙某个事物在整个解决问题的步骤中的行为。
可以拿生活中的实例来理解面向过程与面向对象,例如五子棋,面向过程的设计思路就是首先分析问题的步骤:1、开始游戏,2、黑子先走,3、绘制画面,4、判断输赢,5、轮到白子,6、绘制画面,7、判断输赢,8、返回步骤2,9、输出最后结果。把上面每个步骤用不同的方法来实现。
如果是面向对象的设计思想来解决问题。面向对象的设计则是从另外的思路来解决问题。整个五子棋可以分为1、黑白双方,这两方的行为是一模一样的,2、棋盘系统,负责绘制画面,3、规则系统,负责判定诸如犯规、输赢等。第一类对象(玩家对象)负责接受用户输入,并告知第二类对象(棋盘对象)棋子布局的变化,棋盘对象接收到了棋子的变化就要负责在屏幕上面显示出这种变化,同时利用第三类对象(规则系统)来对棋局进行判定。
可以明显地看出,面向对象是以功能来划分问题,而不是步骤。同样是绘制棋局,这样的行为在面向过程的设计中分散在了多个步骤中,很可能出现不同的绘制版本,因为通常设计人员会考虑到实际情况进行各种各样的简化。而面向对象的设计中,绘图只可能在棋盘对象中出现,从而保证了绘图的统一。
3、python的特点
(1)大小写严格区分
(2)简单、易学、支持面向对象
(3)开源
(4)库非常丰富
(5)跨平台使用
(6)解释型语言
(7)高级语言
在命令行切换盘符时直接使用:盘符:
例如:
C:\Users\dai>D:
二、python语法基础
1、python常量与变量
常量:程序运行过程中不变的量
变量:程序运行过程中可变的量
常量语法:
不能通过像const来定义常量
Python 没有自带的常量语法
一般我们使用全大写字母的变量声明一个常量。
这只是一种约定俗成的办法, 起始还是可以更改变量的值。
但是我们可以尝试使用一下方法生成一个常量:
class _const:
class ConstError(TypeError): pass
class ConstCaseError(ConstError): pass
def __setattr__(self, name, value):
if self.__dict__.has_key(name):
raise self.ConstError, "Can't change const.%s" % name
if not name.isupper():
raise self.ConstCaseError, \
'const name "%s" is not all uppercase' % name
self.__dict__[name] = value
import sys
sys.modules[__name__]=_const()
变量语法:
变量名=变量值
2、Python数与字符串
数的类型:
整型(int)
长整型(long)
浮点型(float)
布尔型(bool)
复数型(complex)
字符串:
在Python中,用引号引起来的字符集都称之为字符串
单引号、双引号、三引号的区别:
在单引号中可以使用双引号,且可以当做引号进行输出
在双引号中可以出现单引号,且当做引号输出
三引号:三个单引号、三个双引号
在三引号中,字符串可以包含多行
转义符:
\
自然字符串:
在Python中,如果我们的一串字符串即使有转义符,也需要将他原样保留,不进行任何处理,我们可以使用自然字符串,即在字符串前加上r。
a=r"jhhjkdsljls"
print (r"1111")
字符串的重复:
“hello”*20
子字符串:
子字符串的运算方法主要有两种:
一种是索引运算法[];
另一种是切片运算符[:];
索引运算符从0开始,切片运算符【a:b】是指从第a下标开始至b-1下标,同样,第一位的下标为0
3、Python数据类型
基本数据类型:
数和字符串
列表:
Python中没有数组的概念,Python中跟数组最接近的概念就是列表和元组。
列表:就是用来存储一连串元素的容器
(有序列表)
a=【“1”,“2”,“3”】
a【0】
元组:
列表与元组的区别:
区别一是列表里面的元素的值可以修改,而元组里面的值不能修改,只能读取
区别二是列表的符号是[],元组的符号是()
集合:
集合主要有两个功能,一个功能是建立关系,另一个功能是消除重复元素。
集合的格式:
set(元素)
a=set(“dsfj”)
b=set(“sds”)
交集:x=a&b
并集:x=a|b
差集:z=a-b
去除重复元素:new=set(a)
字典:
字典格式:
dict={"key_name1 ":“key_values1” ,“key_name2”:“key_values2”}
字典使用方法:
z=dict[“key_name”] #进行索引
4、Python认识标识符
**标识符:**名称
标识符命名原则:
首字母必须是字母或下划线,标识符中可以使用字母、数字、下划线
关键字也成为保留字,不能命名使用
5、Python对象
在Python中,一切皆为对象。
详解pickle腌制:
在Python中,如果我们有一些对象需要持久性存储,并且不丢失我们这个对象的类型与数据,我们则需要将这些对象进行序列化,序列化之后,需要使用的时候,我们在恢复为原来的数据。序列化的这种过程,我们将其称为pickle(腌制)
import pickle
#dumps(objects)将对象序列化
lista=['1','2','3']
listb=pickle.dumps(lista)
#loads(string)将对象原样恢复,并且对象类型也恢复为原来的格式
listc=pickle.loads(listb)
#dump(object,file),将对象存储到文件里序列化
lista=[]
f1=file('1.pk1','wb')#wb:写入write
pickle.dump(lista,f1,true)
f1.close()
#load(object,file)将dump()存储在文件里面的数据恢复
f2=file('1.pk1','rb') #读取read
t=pickle.load(f2)
f2.close()
6、Python行与缩进
物理行:实际看到的行数,一行不一定是一句
逻辑行:一个语句代表一个逻辑语句
行中分号使用规则:
在一个物理行中编写多个逻辑行的时候,逻辑行与逻辑行之间用分号隔开。如果一个逻辑行占了一个物理行,则这个逻辑行可以省略分号。
print()
print()
print();print()
逗号的作用:
print(a),print(b) #逗号可以使print不换行输出
行连接:
将一个逻辑行分别写在多个物理行中时,需要使用行连接。
行连接的方法:在行的最后加上一个\符号。
print"我们都是好
孩子"
什么是缩进:
逻辑行首的空白
逻辑行的行首缩进:tab键、空格键
注释:
#号注释,单行注释
‘’‘
我是多行注释
多行哦
’‘’
“”"
我是多行注释
多行哦
“”"
#coding=utf-8
或者:
#coding=gbk
可以进行中文注释哟
三、Python运算符及表达式简介
1、Python运算符简介
常见的运算符:+、-、*、/、**、<、>、=等
print(7/2) #3
print(7.0/2) #3.5
2、Python运算符
print(10//3) #返回商的整数部分
print(10%3) #返回商的余数部分
&:按位与运算,所谓按位与是指一个数字转化为二进制,然后这些二进制的数按位来进行与运算
|:按位或
^:按位抑或
<<:左移 ,左移一个单位相当于×2,左移n个单位,相当于×2^n
>>:右移,右移一个单位相当于÷2,。。。
3、Python运算符
not、and、or 逻辑运算
关系式间的关系,需要用逻辑关系
if a>5 and a<30
4、python运算符的优先级及规律
当不明白符号的优先级时,可通过()来指定优先级
5、Python的表达式
在编程中,值、变量和运算符共同组成的整体称为表达式。