文章目录
Python快速入门笔记
Anaconda环境配置笔记
基本指令
打开prompt
conda --version #查看Anaconda版本
conda env list #查看目前已经安装的环境
conda create -n 环境名称 python=3.9 #创建环境,指定python版本
conda activate 环境名称 #进入指定的环境
conda remove -n 环境名 -all #删除对应的环境
—————————————————--------------------
进入对应环境之后的操作:
pip install 对应的包 #在该环境下下载对应的包
pip list #查看该环境下已安装的包
————————————————————————————————————
pip和conda安装python包的区别:
1.conda是随着Anaconda得到安装而安装,pip是随着python的安装而安装。
2.conda既可以管理环境中的包,又可以管理环境,在conda看来,python也是一个包,所以conda可以更新环境中的python版本,但是pip不行,并且pip只能适用于python。
3.最重要的区别是,conda在安装包时,会附带安装该包需要的附属包,但是pip只能安装该包,不会主动安装需要的附属包。
#有时候,pip安装不了的包可以用conda安装,conda安装不了的包可以用pip安装。
————————————————————————————————————————————————-----————
Python基本内容
第1章 变量和数据类型
1.1 变量
python始终记录变量的最新值
message = "first test"
print(message)
方法是Python可对数据执行的操作
name = "Ada Lovelace"
print(name.lower()) #其中lower()是方法,表示可以对name 执行该操作
\t表示tab
\n表示换行
print("languages:\n\tpython")
1.2 字符串
1.3 数
无论是哪种运算,只要有操作数是浮点数,Python默认得到的数总是浮点数,相除也是。
数中的下划线:书写很大的数时,可以使用下划线将数进行分组,不会影响数的值
universe_age = 14_000_000_000
print(universe_age)
>>>14000000000
一般用大写字母组成的字符串,用来表示常量
第2章 列表
列表中的元素之间可以没有任何关系,因此给列表起一个表示复数的名字会更好,比如names
列表的索引从0开始而不是1
names = ['Joe', 'Mike', 'Jin']
message = "My love is {}and{}".format(names[0], names[2])
2.1 列表添加元素
在列表的末尾添加元素
names = []
names.append('Joe')
names.append('Mike')
在列表中插入元素
names = ['Joe', 'Mike', 'Jin']
names.insert(0, 'July')
>>>names = ['July', 'Joe', 'Mike', 'Jin']
2.2 列表删除元素
使用del语句删除元素
names = ['Mike', 'Joe', 'Jin']
del names[0]# 删除列表中的第一个元素
使用pop弹出元素
names = ['Mike', 'Joe', 'Jin']
boy = names.pop(1)#从列表中弹出第2个元素,并将该元素保存在boy这个变量中
根据值删除元素
names = ['Mike', 'Joe', 'Jin']
names.remove('Joe')
del和pop的区别,如果删除之后还要用这个元素,就用pop,不用就用del
2.3 组织列表
使用sort()方法对列表永久排序
names.sort()
使用sorted()方法对列表排序,但不改变原列表顺序
names.sorted()
倒着打印列表
names.reverse()
确定列表的长度
len(names)
输出最后一个列表元素有两种方法,names[-1]或names[len(names)-1]
2.4 操作列表
2.4.1 遍历整个列表
通过for循环遍历整个列表,选择描述单个列表元素的有意义的名称很重要,比如 for cat in cats:
names = ['Joe', 'Mike', 'Jin']
for name in names:
print("{}的表演很精彩!".format(name))
print("期待的下次表演!\n".format(name))
print("感谢大家观看今晚的表演")
2.4.2 创建数值列表
使用函数range()来创建
squares = []
for value in range(1, 11):
squares.append(value**2)
print(squares)
使用数值列表一行创建
squares = [value**2 for value in range(1, 11)]
print(squa)
2.4.3 遍历切片
data = [1, 2, 3, 4, 5, 6]
data_copy = data[1:]#表示从序号为1的元素,即2开始,一直到最后
data_copy2 = data[-3:]#从倒数第三到最后
复制列表,如果用切片的方式复制,则这两个列表互补干扰,如果直接赋值的话,会指向同一个列表,不管操作哪一个,都是对同一个列表造成影响。
data_same = data#这种就是data和data_same指向同一个列表,改变其中一个,另一个也会变化。
data_copy = data[:]#这种就是直接赋值data,出现两个列表,改变其中一个,对另一个没有影响。
2.4.5 元组
元组和列表非常相似,用圆括号来表示,不同之处是元组里面元素的值是不可变的
dimensions = (100, 50)#元素不可变,但是可以访问
第3章 if语句
3.1 条件测试
==,>,<条件测试
#在python中,可以利用if语句,检查列表中是否包含某一个元素
names = ['Mike', 'Joe', 'Jin']
name = 'Jin'
if name in names:
print("Jin在列表里")
#也可以检查某个元素不在这个列表里
if name not in names:
print("Jin不在这个列表里")
检查多个条件的时候,一般用and和or
if a >= 100 and b <=200:
print("两个条件都满足")
if a >=100 or b <= 200:
print(只要求满足其中一个,即为True)
3.2 if语句
#if elif else,判断一种情形
age = 20
price = 0
if age > 4:
price = 20
elif age > 20:
price = 40
else:
price = 60
在if语句中,如果直接使用列表名用作条件表达式时,将在列表至少包含一个元素时返回True,在列表为空时返回False
names = []
if names:
print("这里列表为空,所以不执行这个语句")
else:
print("z")
第4章 字典
4.1 使用字典
在Python中,字典是一系列键值对,用{},表示字典。
alien_0 = {'color': 'green', 'points': 5}
print("alien_0的分数是:{}".format(alien_0['points']))#利用alien_0['points']来访问字典的值
添加键值对
alien_0 = {'color': 'green', 'points': 5}
alien_0['x_position'] = 0
alien_0['y_position'] = 25
print(alien_0) #在这里,可以直接添加键值对
删除键值对
alien_0 = {'color': 'green', 'points': 5}
del alien_0['color']#利用del删除对应的键值对
修改字典中的值
alien_0 = {'color': 'green', 'points': 5}
alien_0['color'] = red #将本来的绿色改为了红色
使用get()来访问字典中的值,可以消除因为键不存在带来的错误
alien_0 = {'color': 'green', 'points': 5}
point_value = alien_0.get('points', '没有这个键值对') #相当于if检查,分成两种情况
print(point_value)
4.2 遍历字典
遍历字典分为三种情况,既需要键有需要值;只需要键:只需要值。Python提供了三种对应的方法。分别是items(), keys(), values()
alien_0 = {'color': 'green', 'points': 5}
alien_items = alien_0.items()
alien_key = alien_0.keys()
alien_values = alien_0.values()
然后就相当于对列表进行操作
alien_0 = {'color': 'green', 'points': 5}
alien_items = alien_0.items()
for color, point in alien_items:
print(color, point)
在获取到相应的列表之后,就可以按列表操作,比如利用sorted暂时排序
通过对包含重复元素的列表调用set(),可以让python找出列表中独一无二的元素,并使用这些元素创建一个集合。
集合的创建也是用花括号{}
languages = {'python', 'ruby', 'python', 'C'}
>>>languages
>>>{'ruby', 'python', 'C'}
4.3 嵌套
在列表中嵌套字典
alien = [alien_0, alien_1, alien_2]
alien_0 = {'color': 'green', 'points': 5}
alien_1 = {'color': 'green', 'points': 5}
alien_2 = {'color': 'green', 'points': 5}
#利用for循环创建
alien = []
for alien_number in range(30):
new_alien = {'color': 'green', 'points': 5}
alien.append(new_alien) #创建三十个外星人,并将其保存在列表里
#访问列表中的字典
alien[1]['color']
在字典中嵌套列表
alien_0 = {'color': 'green',
'position': [x_position, y_position],
}
在字典中嵌套字典
alien_0 = {'color': 'green',
'position': {'x_position': 0,
'y_position': 25,},
}
第5章 用户输入和While循环
通过获取用户输入并学会控制程序运行的时间,就能编写出交互式程序
5.1 函数input()
input函数,接受一个参数,要向用户显示的提示词,最终提示词以字符串的形式保存
message = input("请输入您的年龄: ")
message = int(message)#将字符串转换为整数类型
求模运算符%,将两个数相除,并返回余数,可以判断输入的一个整数是奇数还是偶数
5.2 While循环
while循环不断运行,直到指定的条件不满足为止
active = True
while active:
message = input("输入指令")
if message == 'quit':
active = False
else:
print(message)
也可以使用break退出循环
active = True
while active:
message = input("输入指令")
if message == 'quit':
break
else:
print(message)
5.3 while循环处理列表和字典
在列表之间移动元素
unconfirmed_names = ['Joe', 'Jin', 'Mike']
confirmed_names = []
while unconfirmed_names:
current_user = unconfirmed_names.pop()
confirmed_names.append(current_user)
删除为特定值的所有列表元素
pets = ['dog', 'cat', 'goldfish', 'cat']
while 'cat' in pets:
pets.remove('cat')
使用用户输入来填充字典,列表中的字典
alien = []
active = True
while active:
current_alien = {}
color_input = input("输入您的颜色: ")
points_input = input("输入您的分数: ")
current_alien['color'] = color_input
current_alien['points'] = int(points_input)
alien.append(current_alien)
repeat = input("还要继续吗")
if repeat == 'no':
active = False
第6章 函数
6.1 定义函数
def一般用来定义函数,一般对函数功能的注释使用‘’‘ 注释 ’‘’
'''定义的函数'''
def describe_pet(animal_type, pet_name='Joe'):
print("我有一条 {}".format(animal_type))
print("它的名字是 {}".format(pet_name))
describe_pet('dog', 'harry')#位置调用函数,括号里的是实参
describe_pet(animal_type='dog', pet_name='harry')#关键字调用函数时,注意有些地方不需要空格
describe_pet('dog')#默认调用函数
6.2 返回值
利用return返回函数的某些值
让实参变成可选的,在函数定义中最后列出该形参,并将默认值设为空字符串或者None
def build_person(first_name, last_name, age=None):
person = {'first': first_name, 'last': last_name}
if age: #判断可选参数是否有实参
person['age'] = age
return person
musician = bulid_person('Jin', 'Long', age=23)
print(musician)
6.3 传递列表
列表也可以作为实参传到函数里,如果不想改变原来的列表,考虑用切片的方式,将列表的副本作为参数传给函数
可以传递任意数量的实参
def make_pizza(*toppings):
print(toppings)
通用形参名*args,它用来收集任意数量的位置实参,创建一个名叫args的空元组
形参名**kwargs,用来收集任意数量的关键字实参,创建一个名叫kwargs的空字典
def bulid_person(first, last, **user_info):#这两个**号让python创建一个名为user_info的空字典
user_info['first_name'] = first
user_info['last_name'] = last
return user_info
user_profile = build_person('Jin', 'Long', location='China', field='physics')
print(user_profile)
6.4 将函数存储在模块中
模块是扩展名为.py的文件
调用其他模块中的函数的方法
from module_name import function_name
from module_name import function_name as fn
import module_name as mn
from module_name import * #导入该模块中的所有函数
6.5 函数编写规范
每个函数都要阐述其功能,注释应紧跟在函数定义后面,用’‘’ ‘’‘注释
给形参指定默认值时,等号两边不留空格
对与函数待用中的关键字实参,等号两边不留空格
def route_planning(*args):
'''该函数主要实现小车对路径的识别,输入为摄像头图像,输出为小车该走的路径'''
print("具体实现部分")
第7章 类
7.1 类的创建和使用
在python中,一般用首字母大写的名称表示类。类一般用class表示
class Car:
"""模拟汽车创建的汽车类"""
def __init__(self, make, model, year):
"""初始化描述汽车的属性,除此之外创建一个不需要形参的属性"""
self.make = make
self.model = model
self.year = year
self.odometer_reading = 0
def get_description_name(self):
"""汽车的基本信息的方法"""
print("{} {} {}".format(self.make, self.model, self.year))
def update_odometer(self, mileage):
"""将里程表读数设置为固定的值"""
self.odometer_reading = mileage
def increment_odometer(self, odo_increment):
"""增加里程数,禁止回调"""
if odo_increment >= 0:
self.odometer_reading += odo_increment
else:
print("你没有权力回调!!!")
my_car = Car('audi', 'a6', 2014)
my_car.update_odometer(100)
my_car.increment_odometer(10)
7.2 类的继承
一个类继承另一个类时,将自动获取另一个类的所有属性和方法,原有的类称为父类,新类称为子类。
比如,一个汽车类和一点电动车类,电动车具备汽车的一些特点,也有自己的一些特点,这时候就可以用继承。
class Car:
def __init__(self, make, model, year):
self.make = make
self.model = model
self.year = year
self.odometer = 0
def description_name(self):
print("")
class Batter():
def __init__(self):
self.name = 'audi'
def batter_add(self):
print("将对象作为属性")
class Eleccar(Car):
def __init__(self, make, model, year):
super(Eleccar, self).__init__(make, model, year)
self.batter = 75
self.batter01 = Batter()
def description_battery(self):
print("{}".format(self.model))
my_car = Eleccar('audi', 'a7', 2018)
my_car.description_battery()
my_car.batter01.batter_add()
7.3 导入类
可以将多个类保存在.py文件中,使用的时候import即可。
7.4 类编码风格
在同一个类中,两个方法之间空一行
在同一个模块中,两个类之间空两行
不管是模块还是类,都要在前面写明注释
在import模块时,先编写标准库中的模块,然后一个空行,在添加自己的模块。
驼峰命名法:类名中每个单词的首字母都大写,不使用下划线;实例和模块名都采用小写加下划线的形式
第8章 文件和异常
8.1 从文件中读取
文件的读取需要该文件的存储地址,一般可以表示为相对地址和绝对地址,一般用一个变量指向这个地址
file_location = '文件数据\filename.txt'
with open(file_location) as file_object:
lines = file_object.readlines() #readlines逐行读取,并将每一行按照列表形式保存
for line in lines:
print(line.rstrip())
8.2 写入文件
在调用文件时,使用open(),可以指定文件打开的模式,只读模式(‘r’),写入模式(’w’), 附加模式(‘a’)或读写模式
在使用w模式的时候,会把之前的内容删除才会写入。
如果想把之前的内容保留,以附加模式’a’打开文件
8.3 异常
处理ZeroDivisionError异常,使用try ,except可以防止用户看到tracebook,增强安全性。
FileNotFoundError异常
try:
with open('test_02.txt') as file_object:
content = file_object.read()
except FileNotFoundError:
print("该文件不存在!!!")
print("异常出现之后文件照常运行!!!")
第9章 测试代码
利用Python模块unittest中的工具来测试代码。