- 一、快速入门
- 1.语法格式
- 2.对象
- 3.数据类型
- 二、字符串
- 1.创建
- 2.转移字符
- 3.对字符串的操作
- 4.字符串驻留机制和字符串的比较
- 5.字符串的格式化
- 6.可变字符串
- 7.eval( )转变字符串
- 三、序列
- 1.列表
- 2.元组tuple
- 3.字典
- 4.集合
- 四、控制语句
- 五、函数
- 1.参数传递
- 六、Python的oop
- 1.类的构建
- 2.类的继承
- 3.方法重写
- 七、IO流
有关python脚本解析文件产生代码请看:python脚本
一、快速入门
1.Linux系统中是可以直接使用Python进行命令行模式,具体如下:
- 进入Python:在linux的Terminal中输入 Python ,进入Python的命令行;
- 退出Python:在linux的Terminal中输入quit() 或 exit() 或 ctrl +d ,再回车,退出Python的命令行。
2.python的源程序就是一个特殊格式的文本文件,可以使用任意文本编辑软件做Python的开发。
3.Python程序的文件扩展名通常都是 .py。
4.执行Python程序的方式:在Terminal中输入 python /PATH/filename.py ,对程序进行解释。
1.语法格式Python是一个语法要求很严格的语言,如下:
- 每行代码负责完成一个动作;
- 缩进错误。每行代码前面都不要增加空格;
- Python2.0 不支持中文,Python3.0支持中文;
Python中,一切皆对象。每个对象由:标识(identity)、类型(type)、值(value)组成。对象的本质就是一个内存块,有用特定的值,支持特定类型的相关操作。
- 变量不需要声明,直接引用对象就可以,使得对象的地址指向变量。
- 变量存在栈中,对象存在堆中。当指向某一个对象的变量被删除后,过一段时间这个对象如果没有被引用,就会被垃圾回收机制回收。
a = 123 # 123是一个对象,a是变量 a = b = 234 # 链式赋值,使得a和b变量指向同一个对象234 a,b = 1,2 #系列解包赋值,相当于 a=1,b=2; a,b = b,a #变量互换,此时 a = 2,b = 1;3.数据类型
每个对象都有类型,基本的类型包括:
- 整型(int),python 3中int类型可以存储任意大小的整数。
- 浮点型(float)
- 布尔型
- 字符串型
运算符,包括:
| 运算符 | 说明 |
|---|---|
| + , += | |
| - , -= | |
| * , *= | |
| / , /= | 浮点除法,8/2 = 4.0 |
| // , //= | 整除,8/2 =4 |
| % , %= | 取模 |
| ** , **= | 幂 |
注意,类型转换时:
- 整数和浮点数运算,结果为浮点数;
- 强制转换,如int() 、float() ;
- round(value)可以返回四舍五入后的值;
通过单引号’ ’ 或双引号" " 创建字符串。使用连续的三个单引号’’’ 或 双引号""" 可以创建多行字符串
a = " i'm a verifier!" resume = ''' name="IC" caompany= age= '''
python允许空字符串的存在。可以用len( ) 返回字符串的长度。
c = '' len(c) # 02.转移字符
转移字符 实现某些难以用字符表示的效果。如下:
| 转义字符 | 含义 |
|---|---|
| 在行尾出现时,表示连续符 | |
| 反斜杠符号 | |
| ’ | 单引号 |
| n | 换行 |
| t | 横向制表符(Tab) |
| r | 回车 |
| b | 退格(backspace) |
可以使用 + 将多个字符串拼接起来。但注意如果 + 号两边的类型不同就会报错。
a = 'IC_' + 'Verifier' # IC_Verifier
字符串的复制操作可以使用 * ,如下:
a = 'IC_Verifier' a *= 2 # IC_VerifierIC_Verifier
如果要实现不换行打印字符串,通过参数 end = ’ string’ 的方式,实现末尾添加,如下:
print('i am',end='n')
print('verifier',end='n')
还可以使用 input( ) 从控制台读取键盘输入的内容。如下:
myjob = input('请输入:')
str( )可以将其他类型转为字符串,如下:
str(3.14) # '3.14' str(True) # 'True'
字符串的本质是字符序列,可以使用 [ ] 提取字符串,在[ ] 里面指定偏移量。Python支持正向搜索和反向搜索。如下:
stringline = 'abcdefghigklmnopqrstuvwxyz' stringline[0] # a stringline[1:3] # bc,因为包头不包尾,不包括index为3的字符 stringline[-1] # z ,反向搜索 stringline[::-1] # zyx...cba ,逆向排序 stringline[1:5:2] # bd 从1 ~4提取,步长为2
Python中字符串生成后就是确定了,没法修改。如果真的想修改,可以使用 replace( ) 。如下:
a = 'abc'
a.replace("c","ff") # 此时 a = 'abc'
a= a.replace("c","ff") # 此时 a = 'abff'
4.字符串驻留机制和字符串的比较
所谓字符串驻留,对于符合标识符规则的字符串(仅包括下划线_ 、字母和数字),会启用字符串驻留机制。如下:
a = 'abc_123' b = 'abc_123' a is b # True a = 'abc#123' b = 'abc#123' a is b # False
注意:
- 双等号 == 是比较两个字符串值(value);
- is 是比较两个地址
通过 str.format( ) 函数来完成字符串的格式化。如下:
a = "名字是:{0} ,年龄是:{1}"
b = a.format("verifier",18) # 名字是:verifier,年龄是:18
a = "名字是:{name} ,年龄是:{age}"
b = a.format(name="verifier",age=18) # 名字是:verifier,年龄是:18
6.可变字符串
在Python中字符串属于不可变对象,不支持原地修改。可以使用 io.StringIO对象或 array 模块。
import io s = "HelloWorld" st = io.StringIO(s)7.eval( )转变字符串
eval( ) 可以将字符串当成有效的表达式来求值。
a = 10;
b = 20;
c = eval('a+b')
print(c)
三、序列
在内存中,序列就是一块用来存放多个值的连续内存空间。Python中常用的序列结构有:字符串、列表、元组、字典、集合。
1.列表字符串和列表都是序列类型,字符串是字符序列,而列表是任何元素的序列。
- list( ) ,可以将任何可迭代的数据转化成列表。
- range(起始点,结尾点,步长 ) , 创建整数列表。
使用方法如下:
a = list() #创建一个空的列表对象
a = list("hello") # ['h','e','l','l','o']
a = list(range(10)) # [0,1,2,3,4,5,6,7,8,9]
a = list(range(1,5,2) #[1,3]
a = list(range(5,1,-1)) #[4,3,2,1,0]
常用的列表元素的增加和删除,如下:
- append( ),在列表尾部添加新的元素,不产生新对象;
- +运算符,直接对列表进行拼接,产生一个新对象;
- extend( ),将目标列表的所有元素添加到本列表的尾部,不产生新对象;
- insert( ),将指定的元素插入到列表对象的任意指定位置。
- del,删除指定位置的元素。如 del a[2] ;
- pop( ) ,删除并返回指定位置的元素。默认删除列表末尾的值。
- remove( ),删除指定的元素,而非根据索引来对值操作。
元组属于不可变序列,不能修改元组中的元素。因此没有增加、删除和修改元素的相关方法。
3.字典字典是“键值对”的无序可变序列。可以通过{ } 、dict( )来创建字典对象。
4.集合集合是元素可变,元素不能重复。
四、控制语句for循环,主要应用如下:
ls = [1,2,3,4,5] for i in ls: print i for i range(0,4): print ls[i]
if条件,主要如下:
ls = [1,2,3,4,5] if a < len(ls): print (b = 1) else: print (b = 0)五、函数
使用 def 来定义函数,格式如下:
def 函数名([参数列表1],[参数列表2],...) : '''文档字符串''' 函数体/若干语句 #例如 def printMax(a,b): if a>b : print(a,"较大值") else: print(b,"较大值") printMax(10,20)
要点:
- ( ) 括号内是形式参数列表,有多个参数则使用逗号隔开;
- 形式参数不需要声明类型,也不需要指定返回值类型;
- 无参数时,必须要保留空的括号;
- 实参列表必须与形参列表保持一致;
- 要返回值,可以使用return返回。
在Python中所有的参数传递都是“引用传递”,不是“值传递”。
- 在传递不可变对象时,如int、float、字符串、元组、布尔值,实际还是对象的引用。在赋值操作时,由于不可变对象无法修改,系统会创建一个新的对象,然后把 id 值给过去。
- 在传递可变对象时,直接对原对象本身进行操作,不改变对象地址。
注意:
- 传递不可变对象时,此时的拷贝默认是浅拷贝。
类的模板,如下:
####################Student#######################
class Student: #定义类
class_var = 'verifier' #类属性,类变量
def __init__(self,name,age): #类的构造函数
self.name = name #self.name 为实例属性
self.age = age
def learn(self): #实例方法,类之内定义的
print('day day learn')
@staticmethod #静态方法
def sta_method()
print('静态方法')
@classmethod #类方法
def cls_method(cls) #要求传cls进去
print('类方法')
####################Student#######################
def sleep(): #函数,类之外定义的
pass #无实际意义的占位符
stu = Student('verifier',18) #创建对象
stu.learn() #方式一:调用类方法,直接用实例对象调用方法
Student.learn(stu) #方式二: 调用类方法,传入类的实例对象
Student.cls_method() #调用类方法
Student.sta_method() #调用静态方法
Python支持动态绑定属性和方法,这与其他语言区别很大。此时有两个Student的实例对象,每个对象的属性值可以不同,实例对象也可以动态绑定方法。如下:
class Student:
def __init__(self,name,age):
self.name = name
self.age = age
def eat(self):
print(self.name+'eating')
stu1 = Student('zhangsan',20)
stu2 = Student('lisi',18)
########绑定属性########
stu1.gender = 'female' #直接给stu1对象添加一个gender属性
print(stu1.name,stu1.age,stu1.gender) #zhangsan 20 female
print(stu2.name,stu2.age,stu2.gender) #error,stu2没有gender这个属性
########绑定方法########
def show():
pass
stu3 = Student('wangwu',35)
stu3.show = show #绑定show函数
stu3.show()
stu2.show() #error ,stu2没有绑定show()方法
2.类的继承
定义子类时,必须要在其构造函数中调用父类的构造函数。
class Human(Object): def __init__(self,name,age): self.name = name self.age = age def learn(self): pass class Student(Human): def __init__(self,name,age,gender): super().__init__(name,age) #调用父类构造函数 self.gender = gender
注意:
- Python支持多继承;
- Object类是所有的类的父类。所有类都可以使用Object类中的方法
子类可以重写父类的方法。如下;
class Human(Object):
...
def learn(self):
pass
class Student(Human):
...
def learn(self):
print('子类重写的方法')
七、IO流
常用操作包括:
- 用内置函数 **open( )**打开文件。语法:file = open(filename,[模式,编码])。
- 用write()向文件中追加内容。语法:file.write([ 内容,模式])
打开的模式,包括:
| 模式 | 描述 |
|---|---|
| r | read only |
| w | write only,文件不存在就会创建,文件存在则覆盖原有内容 |
| a | 追加模式,文件不存在就会创建,文件存在则在原有内容末尾追加内容 |
| b | 以二进制打开文件,不能单独使用,只能与其他模式连用,如wb、rb |
| + | 以读写模式打开文件,不能单独使用,只能与其他模式连用,如a+ |
举例如下;
file = open('exe.txt','r') #打开exe.text文件,‘r’是指读文件,默认是读文件
print(file.readlines()) #读文件
file.close() #关闭文件
w_file = open('exe.txt','w')
w_file.write('python') #在文件中追加内容
【持续更新…】



