Python学习(一)


👉有关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支持中文;

2.对象

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)可以返回四舍五入后的值;

二、字符串

1.创建

通过单引号’ ’ 或双引号" " 创建字符串。使用连续的三个单引号’’’ 或 双引号""" 可以创建多行字符串

a = " i'm a verifier!"

resume = ''' name="IC"
caompany=
age=
'''

python允许空字符串的存在。可以用len( ) 返回字符串的长度。

c = ''
len(c)  # 0

2.转移字符

转移字符\ 实现某些难以用字符表示的效果。如下:

转义字符含义
\在行尾出现时,表示连续符
\反斜杠符号
单引号
\n换行
\t横向制表符(Tab)
\r回车
\b退格(backspace)

3.对字符串的操作

可以使用 + 将多个字符串拼接起来。但注意如果 + 号两边的类型不同就会报错。

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 是比较两个地址

5.字符串的格式化

通过 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( ),删除指定的元素,而非根据索引来对值操作。

2.元组tuple

元组属于不可变序列,不能修改元组中的元素。因此没有增加、删除和修改元素的相关方法。

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返回。

1.参数传递

在Python中所有的参数传递都是“引用传递”,不是“值传递”。

  • 在传递不可变对象时,如int、float、字符串、元组、布尔值,实际还是对象的引用。在赋值操作时,由于不可变对象无法修改,系统会创建一个新的对象,然后把 id 值给过去。
  • 在传递可变对象时,直接对原对象本身进行操作,不改变对象地址。

注意:

  1. 传递不可变对象时,此时的拷贝默认是浅拷贝。

六、Python的oop

1.类的构建

类的模板,如下:

####################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类中的方法

3.方法重写

子类可以重写父类的方法。如下;

class Human(Object):
	...
	def learn(self):
		pass
		
class Student(Human):
	...
	def learn(self):
		print('子类重写的方法')	

七、IO流

常用操作包括:

  • 用内置函数 **open( )**打开文件。语法:file = open(filename,[模式,编码])。
  • 用write()向文件中追加内容。语法:file.write([ 内容,模式])

打开的模式,包括:

模式描述
rread only
wwrite 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') #在文件中追加内容


【持续更新…】

  • 6
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小小verifier

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值