#python基础语法
无论学习什么语言,我们最初都要学习这门语言的基础语法及一些基本定义,下图基本涵盖了python学习所有的基础知识,下面我就详细来说上一说,说的不好您见谅:
1.首先介绍一下数据类型: python数据类型,包含数字,字符串,列表,元组,字典,集合:
a.数字类型包含: 整型:int(1/2/3)、浮点型:float(3.14)、复数:complex(a+bi);
b.字符串 str: str(数字) 、三个单引号:’’’ xxx’’’,双引号:” xxx” 、单引号:‘xxx’ ;
c.列表(可变,有序) list: 可以存储字符串:name = [“张三”,“李四”,“王五” ] ,可以存储数字:num=[1,2,3];
语法: 读取元素name[0/1/2] ,列表合并:name+num ->print(name+num),元素添加append:name.append(num[1]) ,元素删除:del name[1] ,列表删除:del name 切片(切割出部分数据形成一个新的列表):name(start:end:step)
d.元组 (不可变,有序) tuple: name = (“张三”,“李四”,“王五”) ,num=(1,2,3) ;(不可变就是不可以单独删除某个元素,与列表对应)
语法: 读取元素:name[0] ,元组合并:name+num ,更改元组:name = num , 删除元组:del name , 切片(切割出部分数据形成一个新的元组):num(start:end:step);
e.字典(可变,无序) dict: name ={‘f’:’123’,’y’:’124’,’h’:’125’};(无序,依靠键值对识别)
语法: 读取值:name[‘f’]->‘123’,添加元素:name[key] = value ,
删除元素:del name[‘h’] ;
f.集合(可变,无序,唯一): name = {f , y , h},name1 = {f , y};
语法: 添加元素:name.add(‘a’) ,删除元素:remove.name(f),
删除集合:del name,交集、并集、差集运算:name&name1
name|name1 name-name1
注:查看数据类型:type(xxx)
2.python的运算符和其他语言基本一致, 如果有其编程基础理解起来会更容易:
a.算数运算符:+、 - 、* 、/ 、%(取余) 、//(取整)、**(幂)
b.逻辑运算符:and、or、not (结果:True 、False)
c.赋值运算符:a= b
d.比较运算符:>、<、== 、>=、<=、!=
e.位运算符:&(位与)、|(位或)、^(位异或)、~(位取反)
<<(左移运算符)、>>(右移运算符)
注:优先级问题:分号分隔等级
3.python基本的语句:
a.输入函数:a= int(input(“请输入数值”)) b= int(input(“请输入数值”))->对于可变的数值变量可以用input函数,比如年龄;
b. 输出函数:print(a,b,”我爱小甲鱼”)->对于我们不确定的数据可以利用这个函数打印,观察输出是否理想;
注:
#1.注释代码:(代码不用还不想删掉,或者给代码加入说明):
// 注释的内容 、’’‘注释内容’’’、Ctrl + /(快速加注释/取消注释)
#2.Python对于缩进非常严格,也就是同一级别的代码一定要对齐,否则一定会报错;
4.python 条件控制语句if,当我们需要选择的时候,就可以用if语句进行控制,下面是基本用法:
if 条件1:
print(1)
elif 条件2:
print(2)
elif 条件3:
print(3)
else:
print('当以上条件都不满足时,我能显示出来!')
解释:
当条件1成立时,输出1,后面的语句不会执行
当条件1不成立,条件2成立时,输出2,条件2后面的语句不会执行
当条件1和条件2都不满足,条件3成立时,输出3,条件3后面语句不会执行
当条件1、2、3都不满足时,执行else语句,输出'当以上条件都不满足时,我能显示出来!'
实例展示:
#美观注释方法
'''
作者:天甜费
昵称:一飞冲天咻咻
人生格言:爱代码,爱人生
import xxxx
from xxxx import xxx
'''
import datetime #调入时间模块1111
imyear = input("请输入您的出生年份:") #输入出生年份
nowyear = datetime.datetime.now().year #计算当前年份
age=nowyear-int(imyear) #计算实际年龄
print("您的年龄为:"+str(age)+"岁") #输出年龄
if age < 18:
print("您现在为未成年人 (*^_^*)")
elif age >= 18 and age<66:
print("您现在为青年人 ( ఠൠఠ )ノ")
elif age >= 66 and age<80:
print("您现在为中年人 ( ̄▽ ̄)")
else :
print("您现在为老年人(❤ ω ❤)")
# num = input("输入字符:")
# print(num+"的ASCII码为:", ord(num))
运行后截图:
5.python 循环语句while语句,for语句,当我们需要重复做同一件事情的时候,我们需要想起他们:
a.while语句:
i = 1 #创建并初始化一个控制while循环的变量i
while i <= 10:
print("hello") #此处执行10次
i += 1
运行后截图:
b.for语句:
注:
break:跳出整个循环,不会再循环后面的内容
continue:跳出本次循环,continue后面的代码不再执行,但是循环依然继续
eixt():结束程序的运行
for i in range(10): #与C语言不同,in后面的数值会赋值给i,循环次数看in后面数据个数,range相当于一个列表list: [0,1,2,3,4,5,6,7,8,9],所以正常会循环十次
if i == 5:
#break
#continue
exit()
print(i)
print('hello python')
实例展示:
def xunhuan(): #加入了一个函数,可以被调用
for i in range(1,10,1):
print(i, end=" ") #不会换行print(end=" ")
string1 = ["天甜费", "一飞冲天咻咻"] #列表
string2 = "天甜" #字符串
for fei in string1:
print(fei)
for i in string2:
print(i)
f = 2 ;
while f >= 1: #while 语句演示
f = f-1
xunhuan()
运行后截图:
6.迭代器及生成器:
学习网址:迭代器和生成器学习链接
a.迭代器: 可以for循环出来的数据结构: python中,任意对象,只要定义了__next__方,iter()中的方法,它就是一个迭代器:字符串、列表、元组、字典、集合都是;字典和集合虽是无序的,但是仍可迭代,自行验证,很有趣的;
b.生成器: 在python中,这种一边循环一边计算的机制,称为生成器(Generator);生成器也是一种迭代器,但是你只能对其迭代一次,这是因为它们并没有把所有的值存在内存中,而是在运行时生成值。程序存在 yield/存在循环计算 的公式:都可称之为迭代器
生成器存在目的: 节省空间占有率
**生成器介绍链接: **yield和return
实例展示: 第一个函数,需要的数值是通过计算得出来的num = num +1,yield返回后就会释放内存,节约空间; 而第二个函数需要所有数据都在内存中存好了才能被取出来,浪费内存,这两者会在处理大量数据的时候看出区别,前者会比后者利用的空间少的多,减少内存压力:
7.模块导入:
python我们之前介绍过其中一个优势就是第三方模块众多,当时说的是兄弟多,但是兄弟多没人来帮也不行呀,所以兄弟之间就定义了一个暗号,表示见到暗号说到就到:
a.from xxx import xxx
b.import xxx
注:模块是 函数封装 后的效果,可以用import引用自己写好的函数。(过程现在不需要我们去深究,只是明白使用规则就可以了)
python自带系统模块,也可以导入第三方模块(后面会讲如何导入第三方模块),或者引用自己模块。
系统查找模块的顺序,首先找文件夹内是否存在,在找python环境变量目录中是否有,若都没有则报错:
实例展示:
#定义一个module.py的简单模块,下面是模块里面的程序
#定义一个model.py的简单模块,下面是模块里面的程序
pinetree = '我是一棵松树' #定义一个全局变量
def fun_module(): #定义一个函数
pinetree = '挂上彩灯/礼物......我要变成一颗圣诞树\n' #更新变量值
print(pinetree)
#定义一个test模块调用module.py模块:
import module #引入模块
print('输出全局变量为:',module.pinetree) #操作变量
module.fun_module() #操作函数
运行后截图:
8.文件操作:
a. 打开文件操作: file = open(“D:\abc.txt”, r/w/a, encoding =‘utf-8’)或者
with open(“D:\abc.txt”, r/w/a, encoding =‘utf-8’) as file
注:
#1.“D:\abc.txt”:是文件的绝对路径;
#2.r/w/a:是模式选择,r:只读模式,w:只写模式,a:追加写入模式;二进制写入在后面加个b,例如ab;
#3.encoding =‘utf-8’:编码模式utf-8,通用编码。
b.写入文件操作: file.write(string)->打开文件要选择w/a模式;
c.读取文件操作: response=file.read()->打开文件要选择r模式;
d.关闭文件操作: file.close()->读写操作完成后要关闭文件才会保存。
实例展示:
file = open("D:\\fei.txt","a",encoding='utf-8')
file.write("费")
file.close()
file = open("D:\\fei.txt","r",encoding='utf-8')
File = file.read()
print(File)
file.close()
运行后截图:
9.os:对文件及目录进行处理:
下图是os操作的函数介绍,需要的时候可以查找一下,有时间也可以练习一下,加深理解和印象,编程就是要不断的敲代码,就像运动员一样,无论之前多厉害,只要有一段时间不锻炼,就会明显感到退步:学如逆水行舟,不进则退。
10.异常处理try: 异常处理学习链接
异常处理就是把可能会出错的代码放到下面的语法中,最常用形式:
a.try:
可能会犯错误的程序
except 错误类型(错误类型要选对):
print(“程序出错了”)
b.try:
可能会犯错误的程序
except Exception as reason:
print(“程序出错了”,reason. __ class __ .__ name__)
finally:
出错后也会执行的程序
实例展示:
a = [1, 2, 3]
try:
a[3]
except Exception as e:
print('错误类型是', e.__class__.__name__)
print('错误明细是', e)
finally:
print('hello')
运行后截图:
11.对象: 都说python是高级语言,主要是因为面向对象,那么我们就来揭开面向对象的庐山真面目:
举例子:C语言是面向过程的语言,也就是盖一座房子要描述搬砖、和泥、砌墙等;python及其他一些高级语言是面向对象的语言,也就是只需要描述长宽高样式等即可盖出一座房子;
理解了上面也只是明白了对象的定义,距离真正使用还是有一段距离的:
a.对象分为静态和动态两个部分:属性(定义的变量)及行为(封装在类里面的函数,可以有很多个):类是封装属性和行为的载体,class 类名xxx;
import random as r
class Fish: #父类,定义一个鱼:Fish类
def __init__(self):
self.x = r.randint(1,10) #父类,定义2个属性x,y
self.y = r.randint(1,10)
def move(self):
self.x -= 1
print("我的位置是:",self.x,self.y)
class Glodfish(Fish): #子类,定义一个金鱼:GlodFish类,继承Fish父类的方法,下面的其他鱼也是一样的
pass
class Carp(Fish):
pass
class Salmen(Fish):
pass
class Shark(Fish):
def __init__(self):
super().__init__() #子类,操作这个语句,就可以使用父类的属性
#super().__init__派生类(子类)调用基类(父类)的**类属性**,要进行声明;
self.hungry = True
def eat(self): #子类,定义一个方法
if self.hungry:
print("吃货的梦想就是天天有的吃,哈哈")
self.hungry = False
else:
print("太撑了,吃不下了!")
F = Fish() #父类,实例化(类实例化之后就可以操作属性及方法),比如下面的方式
F.move()
F.move()
S = Shark() #子类,实例化
print(S.hungry) #类实例化之后就可以操作属性及方法
S.eat()
S.move()
b.对象进行类化后:类具有封装、继承、多态等特性,可以使软件设计更加灵活,能更好的进行代码的复用;万物皆对象。
c.定义一个大雁类,喙、翅膀、爪属性;觅食、飞行、睡觉等行为---->封装;
d.四边形(父类):长方形,正方形, 平行四边形(子类)—>继承
e.螺丝:长螺丝,短螺丝---->体现面向对象的多态特性。
类里面变量定义:变量传递,类属性,实例属性;
#1.魔术方法__init__()
class Geese:
def __init__(self,beak,wing,claw):
print("我是大雁类,我有以下特征:")
print(beak)
print(wing)
print(claw)
beak_1 = "喙的基部比较高,长度和头部的长度几乎相等"
wing_1 = "翅膀长而尖"
claw_1 = "爪子是噗状的"
wildGoose = Geese(beak_1,wing_1,claw_1) #变量传递
#2.创建类属性,指定义在类中,且在方法外面的:
class Geese:
beak_1 = "喙的基部比较高,长度和头部的长度几乎相等"
wing_1 = "翅膀长而尖"
claw_1 = "爪子是噗状的" #三个类属性,直接定义在类下面
def __init__(self):
print("我是大雁类,我有以下特征:")
print(Geese.beak_1)
print(Geese.wing_1)
print(Geese.claw_1)
wildGoose = Geese()
#3.创建实例属性,指定义在类的方法中的属性:
class Geese:
def __init__(self): #类的方法
self.beak_1 = "喙的基部比较高,长度和头部的长度几乎相等"
self.wing_1 = "翅膀长而尖"
self.claw_1 = "爪子是噗状的"#三个实例属性,定义在 __init__(self)下面
print("我是大雁类,我有以下特征:")
print(self.beak_1)
print(self.wing_1)
print(self.claw_1)
wildGoose = Geese()
#4.实例属性通过实例名进行修改:
class Geese:
def __init__(self):
self.beak_1 = "喙的基部比较高,长度和头部的长度几乎相等"
self.wing_1 = "翅膀长而尖"
self.claw_1 = "爪子是噗状的"
print("我是大雁类,我有以下特征:")
print(self.beak_1)
print(self.wing_1)
print(self.claw_1)
wildGoose1 = Geese()
wildGoose2 = Geese()
wildGoose1.wing_1 = "毛绒绒的"
print(wildGoose1.wing_1)
print(wildGoose2.wing_1)
#5.类里面创建方法:
class Geese:
def __init__(self):
self.beak_1 = "喙的基部比较高,长度和头部的长度几乎相等"
self.wing_1 = "翅膀长而尖"
self.claw_1 = "爪子是噗状的"
print("我是大雁类,我有以下特征:")
print(self.beak_1)
print(self.wing_1)
print(self.claw_1)
def fly(self):
print("我能飞")
wildGoose1 = Geese()
wildGoose1.fly()
#6.重写父类方法
class Fruit:
color = "绿色"
def harvest(self,color):
print("水果是:"+color+"的")
print("水果原来是:"+Fruit.color+"的")
class Orange(Fruit):
color = "橙色"
def __init__(self):
print("我是橙子")
def harvest(self,color):
print("橙子是::" + color + "的")
print("橙子原来是:" + Fruit.color + "的")
#7.派生类中调用基类__init__()
class Fruit:
def __init__(self,color = "绿色"):
Fruit.color = self.color
def harvest(self):
print("水果原来是:"+Fruit.color+"的")
class Orange(Fruit):
color = "橙色"
def __init__(self):
super().__init__()
print("我是橙子")
orange = Orange()
orange.harvest()
以上就是基础知识部分的学习,我这里做了一个基本的整理及总结,但是要想成为一个优秀的大牛,就要不断的汲取知识,学无止境,况且入坑。
之前听过一句话感觉不错,学到的就要教人,赚到的就要给人,这也是我做这件事的初衷,因为当我遇见BUG或者不会的知识点的时候,去百度搜索总能找到方法或者思路,所以我也想贡献自己微薄的力量。
第三篇分享,持续更新中,,,,,*