- python快速入门
- 开发环境配置
- 语法基础
- 新手问题
- 输入和输出
- 字符串和变量
- 赋值
- 常见字符串处理
- 布尔表达式
- 条件语句
- 循环语句
- 列表
- 元组
- 集合
- 字典
- 函数
- 模块
- 文件
- 异常处理
- 类和对象
- 多线程
- 可视化gui界面
python的安装只需要去官网进行下载最新版本,成熟的语言的主要语法是不会随着版本的更新发生很大的变化,所以版本的选择实际上问题不大
推荐使用anaconda3进行版本控制,使用的最大的方便就是很好的控制每一个python的版本和需要的库,在开发的过程中,往常都是开发的时候需要用到什么样的库文件再进行安装和配置,不同的开发需要的库文件环境不相同,后期的项目打包的时候,不需要打包没有用到的库,提高打包的效率
- anaconda附带了一大批常用的数据科学包不需要进行下载
- 自带的conda管理包和环境能减少处理数据的过程中遇到各种库和版本的问题
下载环境配置
官网下载链接
在系统高级设置的用户环境变量配置环境变量
基本使用方法
环境配置完成之后可以在可以直接在cmd窗口使用conda 命令
#设置清华镜像 conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/ conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/ conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge/ conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/bioconda/ #设置bioconda conda config --add channels bioconda conda config --add channels conda-forge #设置搜索时显示通道地址 conda config --set show_channel_urls yes #查看虚拟环境 conda env list #激活虚拟环境 conda activate 虚拟环境的名字 #退出虚拟环境 conda deactivate #创建虚拟环境 conda install -n 虚拟环境名字 python=版本号 #删除虚拟环境 conda remove 虚拟环境名字 #查看已经安装了的包 conda list #获得环境中的所有配置 conda env export --name myenv > myenv.yml #重新还原环境 conda env create -f myenv.yml语法基础 新手问题
- 标点符号是否全是英文符号
- 缩进是否正确
- 函数拼写是否正确
#输入
a=input("请输入:")
#输出
print(a)
#换行
print("n")
字符串和变量
在cmd窗口输入 jupyter notebook就可以进入交互界面,相当于是自带的shell,不过相较于它,notebook的界面更加美观以及功能也更加全面
赋值#变量不用声明,可以直接赋值使用 #命名规则,关键字除外,使用字母,下划线 ,数字组成,但是不能用数字开头,命名规范化 a=1 b='ct' #字符串的赋值可以使用单引号或者是双引号,但是当字符串里面有单引号的时候,外面就要用双引号,反之里面是双引号外面就要是单引号常见字符串处理
#在写爬虫的时候通常用这个方法处理正则表达式,在代码里面使用不了的,一般来说代码
#里面的/要在前面加上反斜杠进行转义或者是,在字符串前加上 r,当前的字符串的 转义字符就会失效
#windows的路径是用反斜杠分割的,在python里面,会把反斜杠当成是转义,会造成冲突
url = "https://translate.google.cn/?sl=auto&"
"tl=zh-CN&text=hello&op=translate"
headers = {'user-agent': "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:88.0) Gecko/20100101 Firefox/88.0"}
html = requests.get(url, headers=headers)
result = re.match(r"^(.*?)", html)
print(result)
print(r'ctn')
#字符串之间可以通过加号合并,也可以通过乘号进行操作,不能-/*
常见的字符串的处理函数
a="https://www.baidu.com"
#find() 在一个较长的字符串中查找子串,返回的是子串坐在位置的最左端的索引,如果没找到的话就返回-1.
print(a.find("t")
#replace() 将字符串内匹配到的旧的字符替换成后面的新的字符串
print(a.replace("h","wa"))
#split() 通过指定的切割符对字符串进行切片,如果参数num有值的话,表示分割成num个字符
print(a.split("w"))
# format() 很方便的字符串拼接函数,很常用,在字符串里面加入大括号{},在引号结束之后使用,方法里面的参数对字符串里面的括号进行替换
b="aaa"
c="t{},h{}".format(b,"cc")
布尔表达式
#bool()函数可以评估任意值,返回的结果是Ture或者False,空值如([],{}'',"")
#和值为0或者是None的结果都是False,其他的都是True,和循环,条件语句配合使用
#运算符有 and or字面意思,
学校的离散作业用这个来做,很方便
条件语句跟c语言的条件语句判断大体上是一样的,只是要注意格式的正确性。
#缩进是四个空格,直接敲tab键就行了
a=1
if a:
print("hello")
else:
pass
循环语句
for循环
#可以是一个数字循环,只有一个数字,默认是从零开始到这个数字的前一位,不包括该数字 for i in range(10): print(i) #可以是range()多个参数,起点,终点,步长 for i in range(1,10,3) #可以是一个列表 for i in ["小明","小红","小。"]: print(i) #也可以是一个字符串 for i in "range": print(i)
while循环
continue,pass和break使用
a=10
while a<20:
a=a+1
if a%2==0:
continue
elif a==15:
pass
else:
print('1')
列表
用来存储不同的数据类型,用小括号括起来,字符串要加引号,数字不用加
service=[3,'ht','ssh']
print(service[1]) ##输出第二个元素
print(service[-1]) ##输出最后一个元素
#切片
print(service[1:]) ##打印第一个元素之后的内容
print(service[:-1]) ##打印最后一个元素之前的内容
print(service[::-1]) ##倒序输出
#列表操作函数
service.pop() ##弹出最后一个元素
a = service.pop(0) ##弹出第1个元素 ###可以将其赋值
service.remove('ssh') ##指定删除对象的名字 ##直接删除,不能将其赋值 ##不能指定序号,只能指定要删除对象的
del service ##删除列表
del service ##直接删除整个列表
print(service)
names = ['alice','Bob','coco','Harry']
names.sort()
names ###按照ASCLL排序 ###先排序首字母为大写的,再排序首字母是小写的
names.sort(key=str.lower) ###对字符串排序不区分大小写,相当于将所有元素转换为小写,再排序
names.sort(key=str.upper) ###相当于将所有元素转换为大写,再排序
元组
元组一旦被创建,它的元素就不可更改,所以元组是不可变的列表,标志是用小括号()包起来
集合使用大括号括起来,与列表等不同,不能使用下标访问到里面的元素,可以使用循环用便利得到元素,集合里面的元素是不能重复的,可以对一个列表使用set()方法转换成为集合,间接实现了去重操作
字典字典是可变容器模型,可以存储任意对象,采用键值对的方式存储,中间使用冒号隔开,每一对键值对之间使用逗号,分割,整个字典使用大括号{}括起来
#字典格式
dict={"name":"小明","age":12,"like":['ball','book']}
#字典访问
print(dict["name"])
print(dict["like"][0])
- 利用这个可以解决一个很水的离散数学的大作业
- 全局变量通过字典存储在两个文件里面获取使用
函数里面要注意局部变量和全局变量
def 函数名(参数): pass模块
#使用import 导入写好的文件 # from 模块名 import 方法/类/*文件
使用内置的open函数进行读取操作
读取完之后要使用close()关闭文件
#mode表示打开方式,w就是写入,r表示读取,r+即可以读取又可以写入,返回值是一个文件对象
f = open("文件路径","mode")
f.write("文本")
f.flush() #将内存内容立即写入硬盘
f.close()
# 常用
with open(filename, 'wb') as f: #以二进制形式打开文件
f.write("图片资源")
异常处理
try的工作原理是,当开始一个try语句后,python就在当前程序的上下文中作标记,这样当异常出现时就可以回到这里,try子句先执行,接下来会发生什么依赖于执行时是否出现异常。
- 如果当try后的语句执行时发生异常,python就跳回到try并执行第一个匹配该异常的except子句,异常处理完毕,控制流就通过整个try语句(除非在处理异常时又引发新的异常)。
- 如果在try后的语句里发生了异常,却没有匹配的except子句,异常将被递交到上层的try,或者到程序的最上层(这样将结束程序,并打印默认的出错信息)。
- 如果在try子句执行时没有发生异常,python将执行else语句后的语句(如果有else的话),然后控制流通过整个try语句。
try: <语句> #运行别的代码 except <名字>: <语句> #如果在try部份引发了'name'异常 except <名字>,<数据>: <语句> #如果引发了'name'异常,获得附加的数据 else: <语句> #如果没有异常发生 #try-finally 语句无论是否发生异常都将执行最后的代码。 try: <语句> finally: <语句> #退出try时总会执行类和对象
#基本格式
class Persion:
name="小明"
age=12
def fun(self):
print(age)
p=Persion()
print(p.name)
#每一次创建对象的时候,都会自动调用__init__()方法,类似于java的构造方法
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
p1 = Person("Bill", 63)
print(p1.name)
print(p1.age)
多线程
import threading
import time
def run(n):
print("task", n)
time.sleep(1)
print('2s')
time.sleep(1)
print('1s')
time.sleep(1)
print('0s')
time.sleep(1)
if __name__ == '__main__':
t1 = threading.Thread(target=run, args=("t1",))
t2 = threading.Thread(target=run, args=("t2",))
t1.start()
t2.start()
#继承threading.Thread来自定义线程类,其本质是重构Thread类中的run方法
import threading
import time
class MyThread(threading.Thread):
def __init__(self, n):
super(MyThread, self).__init__() # 重构run函数必须要写
self.n = n
def run(self):
print("task", self.n)
time.sleep(1)
print('2s')
time.sleep(1)
print('1s')
time.sleep(1)
print('0s')
time.sleep(1)
if __name__ == "__main__":
t1 = MyThread("t1")
t2 = MyThread("t2")
t1.start()
t2.start()
可视化gui界面
pyqt5库的gui编程,可以在可视化添加窗口组件,定义UI



